Air780EPM CAN 硬件电路说明
Air780EPM 支持 CAN 接口,如下表所示;
一、CAN 接口概述
1. CAN 协议简介
- CAN(Controller Area Network)是一种被广泛应用于汽车和工业控制领域的串行通信协议。
它支持多主节点通信,具有高可靠性、实时性以及错误检测能力。
- Air780EPM 支持 CAN 2.0A/B 标准,允许最高达 1Mbps 的通信速率。
2. 核心功能与协议
- 支持协议:CAN 2.0A/B 标准,兼容标准帧(11 位 ID)和扩展帧(29 位 ID)。
注意!Air780EPM 不支持 CAN FD 标准。
-
通信速率:最高支持 1Mbps(如需更高带宽需外接 CAN FD 收发器)。
-
物理层依赖:需外接 CAN 收发器(如川土微的 CA-IF1051S/VS),通过 GPIO 引脚复用实现差分信号传输(CAN_H/CAN_L)。
3. 硬件接口特性
-
GPIO 映射:
- CAN_TXD(发送):默认映射到 GPIO26(GPIO13 是另一组映射选择)。
- CAN_RXD(接收):默认映射到 GPIO25(GPIO12 是另一组映射选择)。
- CAN_RST(复位):默认映射到 GPIO28(GPIO14 是另一组映射选择)。
-
电源与电平:
-
CAN 收发器逻辑电平需与 Air780EPM 的 GPIO 电平匹配(默认 3.0V)。
- CA-IF1051VS:支持 IO 逻辑电平独立供电,以 Air780EPM 开发板为例,可使用 Air780EPM 的 PIN99:Vref(GPIO23 保持高电平输出)与其连接,从而保证 CA-IF1051VS 与 Air780EPM 的 IO 电平一致,不再需要额外的电平转换电路。
二、硬件设计注意事项
1. 外部电路设计
-
CAN 收发器选型:
- 推荐使用川土微 CA-IF1051S/VS,支持 3.0V 逻辑电平,抗干扰能力强。
- 确保收发器与 Air780EPM 的 GPIO 电平匹配(如 VREF=3.0V)。
-
终端电阻:
-
必加:在 CAN 总线两端各接入 120Ω 终端电阻,防止信号反射。
- 位置:靠近 CAN 收发器的 CAN_H 和 CAN_L 引脚。
-
布线与抗干扰:
-
差分对走线:CAN_H 和 CAN_L 需走差分线,长度对称,间距 10-15mil。
- 远离干扰源:避免靠近电源线、高频信号线,增加地线屏蔽。
- ESD 防护:在 CAN 接口处添加 TVS 二极管(如 PESD3V3YB4),靠近接口布局。
2. 电源与复位
- 电源稳定性:
- CAN 收发器需独立供电,通常为 5V,但需注意您所选择的 CAN 收发器型号是否需要通过电平转换与 Air780EPM 的 3.0V IO 电平一致,比如,CA-IF1051S 需要增加电平转换电路,而 CA-IF1051VS 有 IO 电平独立供电,无需再加电平转换电路。
- 使用去耦电容(如 100nF 和 10μF)稳定电源。
2. 其他关键点
-
总线长度:
- 50 米内:1Mbps 速率下可正常通信。
- 超长距离:需降速至 125kbps 或添加中继器。
-
GPIO 冲突:
-
确保 CAN_TXD/CAN_RXD/CAN_RST 引脚初始化为 CAN 接口功能。
三、软件开发注意事项
1. LuatOS API 与驱动
- 初始化 CAN 接口:
-- 初始化CAN接口
can.init()
- 发送 CAN 帧:
can.tx(id, 0x12345678, CAN.EXT, false, true, "\x00\x01\x02\x03\0x04\x05\0x6\x07")
-- 参数:ID、节点ID、ID类型、是否遥控帧、是否需要应答、数据
- 接收 CAN 帧:
local succ, id, type, rtr, data = can.rx(0)
-- 参数:是否读出成功、ID、ID类型、是否遥控帧、数据
2. 关键注意事项
-
波特率匹配:
- 所有CAN节点的波特率必须一致,否则通信失败。
-
资源限制:
- 单帧最大8字节,需分包传输大数据。
- 频繁发送可能占用CPU资源,建议使用DMA或轮询。
-
错误恢复:
- 监控错误计数器,超过阈值时重启接口:
if can.state() == can.STATE_BUSOFF then can.reset() end
四、典型问题排查
1. 通信失败
-
检查清单:
- 确认 CAN 收发器电源和接地正常。
- 终端电阻是否正确安装。
- 管脚初始化配置与硬件手册一致(如 CAN_TXD/CAN_RXD/CAN_RST 引脚)。
- 波特率设置是否匹配其他节点。
-
工具辅助:
-
使用 CAN 分析仪(如 Vector CANalyzer)捕获信号。
2. 数据丢失或乱码
- 可能原因:
- 波特率不匹配导致帧同步失败。
- 总线干扰或信号完整性问题(如走线过长、未加终端电阻)。
- 发送间隔过短导致缓冲区溢出。
五、应用场景与参考设计
1. 典型应用场景
- 工业物联网:设备状态监测、传感器数据采集。
- 智能电网:远程抄表、设备控制。
2. 优化建议
-
硬件层面:
- 增加信号屏蔽层或缩短总线长度以减少干扰。
-
软件层面:
-
采用 DMA 传输减少 CPU 占用。
- 实现心跳包机制检测链路状态。
3. 硬件参考设计
4. LuatOS API 与驱动
六、参考资料
- 硬件手册:Air780EPM GPIO 分配及 CAN 接口设计指南。
- LuatOS API 文档:
can
模块说明(can.init
,can.send
等)。 - CAN 协议规范:ETSI EN 302 093 标准。
- 收发器手册:川土微 CA-IF1051S/VS 电气特性与应用指南。
七、总结
在 Air780EPM 上开发 CAN 接口需注意以下关键点:
- 硬件设计:选型匹配的收发器、终端电阻、抗干扰布线。
- 软件配置:正确设置波特率、处理错误、管理资源。
- 调试与优化:通过工具排查信号问题,结合场景选择合适的通信策略。