• 1.32 Cubemx_canfestival对象字典生成工具环境搭建


    百度云盘链接:

    链接: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文件

    接下来是canfestival的源码移植步骤
    ,以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
    • 1
  • 相关阅读:
    部署kubevirt教程
    Maven(1)
    【读书笔记】实战-Prometheus+Grafana构建企业级监控系统
    【定时功能】消息的定时发送-基于RocketMQ
    C++与QML混合编程
    企业架构LNMP学习笔记34
    数据结构-堆的实现及应用(堆排序和TOP-K问题)
    java-php-python-ssm养老机构系统计算机毕业设计
    vue中深度选择器
    Java进击框架:Spring-数据存取(七)
  • 原文地址:https://blog.csdn.net/oDuanYanGuHong/article/details/126888940