1、不是的,下图可以看到发送单个message时拉片选了,所以spi_sync函数传输期间CS会一直跳变,所以无法像I2C一样组装符合某个外设的报文队列。
2、但是使用自己的软件CS片选,就可以控制它在spi_sync函数传输期间保持低电平。
3、其中的某个使用场景:SPI由于其全双工的特性,发送的同时可以接收,但是命令尚未发送完成肯定接收不到有效数据,这一块如果坚持提供片选给内核就要靠内核其他API了(意思是无法组装多个message,发送命令的message、接收数据的message),这块博主不太了解,不过我觉得内核这么精简严谨的东西,肯定不会给每一个message的rx_buf/tx_buf都单独分配时钟去完成吧,如果单独分配了,那么需要用到同时收发的场景呢
4、提供片选给内核的情况下:在一个message的rx_buf/tx_buf同时完成发送指令与接收返回数据,谁说发送的时候指令后边不能跟无效值字节的,所以大胆加入无效值字节进去,通过这种方式占位来保持SPI时钟,直到有效值产生并进入rx_buf里,这时只需要丢弃rx_buf开头接收到的无效字节,剩余的就是有效数据
标签:rx,sync,发送,spi,内核,Linux,message,buf,片选 From: https://blog.csdn.net/ojhj4996/article/details/143969357