nanoFramework.Iot.Device.Mcp25xxx 1.2.570
已预留前缀
dotnet add package nanoFramework.Iot.Device.Mcp25xxx --version 1.2.570
NuGet\Install-Package nanoFramework.Iot.Device.Mcp25xxx -Version 1.2.570
该命令旨在在Visual Studio的软件包管理器控制台中使用,因为它使用了NuGet模块的Install-Package版本。
<PackageReference Include="nanoFramework.Iot.Device.Mcp25xxx" Version="1.2.570" />
对于支持PackageReference的项目,将此XML节点复制到项目文件中以引用该软件包。
paket add nanoFramework.Iot.Device.Mcp25xxx --version 1.2.570
NuGet 团队不提供对该客户端的支持。请联系其维护者以获取支持。
#r "nuget: nanoFramework.Iot.Device.Mcp25xxx, 1.2.570"
在 F# Interactive 和 Polyglot Notebooks 中,可以使用 #r 指令。将此复制到交互式工具或脚本的源代码中,以引用该软件包。
// Install nanoFramework.Iot.Device.Mcp25xxx as a Cake Addin #addin nuget:?package=nanoFramework.Iot.Device.Mcp25xxx&version=1.2.570 // Install nanoFramework.Iot.Device.Mcp25xxx as a Cake Tool #tool nuget:?package=nanoFramework.Iot.Device.Mcp25xxx&version=1.2.570
NuGet 团队不提供对该客户端的支持。请联系其维护者以获取支持。
Mcp25xxx/MCP2515/MCP2565 设备系列 - CAN 总线
此绑定目前尚未完成。请考虑贡献帮助我们来完善它。
MCP25XXX是一个独立的CAN控制器,包括高速率、数据字节过滤和支持基于时间触发的协议等功能。
文档
MCP25XXX 设备有不同的标记以区分接口、封装和温度等级等特征。例如,MCP25625包含一个CAN 收发器。请查阅具体的数据表获取更多信息。
用法
重要:在创建 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 总线的预设引脚。芯片选择也可以预先设置。
您可以创建一个类似 Mcp25625 的设备
SpiConnectionSettings spiConnectionSettings = new(1, 42);
SpiDevice spiDevice = SpiDevice.Create(spiConnectionSettings);
Mcp25625 mcp25xxx = new Mcp25625(spiDevice);
读取所有寄存器
您可以像这样读取所有寄存器
Debug.WriteLine("Read Instruction for All Registers");
Array addresses = Enum.GetValues(typeof(Address));
foreach (Address address in addresses)
{
byte addressData = mcp25xxx.Read(address);
Debug.WriteLine($"0x{(byte)address:X2} - {address,-10}: 0x{addressData:X2}");
}
要读取单个寄存器,请只需使用 Address
枚举。
RX 状态
RX 状态可以这样获取
Debug.WriteLine("Rx Status Instruction");
RxStatusResponse rxStatusResponse = mcp25xxx.RxStatus();
Debug.WriteLine($"Value: 0x{rxStatusResponse.ToByte():X2}");
Debug.WriteLine($"Filter Match: {rxStatusResponse.FilterMatch}");
Debug.WriteLine($"Message Type Received: {rxStatusResponse.MessageTypeReceived}");
Debug.WriteLine($"Received Message: {rxStatusResponse.ReceivedMessage}");
读取状态
读取状态可以这样获取
Debug.WriteLine("Read Status Instruction");
ReadStatusResponse readStatusResponse = mcp25xxx.ReadStatus();
Debug.WriteLine($"Value: 0x{readStatusResponse:X2}");
Debug.WriteLine($"Rx0If: {readStatusResponse.HasFlag(ReadStatusResponse.Rx0If)}");
Debug.WriteLine($"Rx1If: {readStatusResponse.HasFlag(ReadStatusResponse.Rx1If)}");
Debug.WriteLine($"Tx0Req: {readStatusResponse.HasFlag(ReadStatusResponse.Tx0Req)}");
Debug.WriteLine($"Tx0If: {readStatusResponse.HasFlag(ReadStatusResponse.Tx0If)}");
Debug.WriteLine($"Tx0Req: {readStatusResponse.HasFlag(ReadStatusResponse.Tx0Req)}");
Debug.WriteLine($"Tx1If: {readStatusResponse.HasFlag(ReadStatusResponse.Tx1If)}");
Debug.WriteLine($"Tx1Req: {readStatusResponse.HasFlag(ReadStatusResponse.Tx1Req)}");
Debug.WriteLine($"Tx2Req: {readStatusResponse.HasFlag(ReadStatusResponse.Tx2Req)}");
Debug.WriteLine($"Tx2If: {readStatusResponse.HasFlag(ReadStatusResponse.Tx2If)}");
传输消息
您可以像这样传输消息
Debug.WriteLine("Transmit Message");
mcp25xxx.WriteByte(
new CanCtrl(CanCtrl.PinPrescaler.ClockDivideBy8,
false,
false,
false,
OperationMode.NormalOperation));
byte[] data = new byte[] { 0b0000_0001, 0b0010_0011, 0b0100_0101, 0b0110_0111, 0b1000_1001 };
mcp25xxx.Write(
Address.TxB0Sidh,
new byte[]
{
new TxBxSidh(0, 0b0000_1001).ToByte(), new TxBxSidl(0, 0b001, false, 0b00).ToByte(),
new TxBxEid8(0, 0b0000_0000).ToByte(), new TxBxEid0(0, 0b0000_0000).ToByte(),
new TxBxDlc(0, data.Length, false).ToByte()
});
mcp25xxx.Write(Address.TxB0D0, data);
// Send with TxB0 buffer.
mcp25xxx.RequestToSend(true, false, false);
cp25xxx.RequestToSend(false, false, true);
注意:您可以在示例文件中找到此绑定使用的详细方法
绑定说明
当核心 CAN 类和接口确定后,将在未来的 PR 中添加更多详细信息。
-
- nanoFramework.CoreLibrary (>= 1.15.5)
- nanoFramework.Runtime.Events (>= 1.11.18)
- nanoFramework.System.Device.Gpio (>= 1.1.41)
- nanoFramework.System.Device.Spi (>= 1.3.52)
NuGet 包
此包没有被任何 NuGet 包所使用。
GitHub 仓库
此包没有被任何流行的 GitHub 仓库所使用。
版本 | 下载 | 最后更新时间 |
---|---|---|
1.2.570 | 86 | 6/14/2024 |
1.2.560 | 76 | 5/29/2024 |
1.2.548 | 81 | 5/15/2024 |
1.2.436 | 234 | 11/10/2023 |
1.2.329 | 158 | 5/26/2023 |
1.2.316 | 140 | 5/16/2023 |
1.2.313 | 139 | 5/12/2023 |
1.2.297 | 158 | 5/3/2023 |
1.2.203 | 314 | 12/28/2022 |
1.2.141 | 397 | 10/25/2022 |
1.2.122 | 410 | 10/12/2022 |
1.2.114 | 382 | 10/8/2022 |
1.2.95 | 403 | 9/22/2022 |
1.2.87 | 460 | 9/15/2022 |
1.2.73 | 401 | 9/8/2022 |
1.2.5 | 435 | 7/13/2022 |
1.1.141.41205 | 411 | 7/6/2022 |
1.1.113.2032 | 418 | 6/23/2022 |
1.1.27 | 436 | 4/26/2022 |
1.1.20 | 421 | 4/21/2022 |
1.1.1 | 417 | 4/14/2022 |
1.0.300 | 421 | 3/31/2022 |
1.0.277-preview.125 | 110 | 3/25/2022 |
1.0.277-preview.110 | 107 | 3/18/2022 |
1.0.277-preview.105 | 113 | 3/15/2022 |
1.0.277-preview.98 | 112 | 3/8/2022 |
1.0.277-preview.85 | 114 | 2/25/2022 |
1.0.277-preview.77 | 103 | 2/18/2022 |
1.0.277-preview.60 | 123 | 2/4/2022 |
1.0.277-preview.41 | 122 | 1/28/2022 |
1.0.277-preview.32 | 123 | 1/27/2022 |
1.0.277-preview.17 | 120 | 1/24/2022 |
1.0.277-preview.13 | 121 | 1/21/2022 |
1.0.277-preview.1 | 123 | 1/11/2022 |
1.0.259 | 302 | 12/9/2021 |
1.0.221 | 155 | 10/19/2021 |
1.0.219 | 161 | 10/19/2021 |
1.0.218 | 186 | 10/18/2021 |
1.0.207 | 178 | 10/11/2021 |
1.0.155 | 162 | 8/31/2021 |
1.0.136 | 234 | 7/17/2021 |
1.0.135 | 157 | 7/16/2021 |
1.0.134 | 163 | 7/15/2021 |
1.0.133 | 185 | 7/14/2021 |
1.0.129 | 155 | 7/6/2021 |
1.0.125 | 194 | 7/5/2021 |
1.0.121 | 193 | 6/29/2021 |
1.0.119 | 223 | 6/28/2021 |
1.0.105 | 165 | 5/29/2021 |
1.0.46 | 189 | 5/24/2021 |