21ic电子技术开发论坛

标题: gd32f407 移植canopen协议 [打印本页]

作者: 芥末味单片机    时间: 2024-10-30 16:51
标题: gd32f407 移植canopen协议
下载canopen协议栈,开源的canfestival的下载地址:https://hg.beremiz.org/canfestival/


作者: 芥末味单片机    时间: 2024-10-30 17:01
选择canfestival下载zip版本即可

作者: 芥末味单片机    时间: 2024-10-30 17:07
新建一个工程模板,此过程略过,在代码路径下创建一个文件夹,将源码目录下的include和src两个文件夹复制进去。

作者: 芥末味单片机    时间: 2024-10-30 17:12
在gd32f407工程中添加canopen文件夹,并将src和include文件夹拷贝过来


作者: 芥末味单片机    时间: 2024-10-30 17:17
将include文件夹下除了AVR文件外的文件夹删除,建议将AVR修改为GD32


作者: 芥末味单片机    时间: 2024-10-31 09:33
src 文件夹中删除选中的三个文件

作者: 芥末味单片机    时间: 2024-10-31 09:36
config.h文件的修改如下,需要对方框部分进行注释

作者: 芥末味单片机    时间: 2024-10-31 09:42
dcf.c 在函数start_node和函数start_and_seek_node前面添加static 修饰

作者: 芥末味单片机    时间: 2024-10-31 09:46
canopen底层配置需要我们完成的函数一共有三个:
1:uint8_t canSend(CAN_PORT notused, Message *message)
2:void setTimer(TIMEVAL value)
3:TIMEVAL getElapsedTime(void)
在CAN中断接收函数最后加入canDispatch(&test_OD, &Rx_Message);
另外,需要在定时器中断中清除CAN软件定时器的计数值。
需要注意:
CAN的过滤器配置还是需要手动配置的;
CAN的过滤器配置为0;

作者: 芥末味单片机    时间: 2024-10-31 09:50
定时器的配置,需要按照timerscfg.h中的配置,如图,定时器计数值+1的时间和定时器的时钟和分频值有关。

作者: 星辰大海不退缩    时间: 2024-10-31 11:03
gd32f407 移植canopen协议学习一下

作者: 芥末味单片机    时间: 2024-10-31 11:07
打开字典工具需要安装python和wxpython,本人亲测,建议安装2.7版本的python,其它版本肯可能会存在闪退现象。进入CanFestival源码objdictgen文件夹中将Gnosis_Utils-current.tar.gz解压,复制gnosis文件夹到CanFestival源码objdictgen文件夹中然后双击打开objdictedit.py,出现如下界面为成功。

作者: 芥末味单片机    时间: 2024-10-31 11:55
新建一个字典,测试一下CanFestival移植是否成功

作者: 芥末味单片机    时间: 2024-10-31 12:13
心跳时间设置为1000ms

作者: 芥末味单片机    时间: 2024-10-31 13:06
然后点击文件->建立字典,将字典生成c和h文件,将这两个文件添加进工程,
注意修改CO_Data类型引用的名字,初始化调用下面这三个函数既可:
setNodeId(&master_Data,0x02);//设置node-id
setState(&master_Data, Initialisation);//canopen初始化
setState(&master_Data, Operational);//canopen进入操作状态
完成以上操作后,canopen主节点可接收到id为0x700的心跳报文,时间间隔为1000ms。





欢迎光临 21ic电子技术开发论坛 (https://bbs.21ic.com/)