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
    +关注

    关注

    59

    文章

    3097

    浏览量

    473509
  • 协议
    +关注

    关注

    2

    文章

    620

    浏览量

    41192
  • 源码
    +关注

    关注

    8

    文章

    689

    浏览量

    31512
  • CANopen
    +关注

    关注

    8

    文章

    517

    浏览量

    49850
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    破解协议壁垒,驱动精密注塑—Ethernet/IP转CANopen伺服的黄金纽带

    采用CANopen协议时,疆鸿智能JH-EIP-COP网关化身“通信枢纽”,让异构协议设备实现毫秒级协同,驱动精密制造。 伺服(以IS620PT系列为例)技术参数: 定位精度:≤±0.
    的头像 发表于 04-09 15:43 174次阅读
    破解<b class='flag-5'>协议</b>壁垒,驱动精密注塑—Ethernet/IP转<b class='flag-5'>CANopen</b>伺服的黄金纽带

    CANopen协议核心秘籍:NMT、SDO、PDO、心跳报文网打尽

    工程师必备:从状态切换、参数配置到实时数据传输,篇搞定CANopen通信难题CANopen协议在工业自动化中无处不在,但复杂的对象字典、多样的报文类型常让开发者头疼。本文将NMT网络
    的头像 发表于 03-05 19:34 510次阅读
    <b class='flag-5'>CANopen</b><b class='flag-5'>协议</b>核心秘籍:NMT、SDO、PDO、心跳报文<b class='flag-5'>一</b>网打尽

    ProfiNet转CANopen协议转换网关实现西门子1200 PLC与多个CANopen水下仪表通讯的配置案例

    CANopen 协议,且数量超过 9 台。传统方案是在 PLC 机架内加装 CM CANopen 模块,但受限于海底长距离总线拓扑与防爆分区,旦超过 8 个节点即出现报文碰撞、丢包
    的头像 发表于 11-14 10:32 850次阅读
    ProfiNet转<b class='flag-5'>CANopen</b><b class='flag-5'>协议</b>转换网关实现西门子1200 PLC与多个<b class='flag-5'>CANopen</b>水下仪表通讯的配置案例

    协议桥接新范式:稳联技术打通EtherCAT与CANopen,赋能施耐德变频器

    协议桥接新范式:稳联技术打通EtherCAT与CANopen,赋能施耐德变频器 本方案实现欧姆龙控制器(EtherCAT主站)通过EtherCAT-CANopen协议转换网关控制施耐德
    的头像 发表于 11-07 15:20 1533次阅读
    <b class='flag-5'>协议</b>桥接新范式:稳联技术打通EtherCAT与<b class='flag-5'>CANopen</b>,赋能施耐德变频器

    CANopen转Profinet是种构建于控制局域网设备之上的协议网关

    CANopen作为构建于控制局域网(Controller Area Network, CAN)之上的高层通信协议,其体系架构包含通信子协议与设备子协议。此
    的头像 发表于 11-05 14:05 565次阅读
    <b class='flag-5'>CANopen</b>转Profinet是<b class='flag-5'>一</b>种构建于控制局域网设备之上的<b class='flag-5'>协议</b>网关

    CANopen转Profient网关协议介绍

    CANopen介绍: CANopen种基于控制器局域网(CAN)的高层工业通信协议,由国际用户和制造商协会CiA于1995年发布,基础规范为CiA 301标准。该
    的头像 发表于 09-25 17:31 921次阅读
    <b class='flag-5'>CANopen</b>转Profient网关<b class='flag-5'>协议</b>介绍

    通信协议高材生,PROFINET to CANopen网关连接西门子PLC与汇川变频器

    S7-1500系列PLC支持PROFINET协议协议上不致无法直接通讯实现数据交互。需要通过第三方的协议转换模
    的头像 发表于 08-12 10:49 1235次阅读
    通信<b class='flag-5'>协议</b>高材生,PROFINET to <b class='flag-5'>CANopen</b>网关连接西门子PLC与汇川变频器

    承担CANOPEN转PROFINET协议转换功能的网关与台达伺服器的连接

    ,则必须进行通讯协议转换。PROFINET转CANOPEN系列网关为此提供了种高效可行的解决方案。 首先,自西门子组态处开展GSD文件的安装工作。具体操作如下:选定GSD文件所在的文
    的头像 发表于 07-24 18:01 656次阅读
    承担<b class='flag-5'>CANOPEN</b>转PROFINET<b class='flag-5'>协议</b>转换功能的网关与台达伺服器的连接

    CANopen转EtherCAT协议转换案例解析

    在工业自动化领域,运动控制器与传感器之间的协议兼容性是系统集成中的关键挑战。某智能装备制造企业采用EtherCAT协议的运动控制器作为主站,需驱动基于CANopen协议的分布式传感器网
    的头像 发表于 06-17 19:22 624次阅读
    <b class='flag-5'>CANopen</b>转EtherCAT<b class='flag-5'>协议</b>转换案例解析

    协议大和解:ETHERCAT转CANopen网关配置

    最近有同学后台咨询疆鸿智能EtherCAT转CANopen协议转换网关如何配置,小编今天给大家详细分享下配置的步骤。 ,设备主要功能 JH-ECT009 型网关是EtherCAT网络
    的头像 发表于 05-21 14:55 865次阅读
    <b class='flag-5'>协议</b>大和解:ETHERCAT转<b class='flag-5'>CANopen</b>网关配置

    面向高温工业场景的EtherCAT/CANopen协议转换系统设计与应用

    在金属冶炼行业,高效稳定的通信系统是保障生产流程顺畅、提升生产效率的关键。从矿石预处理、高温熔炼,到精炼成型,各个环节的设备紧密协作,而JH-ECT009疆鸿智能EtherCAT转CANopen协议
    的头像 发表于 05-21 14:41 467次阅读
    面向高温工业场景的EtherCAT/<b class='flag-5'>CANopen</b><b class='flag-5'>协议</b>转换系统设计与应用

    EtherCAT转CANopen协议网关应用详解

    成为运动控制领域的“明星”,而CANopen则凭借灵活性和成本优势在中小型设备中广泛应用。当两者相遇时,如何打破协议阻碍,实现无缝互联? EtherCAT转CANopen网关通过智能协议
    的头像 发表于 05-19 14:19 747次阅读
    EtherCAT转<b class='flag-5'>CANopen</b><b class='flag-5'>协议</b>网关应用详解

    当冲压焊接遇上Canopen到Profinet协议转换网关

    在工业自动化领域,设备间的“对话”效率直接决定了生产线的生命力。冲压焊接作为金属加工的核心环节,常常面临设备品牌多样、通信协议不统的困境——德国伺服电机用Canopen协议传递控制指
    的头像 发表于 05-11 10:51 574次阅读
    当冲压焊接遇上<b class='flag-5'>Canopen</b>到Profinet<b class='flag-5'>协议</b>转换网关

    Profinet转CanOpen网关,打破协议壁垒的关键技术

    在石油化工行业的生产现场,各类自动化设备如同精密运转的神经系统,而通信协议则是传递信号的"语言"。当不同厂商的设备采用Canopen与Profinet这两种主流工业协议时,就像
    的头像 发表于 05-10 14:14 711次阅读
    Profinet转<b class='flag-5'>CanOpen</b>网关,打破<b class='flag-5'>协议</b>壁垒的关键技术