diff options
Diffstat (limited to 'platforms')
-rw-r--r-- | platforms/chibios/drivers/spi_master.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/platforms/chibios/drivers/spi_master.c b/platforms/chibios/drivers/spi_master.c index f98db6db9..c592369dd 100644 --- a/platforms/chibios/drivers/spi_master.c +++ b/platforms/chibios/drivers/spi_master.c | |||
@@ -110,6 +110,31 @@ bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) { | |||
110 | spiConfig.tar0 |= SPIx_CTARn_BR(8); | 110 | spiConfig.tar0 |= SPIx_CTARn_BR(8); |
111 | break; | 111 | break; |
112 | } | 112 | } |
113 | |||
114 | #elif defined(HT32) | ||
115 | spiConfig.cr0 = SPI_CR0_SELOEN; | ||
116 | spiConfig.cr1 = SPI_CR1_MODE | 8; // 8 bits and in master mode | ||
117 | |||
118 | if (lsbFirst) { | ||
119 | spiConfig.cr1 |= SPI_CR1_FIRSTBIT; | ||
120 | } | ||
121 | |||
122 | switch (mode) { | ||
123 | case 0: | ||
124 | spiConfig.cr1 |= SPI_CR1_FORMAT_MODE0; | ||
125 | break; | ||
126 | case 1: | ||
127 | spiConfig.cr1 |= SPI_CR1_FORMAT_MODE1; | ||
128 | break; | ||
129 | case 2: | ||
130 | spiConfig.cr1 |= SPI_CR1_FORMAT_MODE2; | ||
131 | break; | ||
132 | case 3: | ||
133 | spiConfig.cr1 |= SPI_CR1_FORMAT_MODE3; | ||
134 | break; | ||
135 | } | ||
136 | |||
137 | spiConfig.cpr = (roundedDivisor - 1) >> 1; | ||
113 | #else | 138 | #else |
114 | spiConfig.cr1 = 0; | 139 | spiConfig.cr1 = 0; |
115 | 140 | ||