跳转至

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 接口需注意以下关键点:

  1. 硬件设计:选型匹配的收发器、终端电阻、抗干扰布线。
  2. 软件配置:正确设置波特率、处理错误、管理资源。
  3. 调试与优化:通过工具排查信号问题,结合场景选择合适的通信策略。