新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > CANopen协议栈IO模块设计

CANopen协议栈IO模块设计

作者:鲁猛 时间:2025-03-18 来源:EEPW 收藏

1   整体思路

本文引用地址:https://www.eepw.com.cn/article/202503/468259.htm

一个工业级-IO 至少需要满足?

1.低成本:ARM-M0 32 bit 低成本

2.性能高:主频80M 集成CAN,同时兼容CAN-FD

3.宽电压:工作电压1.62 ~ 3.6 V

4.满足工业要求:工作温度-40 ~ 125 ℃,覆盖工业级范围

一个工业级-IO 需要占用的内存资源?

1.内部闪存FLASH:128 k Byte

2.内部SRAM:32 k Byte

image.png

2   项目设计过程

2.1 硬件设计

CAN接口硬件设计:

1742271833290855.png

1.采用电源信号双隔离

2.保险+ 电感防雷击设计

3.RJ45 输出,方便级联

Serial接口硬件设计:

1742271880248793.png

1.USB 转串口芯片CH340G

2.仅用于Debug 信息打印

输入、输出测试IO硬件设计:

输出光耦隔离,MOS电流增强

1742271928692836.png

输入双向光耦隔离,支持PNP、NPN模式

1742271988693354.png

2.2 软件设计

CAN接口软件实现

1742272079496417.png

1.CAN初始化

2.CAN的邮箱发送

3.CAN中断接收

image.png

IO操作软件实现:

1742272165720662.png

1742272181911219.png

1.IO初始化

2.IO的翻转

协议栈的的移植:

image.png

1.协议栈的移植(stack、ccm);

2.对象字典的迁移(objdict);

3.芯片底层的对接(driver);

CANopen对象字典和CIA401实现:

输入映射rpdo:

1742272361706134.png

1742272375420406.png

1742272391585671.png

1742272415764795.png

输入处理:

1742272441207023.png

1742272462248572.png

3   系统流程图

image.png

硬件流程图概述:

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状态;

1742272605412209.png

软件流程图概述:

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   系统实物图

image.png

image.png

输出端子Y16十六通道,这里只有了8通道

image.png

image.png

CAN收发电路,RJ45连接

image.png

和主控制器连接在一起。

(本文来源于《EEPW》



关键词: 202503 CANopen IO模块

评论


相关推荐

技术专区

关闭