0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CANOpen系列教程13_协议源码移植 (一)

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-06 15:11 次阅读

1写在前面

基于Canfestival框架的CANOpen协议栈移植教程网上流传着许多,而且有一份不知道被复制、粘贴了多少遍的“CANOpen移植教程”相信许多朋友都知道。

同时,百度、谷歌还能搜出许多所谓“移植代码”。其实,这许多内容,对初学者并没有多大帮助。相反,我觉得还有误导的作用。

基于Canfestival框架的CANOpen协议栈移植需要做的工作并不多,但许多初学者无从下手,究其原因还是有许多内容没有理解到位。

本教程站在初学者角度,尽量将重要内容讲述到位,后面提供移植好的Demo供大家参考学习。

2

移植准备

移植前,先让大家认识一下移植的一些准备条件。

2.1 硬件

两块带有MCU、CAN控制器收发器的板卡。

该移植教程以STM32F1(自带CAN控制器),带有CAN收发器的开发板为例来讲述。

条件允许的情况下,可以购买一个CAN总线分析仪。没有分析仪的朋友,可以用我《CANOpen系列教程06》提供的一个例程来抓取CAN总线数据。

因例程在中断里用串口打印传输数据。所以,用例程抓取的CAN总线传输速率不能太快(建议低于20帧/秒)。

2.2 MCU资源

1.CAN:CAN总线通信(必备);

2.TIM:CANOpen协议调度(必备);

3.UART:调试信息(选配);

4.GPIO:板卡状态指示灯(选配);

2.3 STM32标准外设库+FreeRTOS工程

本教程基于STM32标准外设库和FreeRTOS系统搭建的工程为例(很早之前我分享过),这里不讲述。

运行RTOS主要是牵涉到CAN总线数据的发送和接收需要两个线程来处理,以及增加一个CANOpen应用程序线程。

基于其他MCU以及RTOS原理类似,也可参考本文。

2.4 下载Canfestival源码并搭建好环境

这里的内容,如果你不明白,请务必先阅读该教程前几篇相关文章。

3

生成对象字典

本移植教程重点是将CANOpen协议源码移植到MCU中,使其成功运行。因此,对象字典只配置最基础的“心跳”。

下面教大家在对象字典编辑器中生成带“心跳”的对象字典。

1.打开编辑器,文件 -> 新建

2.新建“主站”节点

3.配置心跳信息

4.保存对象字典:文件 -> 保存 -> 保存在一个指定位置

5.建立对象字典

到这里就生成了三个文件:TestMaster.od、 TestMaster.c 和 TestMaster.h需保存好,在后面需要使用这个对象字典源码。

提示:

A.上面牵涉到三个地方保存名字:节点名字、对象字典工程名字、对象字典源文件名字,建议都一样。

B.主站和从站的生成原理一样,上面是生成主站TestMaster对象字典,从站TestSlave对象字典请按照同样方式生成即可。

4

提取CANOpen源码

本节内容主要针对初学者使其更加理解移植的代码工程,将CanFestival中源代码提取做一定说明,并且尽量将源码文件对应到自己工程下。

当然,本文按照常规方式提取,你也可以按照自己方式提取。同时,整个工程下其它,如STM32标准外设库、FreeRTOS这些文件在这里不作说明。

1.提取头、源文件(如下图)

CANOpeninc目录下19个.h头文件,来自Canfestival->include下目录19个头文件;

CANOpenincstm32目录下3个.h头文件来自Canfestival->includecm4;

其中canfestival.h文件是函数接口定义(声明),函数内容需要自己实现(位于:Appcanopen目录下canopen_drv.c);

CANOpensrc目录下12个.c源文件,来自Canfestival->src目录下的12个源文件;

其中需要删除dcf.c文件下第59、98行前面的“inline”关键字;

2.头文件说明

要修改一下其中的canfestival.h文件:

3.建立canopen文件夹并提取文件

在工程下建立canopen文件夹,提取相应的文件,同时建立自己的文件:canopen_app和canopen_drv.

还需要修改一下congfig.h文件,如下图:

4.建立CAN和TIM底层驱动文件

在上面canfestival.h文件提供了CAN和TIM的驱动接口,但我们这里不用它那一套接口,自己定义在bsp_can和bsp_timer源代码下。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAN
    CAN
    +关注

    关注

    56

    文章

    2467

    浏览量

    459238
  • 协议
    +关注

    关注

    2

    文章

    570

    浏览量

    38909
  • 源码
    +关注

    关注

    8

    文章

    573

    浏览量

    28585
  • CANopen
    +关注

    关注

    6

    文章

    200

    浏览量

    42872
