百度云盘链接:
链接:canfestival安装包 提取码:z5i4
1.canfestival对象字典生成工具环境搭建
软件是用python写的,由于版本较老,建议在虚拟机上安装python2.7 + wxpython2.8环境
先安装python2.7
2.python安装完成后添加环境变量
在命令提示符中输入python后回车,若出现版本号,则python安装完成
3.安装wxpython2.8
一路next即可。
4.解压Mongo-canfestival-3-asc.zip压缩包
5.再解压objdictgen目录下的Gnosis_Utils-current.tar.gz
将第6步解压目录下的gnosis文件夹拷贝到objdictgen目录下
双击objdictedit.py,若弹出对象字典编辑窗口,则说明环境搭建成功
7.这里新建一个1s发送1次心跳的主站对象字典,名字是“DPCRMaster”(也可以根据需要改成其他名字)。
之后会得到1个对象字典文件(*od,相当于一个工程文件,方便下次再此基础上编辑),1个c文件,1个h文件
,以STM32F429的CAN1为例。
配置波特率500K 打开接收中断。
定时器7配置,10us加1,使能中断
canopen文件夹目录结构
其中CANopen\app文件夹下的config.h文件来自Canfestival->include->AVR
Canopen_drv.c和canopen.h自己建立,DPCRMaster.c DPCRMaster.h来自刚才建立的对象字典
Config.h做下面的修改
CANOpen\inc目录下19个.h头文件,来自Canfestival->include下目录19个头文件
CANOpen\inc\stm32目录下3个.h头文件来自Canfestival->include\cm4;
其中canfestival.h文件是函数接口定义(声明),函数内容需要自己实现(位于:app\canopen目录下canopen_drv.c);
CANOpen\src目录下12个.c源文件,来自Canfestival->src目录下的12个源文件;
其中需要删除dcf.c文件下第59、98行前面的“inline”关键字;
Canfestival.h添加防止递归包含的宏定义
在Keil工程中添加文件
添加头文件路径
然后是写canopen相关的驱动函数,在canopen_drv.c中实现
其中CanOpen_DispatchFromISR();函数在定时器7更新中断回调函数中调用
建立can的发送和接收线程,发送和接收的内容通过消息队列传递
节点初始化后 用CAN分析仪观察,可以看到发出的上线报文、网络管理报文和1s一次的心跳数据
对象字典配置工具中的PDO SDO配置方法还在研究中,,欢迎交流讨论。。
bsp_can.h
#ifndef _BSP_CAN_H
#define _BS