CanFestival移植到stm32f103zet

源码参考:https://github.com/sallenkey-wei/CanFestival-transplanted2stm32

一、对象字典的编辑:

可以参考canopen学习资料中的一个pdf文档:

《PDO SDO应用实例分析(编辑对象字典是可以参考).pdf》

1.安装三个软件:

         python-2.7.10.amd64.msi

         wxpython2.8-win64-unicode-2.8.12

          Beremiz-1.1_RC5.exe

我已备份到github上:https://github.com/sallenkey-wei/CanFestival-transplanted2stm32/releases

安装包在 “相关软件工具”->”CanFestival移植用工具” 中,也可自行百度下载,安装详情参考readme.txt,如果安装完不能使用可以尝试更低版本的Beremiz(亲测可以使用),如1.02版本

2.安装完成后打开Beremiz安装目录X:\Program Files (x86)\Beremiz\CanFestival-3\objdictgen\在此文件夹中打开命令行,运行./objdictedit.py即可打开对象字典编辑器,然后就可以编辑对象字典了

3.使用./objdictedit.py打开对象字典,路径在CanFestival源码中,如下图:

上图中两个对象字典分别对应主机和从机,打开主机对象字典后之后如下图:

我调试时使用的功能很简单,主机只定义一个Receive PDO 、从机只定义了一个Transmit PDO,如下图

注意图中框选的部分COB ID used by PDO 主机和从机一定要保持一致(我一般习惯生成c文件后直接在c文件中修改成一致),才能让RPDO和TPOD一一对应,通信才能有效,可以参考文档:

《PDO SDO应用实例分析(编辑对象字典是可以参考).pdf》中的例程

另外Transmission Type都是0x01的意思是发送方在接收到1个sync包之后开始发送TPDO,接收方在接收到TPDO后会查找对象字典中是否有对应的RPDO,若有,则将TPDO携带的数据更新到此RPDO,编辑好通信参数还要看一看mapping参数,它用来指定PDO发送或者接收的数据存放的位置坐标,实际也是对象字典的一块区域,如下图:

这里一个PDO我只留了两个变量正好8字节,我个人理解这里可以大于8字节,因为一个PDO最多可以携带8字节数据,但是,这8字节的数据可以映射到对象字典中的多个变量,默认的对象字典中有10个变量。

编辑完PDO Mapping还要编辑Master的sync包相关参数,因为上述过程已经配置PDO为接收到1个sync触发发送,所以Master应该发送sync到slave,slave接收到此sync后将发送上述配置好的TPDO到Master,其实多个PDO可以设置不同的sync参数,例如需要及时更新的PDO可以设置接收1个sync就发送,不需要及时更新的PDO可以设置接收100个sync再发送。sync发送周期配置如下:

0x000c350十进制为5000,协议中单位是微秒,但实际移植过程中初始化定时器的最小时间单位为1ms,所以实际单位不清楚(未深究,不影响使用)

配置完上述参数,点击新建->建立字典,导出成c文件即可

二、代码移植

我自己转载的连接如下https://blog.csdn.net/xiaoyink/article/details/89077046

按照以下教程也可

http://www.openedv.com/thread-246479-1-1.html

http://bbs.21ic.com/icview-878522-1-1.html

https://www.cnblogs.com/tdyizhen1314/p/4348725.html

 

以上都是移植教程,大同小异,按照上述步骤做完之后,编译还是会报错,要在dcf.c文件中第58行加一句话:

#define inline __inline

 

完成后即可通信,可以使用USBCAN-2A 分析仪观测Can总线上的每一帧。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值