nanoFramework.Iot.Device.Mcp3xxx 1.2.590
前缀已预留
dotnet add package nanoFramework.Iot.Device.Mcp3xxx --version 1.2.590
NuGet\Install-Package nanoFramework.Iot.Device.Mcp3xxx -Version 1.2.590
<PackageReference Include="nanoFramework.Iot.Device.Mcp3xxx" Version="1.2.590" />
paket add nanoFramework.Iot.Device.Mcp3xxx --version 1.2.590
#r "nuget: nanoFramework.Iot.Device.Mcp3xxx, 1.2.590"
// Install nanoFramework.Iot.Device.Mcp3xxx as a Cake Addin #addin nuget:?package=nanoFramework.Iot.Device.Mcp3xxx&version=1.2.590 // Install nanoFramework.Iot.Device.Mcp3xxx as a Cake Tool #tool nuget:?package=nanoFramework.Iot.Device.Mcp3xxx&version=1.2.590
MCP3001/MCP3002/MCP3004/MCP3008/MCP3201/MCP3202/MCP3204/MCP3208/MCP3301/MCP3302/MCP3304 系列 A/D 转换器
有些设备(例如 Raspberry Pi)不能直接读取模拟值,因此依赖于类似于 Microchip 在 Mcp3000、Mcp3200 和 Mcp3300 系列中提供的 模拟到数字转换器。这些芯片可以通过 SPI 设备 或手动通过原始 GPIO 引脚访问。通常,所有 MCU 都有模拟能力,但引脚数量可能有限。这通常在你希望 MCU 拥有比可用的 ADC 数目更多的数字时非常有用。另一种情况是你需要不同的分辨率或电压参考。
您可以在项目中使用这些转换器来访问模拟设备。
以下 Fritzing 图示例示了连接 Mcp3008、ESP32 和电位器的一种方式。
文档
示例基于以下资源
特别感谢Adafruit提供了Python实现,这些实现已经被移植到C#以便于本示例使用。
使用方法
重要:在创建SpiDevice
之前,确保您已正确设置SPI引脚,特别是对于ESP32。请确保您已安装nanoFramework.Hardware.ESP32 nuget
。
//////////////////////////////////////////////////////////////////////
// when connecting to an ESP32 device, need to configure the SPI GPIOs
// used for the bus
Configuration.SetPinFunction(21, DeviceFunction.SPI1_MOSI);
Configuration.SetPinFunction(22, DeviceFunction.SPI1_MISO);
Configuration.SetPinFunction(23, DeviceFunction.SPI1_CLOCK);
// Make sure as well you are using the right chip select
对于STM32等其他设备,请确保您正在使用您想要使用的SPI总线的预设置引脚。选择芯片也可以预先设置。
硬件元素
以下是在本示例中使用的元素
通过SPI访问MCP3008
MCU支持SPI。
您可以使用以下代码通过硬件SPI访问MCP3008
var hardwareSpiSettings = new SpiConnectionSettings(1, 42)
{
ClockFrequency = 1000000
};
using (SpiDevice spi = SpiDevice.Create(hardwareSpiSettings))
using (Mcp3008 mcp = new Mcp3008(spi))
{
while (true)
{
double value = mcp.Read(0);
value = value / 10.24;
value = Math.Round(value);
Debug.WriteLine($"{value}%");
Thread.Sleep(500);
}
}
以下引脚布局可以被使用
- MCP3008 VDD到MCU 3.3V
- MCP3008 VREF到MCU 3.3V
- MCP3008 AGND到MCU GND
- MCP3008 DGND到MCU GND
- MCP3008 CLK到MCU SCLK
- MCP3008 DOUT到MCU MISO
- MCP3008 DIN到MCU MOSI
- MCP3008 CS/SHDN到MCU CE0
通过GPIO访问MCP3008
您也可以通过GPIO引脚访问MCP3008,手动实现SPI。这种方法被称为位打桩。
您可以使用以下代码通过GPIO访问MCP3008
using (SpiDevice spi = new SoftwareSpi(clk: 18, miso: 23, mosi: 24, cs: 25))
using (Mcp3008 mcp = new Mcp3008(spi))
{
while (true)
{
double value = mcp.Read(0);
value = value / 10.24;
value = Math.Round(value);
Debug.WriteLine($"{value}%");
Thread.Sleep(500);
}
}
以下引脚布局可以被使用
- MCP3008 VDD到MCU 3.3V
- MCP3008 VREF到MCU 3.3V
- MCP3008 AGND到MCU GND
- MCP3008 DGND到MCU GND
- MCP3008 CLK到MCU的任何有效GPIO
- MCP3008 DOUT到MCU的任何有效GPIO
- MCP3008 DIN到MCU的任何有效GPIO
- MCP3008 CS/SHDN到MCU的任何有效GPIO
数据处理
无论您通过何种方式访问MCP3008芯片,处理其结果的代码是相同的,如下所示。
while (true)
{
double value = mcp.Read(0);
value = value / 10.24;
value = Math.Round(value);
Debug.WriteLine(value);
Thread.Sleep(500);
}
该芯片是10位的,这意味着它将生成0-1023(回忆一下,2^10是1024)的值。我们可以通过除以10.24将10位值转换为更熟悉的0-100刻度。
备注
以下绑定支持以下ADC
Mcp3001 10位分辨率,具有单个伪差分输入。
Mcp3002 10位分辨率,具有两个单端输入或单个伪差分输入。
Mcp3004 10位分辨率,具有四个单端输入或两个单伪差分输入。
Mcp3008 10位分辨率,具有八个单端输入或四个单伪差分输入。
Mcp3201 12位分辨率,具有单个伪差分输入。
Mcp3202 12位分辨率,具有两个单端输入或单个伪差分输入。
Mcp3204 12位分辨率,具有四个单端输入或两个单伪差分输入。
Mcp3208 12位分辨率,具有八个单端输入或四个单伪差分输入。
Mcp3301 13位有符号分辨率,具有单个真差分输入。
Mcp3202 12位分辨率,具有四个单端输入或具有两个真差分输入的13位有符号分辨率。
Mcp3304 12位分辨率,具有8个单端输入,或13位有符号分辨率,具有4个真实差分输入。
注意:目前尚未在Mcp33xx系列上测试。
产品 | 版本 兼容和额外的计算目标框架版本。 |
---|---|
.NET Framework | net是兼容的。 |
-
- nanoFramework.CoreLibrary (>= 1.15.5)
- nanoFramework.Runtime.Events (>= 1.11.18)
- nanoFramework.System.Buffers.Binary.BinaryPrimitives (>= 1.2.586)
- nanoFramework.System.Device.Gpio (>= 1.1.41)
- nanoFramework.System.Device.Spi (>= 1.3.52)
NuGet包
此包未用于任何NuGet包。
GitHub存储库
此包未用于任何流行的GitHub存储库。
版本 | 下载 | 上次更新 |
---|---|---|
1.2.590 | 73 | 7/17/2024 |
1.2.570 | 79 | 6/14/2024 |
1.2.560 | 81 | 5/29/2024 |
1.2.548 | 82 | 5/15/2024 |
1.2.436 | 220 | 11/10/2023 |
1.2.416 | 83 | 11/8/2023 |
1.2.329 | 145 | 5/26/2023 |
1.2.316 | 135 | 5/16/2023 |
1.2.313 | 138 | 5/12/2023 |
1.2.297 | 117 | 5/3/2023 |
1.2.212 | 300 | 1/5/2023 |
1.2.203 | 318 | 12/28/2022 |
1.2.159 | 377 | 11/14/2022 |
1.2.153 | 366 | 11/5/2022 |
1.2.141 | 382 | 10/25/2022 |
1.2.122 | 425 | 10/12/2022 |
1.2.114 | 388 | 10/8/2022 |
1.2.95 | 451 | 9/22/2022 |
1.2.87 | 516 | 9/15/2022 |
1.2.73 | 420 | 9/8/2022 |
1.2.5 | 432 | 7/13/2022 |
1.1.141.41205 | 432 | 7/6/2022 |
1.1.116.8772 | 445 | 6/24/2022 |
1.1.113.2032 | 442 | 6/23/2022 |
1.1.97.17326 | 437 | 6/13/2022 |
1.1.92.53000 | 421 | 6/8/2022 |
1.1.58.10097 | 428 | 5/23/2022 |
1.1.27 | 445 | 4/26/2022 |
1.1.20 | 443 | 4/21/2022 |
1.1.3 | 460 | 4/15/2022 |
1.1.1 | 428 | 4/14/2022 |
1.0.300 | 454 | 3/31/2022 |
1.0.277-preview.126 | 119 | 3/25/2022 |
1.0.277-preview.125 | 111 | 3/25/2022 |
1.0.277-preview.116 | 101 | 3/22/2022 |
1.0.277-preview.115 | 99 | 3/21/2022 |
1.0.277-preview.112 | 111 | 3/19/2022 |
1.0.277-preview.111 | 109 | 3/18/2022 |
1.0.277-preview.110 | 104 | 3/18/2022 |
1.0.277-preview.106 | 119 | 3/15/2022 |
1.0.277-preview.105 | 108 | 3/15/2022 |
1.0.277-preview.99 | 108 | 3/10/2022 |
1.0.277-preview.98 | 116 | 3/8/2022 |
1.0.277-preview.89 | 112 | 2/27/2022 |
1.0.277-preview.87 | 101 | 2/26/2022 |
1.0.277-preview.85 | 108 | 2/25/2022 |
1.0.277-preview.77 | 106 | 2/18/2022 |
1.0.277-preview.75 | 105 | 2/16/2022 |
1.0.277-preview.73 | 112 | 2/12/2022 |
1.0.277-preview.70 | 111 | 2/10/2022 |
1.0.277-preview.65 | 105 | 2/9/2022 |
1.0.277-preview.60 | 126 | 2/4/2022 |
1.0.277-preview.53 | 127 | 1/31/2022 |
1.0.277-preview.41 | 124 | 1/28/2022 |
1.0.277-preview.32 | 127 | 1/27/2022 |
1.0.277-preview.30 | 124 | 1/27/2022 |
1.0.277-preview.17 | 126 | 1/24/2022 |
1.0.277-preview.13 | 121 | 1/21/2022 |
1.0.277-preview.1 | 123 | 1/11/2022 |
1.0.272 | 470 | 1/10/2022 |
1.0.259 | 334 | 12/9/2021 |
1.0.258 | 303 | 12/7/2021 |
1.0.221 | 151 | 10/19/2021 |
1.0.219 | 161 | 10/19/2021 |
1.0.218 | 179 | 10/18/2021 |
1.0.157 | 155 | 9/4/2021 |
1.0.155 | 156 | 8/31/2021 |
1.0.153 | 150 | 8/14/2021 |
1.0.151 | 167 | 8/6/2021 |
1.0.146 | 156 | 7/22/2021 |
1.0.136 | 224 | 7/17/2021 |
1.0.135 | 154 | 7/16/2021 |
1.0.134 | 163 | 7/15/2021 |
1.0.133 | 184 | 7/14/2021 |
1.0.131 | 160 | 7/8/2021 |
1.0.129 | 152 | 7/6/2021 |
1.0.127 | 169 | 7/5/2021 |
1.0.125 | 189 | 7/5/2021 |
1.0.122 | 207 | 6/30/2021 |
1.0.121 | 193 | 6/29/2021 |
1.0.119 | 217 | 6/28/2021 |
1.0.105 | 275 | 5/29/2021 |
1.0.97 | 162 | 5/28/2021 |
1.0.63 | 163 | 5/26/2021 |
1.0.47 | 180 | 5/24/2021 |