使用c ++

时间:2018-04-06 07:20:17

标签: c++ raspberry-pi spi wiringpi

我正在使用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和其他读过这个问题并帮助我的人。

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题是:“如何使用连接到3个从设备的一个SPI主设备”,这是解决方案:

  • 将主SCK连接到所有3个从设备SCK
  • 将主MOSI连接到每个从属设备的MOSI
  • 将每个奴隶的MISO连接到您的单个主MISO
  • 使用通用IO(当然输出)信号作为SS(SlaveSelect)来启用/禁用与特定从设备的通信。你甚至可以使用你的WiringPi void digitalWrite (int pin, int value);

在互联网上有很多关于这个主题的原理图,图表和教程。 RPi上的SPI与任何其他SPI没有区别。

如果您遇到任何软件问题,配置,通信,等等 - >在你的问题中发布一些代码,以显示你已经尝试过的内容。