|
|
@@ -110,6 +110,31 @@ bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) {
|
|
|
spiConfig.tar0 |= SPIx_CTARn_BR(8);
|
|
|
break;
|
|
|
}
|
|
|
+
|
|
|
+#elif defined(HT32)
|
|
|
+ spiConfig.cr0 = SPI_CR0_SELOEN;
|
|
|
+ spiConfig.cr1 = SPI_CR1_MODE | 8; // 8 bits and in master mode
|
|
|
+
|
|
|
+ if (lsbFirst) {
|
|
|
+ spiConfig.cr1 |= SPI_CR1_FIRSTBIT;
|
|
|
+ }
|
|
|
+
|
|
|
+ switch (mode) {
|
|
|
+ case 0:
|
|
|
+ spiConfig.cr1 |= SPI_CR1_FORMAT_MODE0;
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ spiConfig.cr1 |= SPI_CR1_FORMAT_MODE1;
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ spiConfig.cr1 |= SPI_CR1_FORMAT_MODE2;
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ spiConfig.cr1 |= SPI_CR1_FORMAT_MODE3;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ spiConfig.cpr = (roundedDivisor - 1) >> 1;
|
|
|
#else
|
|
|
spiConfig.cr1 = 0;
|
|
|
|