CANopen源代码移植

2025-07-06 14:47:56

1、觊皱筠桡CANopen简介1.1.CANopen定义了应用协议,应用层,通讯协议三部分1.2.CANopen源代码整体架构其中,CANope荏鱿胫协n的基本知识就不做详细介绍,如需要了解,关注公众号"虹科CANopen与EtherCAT知识平台“。CAN driver layer:主要是CAN底层驱动相关的,不同硬件平台的CAN驱动也不一样,这里使用的是CAN driver for STM32F bxCAN-ControllerCANopen stack layer:这里是CANopen的具体实现CCM layer:这里时由c写好的一些API函数,是中间调用层,实现各类报文和参数保存等功能。需要注意的是一些功能的实现,需要自己添加程序,比如对1010和1011保存和恢复默认参数这部分,需要自己写程序。是保存那部分参数?保存在Flash还是eeprom中?需要自己选择等

CANopen源代码移植CANopen源代码移植

3、2.1、初始化硬件进入主函数后,串口初始化:对串口进行初始化设置。当程序运行是,出现错误时,CANopen层会调用一些标准函数,通过串口输出错误的一些说明,错误代码,方便调试错误,比如错误代码0x0013,查看错误代码表,发现是CAN初始化错误,这时候就需要检查CAN的初始化,经检查确认是CAN的Rx和Tx在程序移植时对应的引脚不同。这样减少了移植差错时间。比如0x0078,这时候就要检查PDO映射和对象字典了。时钟初始化:F407配置407的滴答定时器为1ms产生一次中断CAN设置:选择单CAN或者多CAN,对Rx和Tx相关引脚进行设置

CANopen源代码移植CANopen源代码移植CANopen源代码移植

4、2.2、CANopen Layer初始化CcmInitCANopen这个函数初始化CANopenla烤恤鹇灭yer,创建数据结构,当执行完该函数时,对象字典创建成功,默认值被些人相关的索引条目中。但是对象字典的索引条目还没连接到应用程序中,也就是调用这些索引数据这部分程序还没完成。此时,NMT保持在初始化状态。设置节点ID为0x41,波特率为125k需要注意:把参数分装在结构体tCcmInitParam中,需要注意的是这里的结构体中的成员是固定不变的,所以保存在ROM中,如果需要改变节点地址或者需要通过DIP改变节点,那么该结构体必须保存在RAM中

CANopen源代码移植CANopen源代码移植CANopen源代码移植CANopen源代码移植

6、2.4、进入操作状态,有两种方法:一是设备接收到进入操作状态的报文(0x00,kNmtCommStartRemoteNode).后者调用了CcmBootNetwork函数,进入操作状态

CANopen源代码移植

8、至此,基于stm32F407的一个CANopen的移植框架就搭建好了,后面需要做的是对一些具体功能进行添加和修改。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