收藏 人收藏

    评论

    相关推荐

    在自动化码头中CANopen与Ethercat协议的应用

    在自动化码头中,协议转换是一个关键环节,它能够实现不同设备之间的数据交互和协同工作。其中,将CANopen协议转换为EtherCAT协议的应用尤为常见。我们来了解一下
    的头像 发表于 01-19 15:03 497次阅读
    在自动化码头中<b class='flag-5'>CANopen</b>与Ethercat<b class='flag-5'>协议</b>的应用

    在自动化码头中CANopen与Ethercat协议的应用

    在自动化码头中,协议转换是一个关键环节,它能够实现不同设备之间的数据交互和协同工作。其中,将CANopen协议转换为EtherCAT协议的应用尤为常见。我们来了解一下
    的头像 发表于 01-19 14:57 158次阅读

    Profinet协议转换为CanOpen协议来连接CanOpen伺服驱动器的应用

    局域网(CAN)网络的通信协议,被广泛应用于汽车和其他嵌入式系统中。对于将Profinet协议转换为CanOpen协议以链接台达B3系列伺服
    发表于 01-10 10:29

    Profinet协议转换为CanOpen协议来连接CanOpen伺服驱动器的应用

    局域网(CAN)网络的通信协议,被广泛应用于汽车和其他嵌入式系统中。对于将Profinet协议转换为CanOpen协议以链接台达B3系列伺服
    的头像 发表于 01-10 10:27 155次阅读

    智能楼宇系统canopen协议与ModbusTCP协议进行通讯

    通过CANopen转ModbusTCP网关设备进行转换:可以使用一个CANopen转ModbusTCP网关设备,将CANopen协议转换为Modbus TCP
    的头像 发表于 01-03 15:20 173次阅读
    智能楼宇系统<b class='flag-5'>canopen</b><b class='flag-5'>协议</b>与ModbusTCP<b class='flag-5'>协议</b>进行通讯

    智能楼宇系统canopen协议与ModbusTCP协议进行通讯

    通过耐特森CANopen转ModbusTCP网关设备进行转换:可以使用一个CANopen转ModbusTCP网关设备,将CANopen协议转换为Modbus TCP
    的头像 发表于 01-03 15:17 205次阅读

    工业通讯中CANOPEN转EtherCAT的转换

    CANOPEN转EtherCAT协议转换网关是款能够将CANOPEN接口设备连接到EtherCAT网络系统的产品。该网关作为EtherCAT网络的从站,可以将
    发表于 12-12 11:31

    Modbus转CANopen协议相互转换在工业中的作用

    在工业自动化领域,Modbus和CANopen协议都是非常常见的通信协议。Modbus是种串行通信协议,常用于连接PLC和传感器/执行器。
    发表于 12-08 17:02

    Modbus转CANopen协议相互转换在工业中的作用

    在工业自动化领域,Modbus和CANopen协议都是非常常见的通信协议。Modbus是一种串行通信协议,常用于连接PLC和传感器/执行器。而CAN
    的头像 发表于 12-08 17:00 271次阅读

    Modbus转CANopen协议相互转换在工业中的作用

    在工业自动化领域,Modbus和CANopen协议都是非常常见的通信协议。Modbus是一种串行通信协议,常用于连接PLC和传感器/执行器。而CAN
    的头像 发表于 12-08 16:58 163次阅读
    Modbus转<b class='flag-5'>CANopen</b><b class='flag-5'>协议</b>相互转换在工业中的作用

    CANOPEN 转 Modbus 协议网关

    YC-COP-RTU网关可通过自带的配置软件设置成两种不同的通信网关,CANopen 做主站/Modbus 做从站网关:CANopen 主站协议与 Modbus 从站协议之间的转换,可
    的头像 发表于 09-19 17:55 378次阅读
    <b class='flag-5'>CANOPEN</b> 转 Modbus <b class='flag-5'>协议</b>网关

    CANopen协议编码器

    CANopen编码器是一种常见的工业自动化设备,广泛应用于工业控制领域。它采用CANopen通信协议,可实现编码器与各种控制器的快速连接,从而实现精确的位置检测和运动控制。CANopen
    的头像 发表于 08-09 15:29 955次阅读
    <b class='flag-5'>CANopen</b><b class='flag-5'>协议</b>编码器

    ETHERCAT转CANOPEN连接CANOpen协议

    ETHERCAT和CANOPEN不通讯?捷米JM-ECT-COP告诉你不是问题! 作为生产管理系统的关键部分,数据互联互通至关重要。然而,由于ETHERCAT和CANOPEN是两个不同的协议,它们之间的通讯一直是个大问题。这时,
    的头像 发表于 08-08 18:37 855次阅读
    ETHERCAT转<b class='flag-5'>CANOPEN</b>连接<b class='flag-5'>CANOpen</b><b class='flag-5'>协议</b>

    全面的CANopen开发工具——CANopen软件协议

    目前,CANopen协议已经成为工业自动化领域中最常用的通信协议之一,被广泛应用于机器人、自动化生产线、电力系统、交通运输等领域。同时,CANopen
    的头像 发表于 07-24 16:00 649次阅读
    全面的<b class='flag-5'>CANopen</b>开发工具——<b class='flag-5'>CANopen</b>软件<b class='flag-5'>协议</b>栈

    一个CANopen的应用样例(上)

    发送一系列网络管理命令,控制CANopen从站节点对本机的CANopen协议栈程序停止、启动、复位等操作。
    的头像 发表于 06-23 15:57 1471次阅读
    一个<b class='flag-5'>CANopen</b>的应用样例(上)