File tree Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Original file line number Diff line number Diff line change @@ -211,6 +211,32 @@ uint8_t SPIClass::transfer(uint8_t data)
211211 return ret;
212212}
213213
214+ uint16_t SPIClass::transfer16 (uint16_t data)
215+ {
216+ uint16_t ret;
217+ uint8_t *txdata = (uint8_t *)&data;
218+ uint8_t *rxdata = (uint8_t *)&ret;
219+
220+ if (_ssel_hard == 0 && _ssel_bank != 0 ) {
221+ gpio_bit_reset (_ssel_bank, _ssel_bit);
222+ }
223+
224+ for (size_t i = 0 ; i < 2 ; i++) {
225+ while (!spi_i2s_flag_get (_dev, SPI_FLAG_TBE));
226+ spi_i2s_data_transmit (_dev, *txdata);
227+ txdata++;
228+ while (!spi_i2s_flag_get (_dev, SPI_FLAG_RBNE));
229+ *rxdata = spi_i2s_data_receive (_dev);
230+ rxdata++;
231+ }
232+
233+ if (_ssel_hard == 0 && _ssel_bank != 0 ) {
234+ gpio_bit_set (_ssel_bank, _ssel_bit);
235+ }
236+
237+ return ret;
238+ }
239+
214240void SPIClass::setBitOrder (uint8_t bitOrder) {
215241 _bitOrder = bitOrder;
216242 beginTransaction ();
Original file line number Diff line number Diff line change @@ -65,6 +65,7 @@ class SPIClass {
6565 void transfer (
6666 uint8_t * txdata, uint8_t * rxdata, uint32_t size, uint32_t timeout = 1 );
6767 uint8_t transfer (uint8_t data);
68+ uint16_t transfer16 (uint16_t data);
6869
6970 void setBitOrder (uint8_t bitOrder);
7071 void setDataMode (uint8_t dataMode);
You can’t perform that action at this time.
0 commit comments