@@ -46,7 +46,7 @@ uint16_t arduino::ZephyrSPI::transfer16(uint16_t data) {
46
46
.count = 1 ,
47
47
};
48
48
49
- ret = spi_transceive (spi_dev, &config , &tx_buf_set, &rx_buf_set);
49
+ ret = spi_transceive (spi_dev, &config16 , &tx_buf_set, &rx_buf_set);
50
50
if (ret < 0 ) {
51
51
return 0 ;
52
52
}
@@ -85,7 +85,10 @@ void arduino::ZephyrSPI::notUsingInterrupt(int interruptNumber) {
85
85
86
86
void arduino::ZephyrSPI::beginTransaction (SPISettings settings) {
87
87
memset (&config, 0 , sizeof (config));
88
+ memset (&config16, 0 , sizeof (config16));
88
89
config.frequency = settings.getClockFreq () > SPI_MIN_CLOCK_FEQUENCY ? settings.getClockFreq () : SPI_MIN_CLOCK_FEQUENCY;
90
+ config16.frequency = config.frequency ;
91
+
89
92
auto mode = SPI_MODE_CPOL | SPI_MODE_CPHA;
90
93
switch (settings.getDataMode ()) {
91
94
case SPI_MODE0:
@@ -98,6 +101,7 @@ void arduino::ZephyrSPI::beginTransaction(SPISettings settings) {
98
101
mode = SPI_MODE_CPOL | SPI_MODE_CPHA; break ;
99
102
}
100
103
config.operation = SPI_WORD_SET (8 ) | (settings.getBitOrder () == MSBFIRST ? SPI_TRANSFER_MSB : SPI_TRANSFER_LSB) | mode;
104
+ config16.operation = SPI_WORD_SET (16 ) | (settings.getBitOrder () == MSBFIRST ? SPI_TRANSFER_MSB : SPI_TRANSFER_LSB) | mode;
101
105
}
102
106
103
107
void arduino::ZephyrSPI::endTransaction (void ) {
@@ -109,7 +113,10 @@ void arduino::ZephyrSPI::attachInterrupt() {}
109
113
void arduino::ZephyrSPI::detachInterrupt () {}
110
114
111
115
112
- void arduino::ZephyrSPI::begin () {}
116
+ void arduino::ZephyrSPI::begin () {
117
+ beginTransaction (SPISettings ());
118
+ endTransaction ();
119
+ }
113
120
114
121
void arduino::ZephyrSPI::end () {}
115
122
0 commit comments