@@ -384,7 +384,108 @@ void spi_format(spi_t *obj, int bits, int mode, int slave)
384
384
DEBUG_PRINTF ("spi_format, bits:%d, mode:%d, slave?:%d\r\n" , bits , mode , slave );
385
385
386
386
// Save new values
387
- handle -> Init .DataSize = (bits == 16 ) ? SPI_DATASIZE_16BIT : SPI_DATASIZE_8BIT ;
387
+ uint32_t DataSize ;
388
+ switch (bits ) {
389
+ #if defined(TARGET_STM32F0 ) || defined(TARGET_STM32F3 ) || defined(TARGET_STM32F7 ) || \
390
+ defined(TARGET_STM32G0 ) || defined(TARGET_STM32G4 ) || defined(TARGET_STM32L4 ) || \
391
+ defined(TARGET_STM32L5 ) || defined(TARGET_STM32WB ) || defined(TARGET_STM32H7 )
392
+ case 4 :
393
+ DataSize = SPI_DATASIZE_4BIT ;
394
+ break ;
395
+ case 5 :
396
+ DataSize = SPI_DATASIZE_5BIT ;
397
+ break ;
398
+ case 6 :
399
+ DataSize = SPI_DATASIZE_6BIT ;
400
+ break ;
401
+ case 7 :
402
+ DataSize = SPI_DATASIZE_7BIT ;
403
+ break ;
404
+ case 9 :
405
+ DataSize = SPI_DATASIZE_9BIT ;
406
+ break ;
407
+ case 10 :
408
+ DataSize = SPI_DATASIZE_10BIT ;
409
+ break ;
410
+ case 11 :
411
+ DataSize = SPI_DATASIZE_11BIT ;
412
+ break ;
413
+ case 12 :
414
+ DataSize = SPI_DATASIZE_12BIT ;
415
+ break ;
416
+ case 13 :
417
+ DataSize = SPI_DATASIZE_13BIT ;
418
+ break ;
419
+ case 14 :
420
+ DataSize = SPI_DATASIZE_14BIT ;
421
+ break ;
422
+ case 15 :
423
+ DataSize = SPI_DATASIZE_15BIT ;
424
+ break ;
425
+ #if defined(TARGET_STM32H7 )
426
+ case 17 :
427
+ DataSize = SPI_DATASIZE_17BIT ;
428
+ break ;
429
+ case 18 :
430
+ DataSize = SPI_DATASIZE_18BIT ;
431
+ break ;
432
+ case 19 :
433
+ DataSize = SPI_DATASIZE_19BIT ;
434
+ break ;
435
+ case 20 :
436
+ DataSize = SPI_DATASIZE_20BIT ;
437
+ break ;
438
+ case 21 :
439
+ DataSize = SPI_DATASIZE_21BIT ;
440
+ break ;
441
+ case 22 :
442
+ DataSize = SPI_DATASIZE_22BIT ;
443
+ break ;
444
+ case 23 :
445
+ DataSize = SPI_DATASIZE_23BIT ;
446
+ break ;
447
+ case 24 :
448
+ DataSize = SPI_DATASIZE_24BIT ;
449
+ break ;
450
+ case 25 :
451
+ DataSize = SPI_DATASIZE_25BIT ;
452
+ break ;
453
+ case 26 :
454
+ DataSize = SPI_DATASIZE_26BIT ;
455
+ break ;
456
+ case 27 :
457
+ DataSize = SPI_DATASIZE_27BIT ;
458
+ break ;
459
+ case 28 :
460
+ DataSize = SPI_DATASIZE_28BIT ;
461
+ break ;
462
+ case 29 :
463
+ DataSize = SPI_DATASIZE_29BIT ;
464
+ break ;
465
+ case 30 :
466
+ DataSize = SPI_DATASIZE_30BIT ;
467
+ break ;
468
+ case 31 :
469
+ DataSize = SPI_DATASIZE_31BIT ;
470
+ break ;
471
+ case 32 :
472
+ DataSize = SPI_DATASIZE_32BIT ;
473
+ break ;
474
+ #endif
475
+ #elif !defined(TARGET_STM32F1 ) && !defined(TARGET_STM32F2 ) && !defined(TARGET_STM32F4 ) && \
476
+ !defined(TARGET_STM32L0 ) && defined(TARGET_STM32L1 )
477
+ #error No valid target for this. Update in the appropriate portion above.
478
+ #endif
479
+ case 16 :
480
+ DataSize = SPI_DATASIZE_16BIT ;
481
+ break ;
482
+ // 8 bits is the default for anything not found before
483
+ default :
484
+ DataSize = SPI_DATASIZE_8BIT ;
485
+ break ;
486
+ }
487
+
488
+ handle .Init .DataSize = DataSize ;
388
489
389
490
switch (mode ) {
390
491
case 0 :
0 commit comments