【问题标题】:Read three mcp3008 with a Raspberry Pi 3 using c++ [closed]使用 C++ 使用 Raspberry Pi 3 读取三个 mcp3008 [关闭]
【发布时间】:2018-04-06 07:20:17
【问题描述】:

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

【问题讨论】:

  • 我正在使用来自 WiringPi 的库“mcp3008”与一个 mcp3008 进行通信。我什么都没尝试,因为我不知道如何从更多棕褐色 mcp3008 中读取。
  • 您甚至没有尝试阅读the documentationhowto's 并尝试一些可以包含在问题中的代码?对不起,那么对你没有帮助。 SO 需要最少 的努力来提出问题 - 我们不是免费的辅导服务。
  • 我没有尝试任何代码,因为我不知道如何开始,我没有找到任何关于我的问题的信息。我知道这不是一个免费的教程,我不希望代码这样做,我只是要求任何可以帮助我知道如何继续前进的想法,因为也许在 WiringPi 中有一个选项可以做到这一点,但是我什么也没找到。对不起,如果它看起来很粗鲁。我不太擅长英语。我希望你明白我不想让你为我付出一切

标签: c++ raspberry-pi spi wiringpi


【解决方案1】:

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

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

在互联网上有很多关于这个主题的示意图、图表、教程。 RPi 上的 SPI 与任何其他 SPI 没有什么不同。

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

【讨论】:

  • 所以...也许我可以使用 mcp3008 和 WiringPi 库,但使用 3 根线和 3 个引脚连接到每个从站,所以如果我在其中一个中设置高电平,我会读取从站的输入连接到那个引脚,我可以通过切换我设置为高的引脚来切换从属设备
  • 我不确定我是否理解您的评论,这对我来说不是很清楚。请阅读mcp3008 datasheet - 在第 3.7 节中,他们解释说要选择芯片,您需要将 CS 拉低。另请阅读this simple tutorial(或您在互联网上可以找到的任何其他内容)-关于“多个从属”的部分-在我的回答中,我考虑了从属并行连接到主控的情况。
  • 我将回答我的问题,编辑它,因为我没有足够的声誉来做出正常的回答。感谢@Ptaq666 的帮助。
猜你喜欢
  • 2018-03-05
  • 2019-11-15
  • 1970-01-01
  • 2016-12-02
  • 2016-07-03
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 2012-11-19
相关资源
最近更新 更多