can2040项目,将基于软件的CAN总线功能添加到了树莓派RP2040微控制器上

原文链接:can2040 project adds software CAN bus to Raspberry Pi RP2040 microcontroller 由Jean-Luc Aufranc撰写。
本文共计 643 字,预计阅读 2 分钟

can2040 项目是可以用在树莓派 RP2040 微控制器上从而让其成为基于软件的CAN 总线工具。它可以利用可编程 I/O (PIO)以高达每秒 1Mbit 的速率读取和写入 CAN 2.0B 数据帧。

can2040 项目的开发人员 Kevin O’Connor 解释说:“该工具仅可以使用 RP2040 PIO 两个硬件block中的一个,因此在单个树莓派 RP2040 芯片上可以实现使用两个独立的 CAN 总线接口。

树莓派 RP2040 can2040 的软件 - CAN Bus
树莓派 RP2040 can2040 的软件 – CAN Bus

在此过程中有些处理也会在树莓派 RP2040 微控制器的一个 Arm Cortex-M0+ 内核上进行,具体的处理时间取决于总线的数据量,当一个完全饱和的 CAN 总线以最快的 1Mbit/s 速率运行时,在 125MHz 频率下可能会占用该核心的 30% 左右,因此应该还可以为系统上可能运行的其他任务留下挺多的量。目前,我暂时找不到有关 RAM 和存储空间使用率的任何信息。

我们之前曾经见过树莓派 RP2040 微控制器基于硬件实现的 CAN 功能,比如:CANPico 和 CanBed RP2040,它们使用了 MCP2515/MCP2518FD CAN 控制器或者 MCP2551/MCP2562FD CAN 收发器。据我了解,can2040 代码不需要 CAN 控制器,只需要将一个 CAN 接收器连接到树莓派 Pico 或其他 RP2040 板即可。这样 RP2040 的软件 CAN 总线应该能够与其他基于硬件的 CAN 总线实现互操作了,而且其总线可以由 can2040 和非 can2040 的节点混合组成。注意:有一些限制可能会影响 CAN 总线:

CAN 总线规范定义了三种错误处理状态:error active错误激活状态(即正常状态)、error passive错误认可状态bus off总线关闭状态。这些状态之间的自动转换目前无法通过 can2040 实现。can2040 代码不传输错误帧。can2040 代码不会自动进入bus off状态。在这方面,用户可以认为 can2040 代码始终处于error passive状态。

你们可以 Github 上找到有关该项目的更多详细信息,其中包含在 GPLv3 许可下发布的 C 源代码、Python 测试脚本和应用程序编程接口 (API) 文档。

本文消息来源于 Hackster.io

分享这篇文章
订阅评论
提醒
0 评论
内联反馈
查看所有评论