【发布时间】: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 documentation 或howto's 并尝试一些可以包含在问题中的代码?对不起,那么我对你没有帮助。 SO 需要最少 的努力来提出问题 - 我们不是免费的辅导服务。
-
我没有尝试任何代码,因为我不知道如何开始,我没有找到任何关于我的问题的信息。我知道这不是一个免费的教程,我不希望代码这样做,我只是要求任何可以帮助我知道如何继续前进的想法,因为也许在 WiringPi 中有一个选项可以做到这一点,但是我什么也没找到。对不起,如果它看起来很粗鲁。我不太擅长英语。我希望你明白我不想让你为我付出一切
标签: c++ raspberry-pi spi wiringpi