Skip to content

Commit 85772ed

Browse files
committed
Add SPI bitwidths to ST targets where supported
1 parent c62b8e5 commit 85772ed

File tree

1 file changed

+102
-1
lines changed

1 file changed

+102
-1
lines changed

targets/TARGET_STM/stm_spi_api.c

Lines changed: 102 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,108 @@ void spi_format(spi_t *obj, int bits, int mode, int slave)
384384
DEBUG_PRINTF("spi_format, bits:%d, mode:%d, slave?:%d\r\n", bits, mode, slave);
385385

386386
// 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;
388489

389490
switch (mode) {
390491
case 0:

0 commit comments

Comments
 (0)