构建一款基于Python的开源跨平台经典CAN分析器
CAN总线开发通常需要接收数据帧、识别消息ID、分析时序、发送测试消息以及解释应用信号。
商用CAN工具功能强大,但对于学习、实验开发和嵌入式系统调试而言,一个开放且可定制的解决方案尤为实用。
因此,我创建了Open CAN Analyzer,简称OCA。
OCA最初是一个实用工具,旨在让我的CAN总线项目开发更加轻松。我决定将其发布为开源项目,以便开发者、学生和嵌入式系统专业人士可以使用它,研究其工作原理,并贡献改进。
该项目包含两个主要部分:
1. 一款使用 Python 和 Tkinter 编写的跨平台桌面应用程序。
2. 基于 Infineon DAVE 4 开发的 Infineon XMC4700 Relax Kit 完整固件。
桌面应用程序支持 Windows、macOS 和 Linux 系统。已成功在 Windows 和 macOS 上使用真实硬件测试了双向通信功能。
什么是Open CAN Analyzer?
Open CAN Analyzer 是一款开源工具,用于接收、检查、传输、记录、解码和回放经典CAN通信流量。
桌面应用程序通过USB CDC串行接口,使用文档中规定的OCA文本协议与XMC4700通信。
固件通过XMC4700 MultiCAN外设接收CAN帧,并将其转发至计算机。在反向通信中,它会验证通过USB接收到的命令,然后再将帧发送到CAN网络。
由于通信协议是开放且文档化的,其他开发者可以创建兼容的USB转CAN适配器,同时继续使用相同的桌面应用程序。
主要特点
• 经典CAN帧的接收与发送。
• 标准11位CAN标识符。
• DLC 值从 0 到 8 字节。
• 实时交通可视化。
• 时间戳、方向、ID、DLC、数据及帧周期显示。
• 按CAN ID分组的最新接收帧。
• 用于单个字节和DBC信号的时间序列图。
• 按ID、ID范围、方向和文本筛选。
• JSON配置文件和快速传输预设。
• 可选的自动回复。
• CSV 录制与回放。
• 导出为 candump 格式。
• 使用 cantools 进行 DBC 解码。
• 由硬件控制的仅监听模式。
• 英语和巴西葡萄牙语界面。
• 自动串行端口发现。系统架构
XMC4700 MultiCAN外设从CAN网络接收帧。固件将接收到的帧复制到一个有限队列中,并通过USB CDC将其转发至计算机。
相反,桌面应用程序接收到的命令在固件请求通过CAN网络发送之前会被进行验证。
CAN 接收由中断处理,但 USB 的格式化和通信则在中断之外进行。这有助于保持中断简短,并帮助维持固件行为的可预测性。
固件还会报告控制器诊断信息,包括接收和发送的帧计数、队列溢出、消息丢失事件、CAN控制器状态、TEC、REC以及当前的活动模式或仅监听模式。
沟通流程
CAN网络
→ IFX1051LE CAN收发器
→ XMC4700 MultiCAN 外设
→ OCA 文本协议通过 USB CDC
→ Windows、macOS 或 Linux 电脑
→ 打开 CAN 分析器桌面应用程序
本文编译自hackster.io





