如何在多从机的 SPI 编程中设置芯片 select? (结构 spi_ioc_transfer)

How to set chip select in SPI programming for multipleslaves ? (struct spi_ioc_transfer)

也许我实际上问错了问题,但我只是在嵌入式世界中迈出了第一步。所以如果这个问题有点愚蠢,我很抱歉。

我正在尝试在 c++ 和 linux 环境中为 9DOF IMU 编写软件。

据我了解 SPI,SS 引脚必须处于低电平状态才能进行传输。我看过多个读取或写入字节函数的示例,并且都使用结构 spi_ioc_transfer 但它们都是单从示例,并且没有提及在代码中设置或配置 SS。另外,当我检查 spi_ioc_transfer 的结构时,有 cs_change 但是,它怎么知道我们从一开始就在处理哪个 cs?

要使用的芯片select(CS或SS)取决于你打开的设备节点。

要使用 Linux spidev 驱动程序与 SPI 芯片通信,您需要打开一个设备,例如 /dev/spidev0.1。设备节点文件名中的数字分别指代总线和芯片 select——在本例中,它将是第一个总线 (0) 和第二个 CS (1)。如果你想与不同芯片上的设备通信 - selects,你必须打开不同的设备节点并在适当的节点上执行 ioctls。