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                
#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                

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 中添加更多详细信息。

产品 兼容的和附加的计算目标框架版本。
.NET 框架 net 兼容。
兼容的目标框架
包含的目标框架(在包中)
了解有关 目标框架.NET 标准 的更多信息。

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