Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux spi_写入_,然后以不同的寄存器大小读取_Linux_Spi - Fatal编程技术网

Linux spi_写入_,然后以不同的寄存器大小读取

Linux spi_写入_,然后以不同的寄存器大小读取,linux,spi,Linux,Spi,据我所知,spi中的字长spi_bits_per_word定义了CS芯片选择活动时间。 因此,似乎linux驱动程序在处理保持字大小不变的简单spi协议时可以正常工作 但是,我们如何处理使用不同spi大小作为协议一部分的spi协议呢。 例如,cs需要激活以发送spi字-9位,然后读取spi-8位或24位。每次读取的寄存器长度不同,取决于寄存器 我们如何使用spi写然后读来实现这一点 我们是否需要为发送设置位/字大小,然后为接收设置位/字大小 问候,, Ran字长表示一次事务中可以发送的位数。它没

据我所知,spi中的字长spi_bits_per_word定义了CS芯片选择活动时间。 因此,似乎linux驱动程序在处理保持字大小不变的简单spi协议时可以正常工作

但是,我们如何处理使用不同spi大小作为协议一部分的spi协议呢。 例如,cs需要激活以发送spi字-9位,然后读取spi-8位或24位。每次读取的寄存器长度不同,取决于寄存器

我们如何使用spi写然后读来实现这一点

我们是否需要为发送设置位/字大小,然后为接收设置位/字大小

问候,,
Ran

字长表示一次事务中可以发送的位数。它没有定义CS芯片选择激活时间。你可以让它在你想要的任何时候保持活跃。 SPI有一些格式。您不能随意读写任意位数的位。大多数SPI支持4位、8位、16位和32位模式。如果给定的模式不能满足您的需求,那么您需要打破您的需求。例如:-要读取24位数据,我们需要使用8位字长传输3次。
通常SPI是全双工的,这意味着它将在写入的同时读取

谢谢,我想spi也会多用9位,是吗?就我的工作而言,我也不确定交易在spi中意味着什么。我从未遇到过9位SPI,即从未见过支持9位SPI发送/接收的硬件。如果您需要9位SPI,您需要对其进行位处理。这里的事务表示您一次传输的位数。例如:-如果我将字长设置为4,那么我可以在一个事务中发送4位。