my application runs on a custom board with WP76xx and a Legato system based upon 18.08.
I use spidev1.0, and at startup my application calls le_spi_Configure(spiHandle, mode, bitsPerWord, speed, msb)
with following parameters:
mode = 3
speed = 960000
The SPI data is sent with le_spi_WriteHD(spiHandle, buffer, length).
I used an oscilloscope to check the output signals for different possibilities of the ‘bitsPerWord’ parameter and ‘length’ parameter.
4 bits per word
length = 2, results in 2 correct SPI words
length = 8, results in 8 correct SPI words
10 bits per word
length = 2, results in 1 correct SPI words
length = 8, results in 4 SPI words (???)
16 bits per word
length = 2, results in 1 correct SPI word
length = 8, results in 4 correct SPI words
24 bits per word
length = 4, results in 2 SPI words, but, the highest 16 bits of the 2nd word are 0
length = 8, results in 3 SPI words, but, the highest 8 bits of the 3rd word are 0
When the length is 1, 3, 5, 6, 9 or 10,
I always get the error “Transfer failed with error -1 : 22 (Invalid argument) … can’t send spi message”
Apparently, it’s impossible to send SPI words with a length of 24 bits.
It would be logical that the length should be a multiple of ‘3’, but, even that doesn’t work.
Is there something wrong with the spidev kernel implementation ?