transfer of 16 Bit word using SPI in Arduino Due

Hi, I am working with 2 arduino Dues. 1 as a master and the other as a slave. I am able to send data which is of 8 bit but not able to send 16 bit data. I have used the function SPI_CONTINUE but it turns out that it is just helpful to keep the slave select pin LOW. I have also changed the CSR[0] register so as to accept 16 bit data but it has not work. Please let me know what i can do to send and receive 16 bit data. I have worked on changing the registers. Is there a way in which i can transfer 16 bit data by adding few lines of code or adding a buffer?

As of Arduino IDE 1.6.7 you can use SPI.transfer16() to do this.


This is the error that i get if i use SPI.transfer16().

exit status 1 'class SPIClass' has no member named 'transfer16'


According to an article saw, it says that SPI.transfer16() cannot be used in Arduino Due and Arduino Zero.


I think that you have not the last SPI library for ARM (1.6.6).
Follow a part.

// Transfer functions
 byte transfer(byte _pin, uint8_t _data, SPITransferMode _mode = SPI_LAST);
 uint16_t transfer16(byte _pin, uint16_t _data, SPITransferMode _mode = SPI_LAST);
 void transfer(byte _pin, void *_buf, size_t _count, SPITransferMode _mode = SPI_LAST);
 // Transfer functions on default pin BOARD_SPI_DEFAULT_SS
 byte transfer(uint8_t _data, SPITransferMode _mode = SPI_LAST) { return transfer(BOARD_SPI_DEFAULT_SS, _data, _mode); }
 uint16_t transfer16(uint16_t _data, SPITransferMode _mode = SPI_LAST) { return transfer16(BOARD_SPI_DEFAULT_SS, _data, _mode); }
 void transfer(void *_buf, size_t _count, SPITransferMode _mode = SPI_LAST) { transfer(BOARD_SPI_DEFAULT_SS, _buf, _count, _mode); }