【CANopen】关于STM32的CanFestival移植

系列文章目录


文章目录

  • 系列文章目录
  • 一、准备工作
  • 二、源码移植
    • 1、新建CubeMX工程
    • 2、移植CanFestival源码
    • 3、去除源码中的多余项
    • 4、源码修改
  • 三、底层驱动适配
  • 四、字典工具
    • 1、字典的使用


使用STM32F407单片机

一、准备工作

  1. CanFestival下载

【CANopen】关于STM32的CanFestival移植_第1张图片
【CANopen】关于STM32的CanFestival移植_第2张图片

二、源码移植

1、新建CubeMX工程

默认都会,略

2、移植CanFestival源码

在CubeMX生成代码路径下创建一个文件夹,将源码目录下的include和src两个文件夹复制进去

【CANopen】关于STM32的CanFestival移植_第3张图片
【CANopen】关于STM32的CanFestival移植_第4张图片

3、去除源码中的多余项

首先是include文件夹,如图所示,其中,timers.h大概率会和CubeMX中生成的文件名重名,所以需要重命名这个文件夹改名后需要修改src\timer.cinclude\sdo.h中的头文件引用
【CANopen】关于STM32的CanFestival移植_第5张图片

接下来是src文件夹,如图
【CANopen】关于STM32的CanFestival移植_第6张图片

4、源码修改

  1. config.h
    【CANopen】关于STM32的CanFestival移植_第7张图片
  2. dcf.c

【CANopen】关于STM32的CanFestival移植_第8张图片

三、底层驱动适配

CAN和定时器的配置在CubeMX中配置。配置完成后需要我们完成的函数一共有三个:

uint8_t canSend(CAN_PORT notused, Message *message)
void setTimer(TIMEVAL value)
TIMEVAL getElapsedTime(void)

另外,需要在定时器中断中清除CAN软件定时器的计数值。

需要注意的点:

  1. CAN的过滤器配置还是需要手动配置的;
  2. CAN的过滤器配置为0;
  3. 定时器的配置,需要按照timerscfg.h中的配置,如图,定时器计数值+1的时间和定时器的时钟和分频值有关。
    【CANopen】关于STM32的CanFestival移植_第9张图片

四、字典工具

使用字典之前需要先安装python和wxpython,实测3.8版本打开字典闪退,换用2.7版本可用,其他版本未使用。

进入CanFestival源码objdictgen文件夹中

Gnosis_Utils-current.tar.gz解压,复制gnosis文件夹到CanFestival源码objdictgen文件夹中

然后双击打开objdictedit.py,出现如下界面为成功:

【CANopen】关于STM32的CanFestival移植_第10张图片

1、字典的使用

新建一个字典,测试一下CanFestival移植是否成功
【CANopen】关于STM32的CanFestival移植_第11张图片
【CANopen】关于STM32的CanFestival移植_第12张图片
然后点击文件->建立字典,将字典生成c和h文件,将这两个文件添加进工程。

注意修改CO_Data类型引用的名字

初始化调用下面这三个函数既可

setNodeId(&master_Data,0x02);//设置node-id
setState(&master_Data, Initialisation);//canopen初始化
setState(&master_Data, Operational);//canopen进入操作状态

完成以上后,既可在接收端收到id为0x700的报文。

你可能感兴趣的:(CANopen,stm32,嵌入式硬件,单片机)