MindSDK_MM32F5270/demo_apps/canopen/co_with_eeprom
Yilin Sun 3977144e90
Initial MM32F527x commit.
Signed-off-by: Yilin Sun <imi415@imi.moe>
2023-03-27 21:54:40 +08:00
..
build Initial MM32F527x commit. 2023-03-27 21:54:40 +08:00
board_init.c Initial MM32F527x commit. 2023-03-27 21:54:40 +08:00
board_init.h Initial MM32F527x commit. 2023-03-27 21:54:40 +08:00
clock_init.c Initial MM32F527x commit. 2023-03-27 21:54:40 +08:00
clock_init.h Initial MM32F527x commit. 2023-03-27 21:54:40 +08:00
CO_driver_target.h Initial MM32F527x commit. 2023-03-27 21:54:40 +08:00
CO_driver.c Initial MM32F527x commit. 2023-03-27 21:54:40 +08:00
CO_eeprom.c Initial MM32F527x commit. 2023-03-27 21:54:40 +08:00
CO_eeprom.h Initial MM32F527x commit. 2023-03-27 21:54:40 +08:00
CO_OD.c Initial MM32F527x commit. 2023-03-27 21:54:40 +08:00
CO_OD.h Initial MM32F527x commit. 2023-03-27 21:54:40 +08:00
main.c Initial MM32F527x commit. 2023-03-27 21:54:40 +08:00
pin_init.c Initial MM32F527x commit. 2023-03-27 21:54:40 +08:00
pin_init.h Initial MM32F527x commit. 2023-03-27 21:54:40 +08:00
readme.md Initial MM32F527x commit. 2023-03-27 21:54:40 +08:00

co_with_eeprom

实验过程

  • 初始化系统和外设时钟及引脚定义
  • 初始化 TIM FlexCAN I2C 和 CANopen 协议栈
  • 启动 CAN 收发中断,启动 1ms 定时器,启动 CANopen 协议栈CANopen 节点以 500 kbps的比特率上线

实验现象

节点上线向 CAN 网络发送节点上线报文:

CAN-ID(hex) Length Data(hex)
70A 1 00

之后以 1000ms 的时间间隔向 CAN 网络发送节点心跳报文:

CAN-ID(hex) Length Data(hex)
70A 1 7F

本样例实现了 CANopen OD_H1010 存储当前对象字典中 EEPROM 属性参数和 ROM 属性参数功能以及 CANopen OD_H1011 恢复默认 ROM 属性参数功能。

我们在 MCU 外部 EEPROM 中将其分为三部分来存储数据。第一部分用于存放对象字典中 EEPROM 属性参数数据,第二部分用于存放对象字典中 ROM 属性参数数据,第三部分用来存放 MBR(Master Boot Record)数据。

当本节点设备从 CAN 总线接收到 OD_H1010 存储当前参数指令,即如下报文:

CAN-ID(hex) Length Data(hex)
60A 8 23 10 10 01 73 61 76 65

当前的对象字典中属于 ROM 存储属性的对象字典参数存储到 MCU 外部的 EEPROM 中,并在以后的运行中都使用保存在外部 EERPOM 中的对象字典参数启动。

当本节点设备从 CAN 总线接收到 OD_H1011 恢复默认参数指令,即如下报文:

CAN-ID(hex) Length Data(hex)
60A 8 23 11 10 01 6C 6F 61 64

属于 ROM 属性的对象字典参数将恢复为初始默认参数,并在以后的运行中都使用默认 ROM 属性的对象字典参数。

可以向当前节点发送如下指令查询当前节点的上电次数来验证 co_with_eeprom 样例是否正常工作:

CAN-ID(hex) Length Data(hex)
60A 8 40 06 21 00 00 00 00 00

当本节点设备从 CAN 总线接收到上述报文时便会回复下如报文:

CAN-ID(hex) Length Data(hex)
58A 8 43 06 21 00 01 00 00 00

该报文表示当前节点共有 1次上电记录。