打印

gd32f407 移植canopen协议

[复制链接]
630|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
下载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文件夹拷贝过来

使用特权

评论回复
5
芥末味单片机|  楼主 | 2024-10-30 17:17 | 只看该作者
将include文件夹下除了AVR文件外的文件夹删除,建议将AVR修改为GD32

使用特权

评论回复
6
芥末味单片机|  楼主 | 2024-10-31 09:33 | 只看该作者
src 文件夹中删除选中的三个文件

使用特权

评论回复
7
芥末味单片机|  楼主 | 2024-10-31 09:36 | 只看该作者
config.h文件的修改如下,需要对方框部分进行注释

使用特权

评论回复
8
芥末味单片机|  楼主 | 2024-10-31 09:42 | 只看该作者
dcf.c 在函数start_node和函数start_and_seek_node前面添加static 修饰

使用特权

评论回复
9
芥末味单片机|  楼主 | 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;

使用特权

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

使用特权

评论回复
11
星辰大海不退缩| | 2024-10-31 11:03 | 只看该作者
gd32f407 移植canopen协议学习一下

使用特权

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

使用特权

评论回复
13
芥末味单片机|  楼主 | 2024-10-31 11:55 | 只看该作者
新建一个字典,测试一下CanFestival移植是否成功

使用特权

评论回复
14
芥末味单片机|  楼主 | 2024-10-31 12:13 | 只看该作者
心跳时间设置为1000ms

使用特权

评论回复
15
芥末味单片机|  楼主 | 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。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

20

帖子

0

粉丝