CANopen协议栈IO模块设计
1 整体思路
本文引用地址:https://www.eepw.com.cn/article/202503/468259.htm一个工业级CANopen-IO 至少需要满足?
1.低成本:ARM-M0 32 bit 低成本
2.性能高:主频80M 集成CAN,同时兼容CAN-FD
3.宽电压:工作电压1.62 ~ 3.6 V
4.满足工业要求:工作温度-40 ~ 125 ℃,覆盖工业级范围
一个工业级CANopen-IO 需要占用的内存资源?
1.内部闪存FLASH:128 k Byte
2.内部SRAM:32 k Byte
2 项目设计过程
2.1 硬件设计
CAN接口硬件设计:
1.采用电源信号双隔离
2.保险+ 电感防雷击设计
3.RJ45 输出,方便级联
Serial接口硬件设计:
1.USB 转串口芯片CH340G
2.仅用于Debug 信息打印
输入、输出测试IO硬件设计:
输出光耦隔离,MOS电流增强
输入双向光耦隔离,支持PNP、NPN模式
2.2 软件设计
CAN接口软件实现
1.CAN初始化
2.CAN的邮箱发送
3.CAN中断接收
IO操作软件实现:
1.IO初始化
2.IO的翻转
CANopen协议栈的的移植:
1.协议栈的移植(stack、ccm);
2.对象字典的迁移(objdict);
3.芯片底层的对接(driver);
CANopen对象字典和CIA401实现:
输入映射rpdo:
输入处理:
3 系统流程图
硬件流程图概述:
1.电源上电后,电源管理芯片控制5 V 电源端的输出,后端无短路后直接输出;
2. 5 V 电源使能后,经过LDO 稳压芯片到3.3 V 输出到MCU 和各个接口芯片;
3.MCU供电正常后,开始复位,取外部晶振倍频后以80M 主频运行;
4.MCU运行后会初始化相关外设,在主循环中进行CAN报文的收发和IO端口的控制;
5.MCU将内部的CAN报文经TTL信号隔离后发送到CAN收发器,交由收发器再发送到总线上;
6. CAN收发器收CAN总线数据,转换为TTL信号,隔离后再发送的MCU 内部的CAN 控制器的FIFO 中;
7. MCU还控制着硬件的输入输出IO状态;
软件流程图概述:
1.系统上电后, Mspm0g3507 会进行系统初始化;
2.系统初始化完毕后,会进行外设的初始化(IO、CAN、Serial、Timer...);
3.在CAN外设正常初始化后,对CANopen协议栈进行初始化,此时会分配Node-Id,波特率、以及将对应的CANopen节点切为预操作状态;
4.MCU在主循环中会接收CANopen主节点的信息,会进行以下处理:CANopen状态机处理、PDO报文处理、SDO报文处理以及自身心跳报文的发送等;
5.MCU在主循环中遵循CIA401协议,根据主节点发送的对象信息和状态机进行相关的CIA401的处理;
6. MCU根据CIA401对输入和输出IO进行状态的更新和信号的输出;
4 系统实物图
输出端子Y16十六通道,这里只有了8通道
CAN收发电路,RJ45连接
和主控制器连接在一起。
(本文来源于《EEPW》202503)
评论