根据我对spi中术语“字长”(spi_bits_per_word)的理解,定义了CS(chip select)活动时间。
因此,在处理保持字大小不变的简单spi协议时,linux驱动程序似乎可以正常工作。
但是,我们如何处理使用不同spi大小作为协议一部分的spi协议。
例如,cs需要激活以发送spi word-9位,然后读取spi-8位或24位(每次读取的寄存器长度不同,取决于寄存器)
我们如何使用spi_write_then_read
实现这一点?
我们需要为发送设置每字位数,然后为接收设置另一个每字位数吗?
当做,
跑
最佳答案
“字长”是指在一次事务中可以发送的位数。它不定义CS(芯片选择)激活时间。你可以让它在你想要的任何时间保持活动(最短的是单词长度)。
SPI有一些格式。你不能随意读写你想要的任何位数。大多数SPI支持4位、8位、16位和32位模式。如果给定的模式不满足您的需求,那么您需要打破您的需求。例如:要读取24位数据,我们需要使用8位字长传输3次。
一般来说,SPI是全双工的,意味着它将在写入的同时读取。
关于linux - spi_write_then_read,具有不同的寄存器大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41949579/