我正在使用 WiringPi 库(在 c++ 中)通过 SPI 连接 MCP3008 ACD,但我需要读取 24 个模拟输入,因此我必须能够连接 3 个不同的 MCP3008。我不知道如何使用 WiringPi 库管理 3 个不同的从站。
回答:(我没有足够的声誉来回答我自己的问题,所以我把它留在这里以防它对某人有用)
使用 mcp3004 库,您可以使用 SPI 接口与 de AD 转换器进行通信。
您只需将 MISO、MOSI、SCLK 和 CE0 连接到相应的从机引脚即可。主要问题是我需要使用 3 个不同的奴隶,但解决方案很简单。所有从机都需要具有相同的 MOSI、MISO、SCLK,因此您应该将这些引脚全部连接到覆盆子的 MOSI、MISO 和 SCLK 引脚。
现在您必须将 CE0 覆盆子引脚连接到您要使用的从机,并且必须将其他从机 CS 引脚拉高(因为它是低电平有效并且您希望它们处于非活动状态)。我发现这样做的方法是使用 OR-GATES(2 个输入),所以我为每个奴隶使用一个门。其中一个输入是 CE0 覆盆子引脚(其他从属相同),另一个输入是 GPIO 引脚(每个从属不同),OR-GATE 输出将连接到从属选择引脚(相同对于其他奴隶)。
这个想法是,如果你想使用从机 1,你应该将 pin1 拉低,digitalWrite(Pin1,LOW);
其他的拉高digitalWrite(Pin2,HIGH); digitalWrite(PINn,HIGH)
。这样做可以使第一个从机 CS 引脚具有 de CE0 的值,而其他引脚具有高电平(因此选择了第一个从机而未选择其他从机)。
您不能简单地将您想要选择的一个拉低,而将另一个拉高,因为 SPI 会以特定的时序拉高和拉低 CS 引脚
特别感谢@Ptaq666、@Jespe Juhl 和其他阅读问题并帮助我解决问题的人。