我正在使用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 inpust),所以我为每个奴隶使用一个门。其中一个输入是CE0覆盆子引脚(与其他从器件相同),另一个输入是GPIO引脚(每个从器件一个不同),OR-GATE输出将连接到从器件选择引脚(相同)对于其他奴隶)。
这个想法是,如果你想使用奴隶1,你应该将pin1拉低digitalWrite(Pin1,LOW);
,其他高亮digitalWrite(Pin2,HIGH); digitalWrite(PINn,HIGH)
。这样做可以使第一个从CS引脚具有de CE0的值,而其他引脚具有HIGH(因此选择了第一个从器件而其他器件未被选中)。
你不能简单地将你想要选择的那个拉低,而将另一个拉高,因为SPI通过特定的调整来上下CS引脚
特别要感谢@ Ptaq666,@ Jespe Juhl和其他读过这个问题并帮助我的人。
答案 0 :(得分:0)
如果我理解你的问题是:“如何使用连接到3个从设备的一个SPI主设备”,这是解决方案:
void digitalWrite (int pin, int value);
。在互联网上有很多关于这个主题的原理图,图表和教程。 RPi上的SPI与任何其他SPI没有区别。
如果您遇到任何软件问题,配置,通信,等等 - >在你的问题中发布一些代码,以显示你已经尝试过的内容。