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

    关注

    57

    文章

    2923

    浏览量

    468525
  • 协议
    +关注

    关注

    2

    文章

    615

    浏览量

    40167
  • 源码
    +关注

    关注

    8

    文章

    672

    浏览量

    30393
  • CANopen
    +关注

    关注

    8

    文章

    407

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    CANopen转EtherCAT协议转换案例解析

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

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

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

    EtherCAT转CANopen协议网关应用详解

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

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

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

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

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

    使用ES32实现CANopen从机

    CANopen种基于CAN的通信协议,已在工业领域得到了广泛应用。CAN提供可靠的底层数据传输,CANopen提供标准化的应用层协议。在
    的头像 发表于 03-26 19:05 ?707次阅读
    使用ES32实现<b class='flag-5'>CANopen</b>从机

    CANOPEN协议详细介绍

    ???????? CANOPEN协议是基于CAN总线协议建立的应用层协议CANOPEN协议
    发表于 03-26 15:27 ?0次下载

    2025必备知识,CANopen转EtherCAT协议允许配备啥协议的电气设备

    CANopen转EtherCAT稳联技术(WL-COP-ECAT)协议允许配备 CANopen 的设备在基于 EtherCAT 的工业以太网网络上使用。
    的头像 发表于 12-29 09:50 ?509次阅读
    2025必备知识,<b class='flag-5'>CANopen</b>转EtherCAT<b class='flag-5'>协议</b>允许配备啥<b class='flag-5'>协议</b>的电气设备

    AGV行业设备协议新生态:canopen转Profinet网关揭秘!

    在AGV行业快速发展的今天,如何实现设备的高效连接和通信成为了许多企业关注的焦点。开疆智能Canopen转Profinet网关KJ-PNG-205的应用恰好解决了这问题,它通过将传统的Canopen
    的头像 发表于 12-09 17:13 ?681次阅读
    AGV行业设备<b class='flag-5'>协议</b>新生态:<b class='flag-5'>canopen</b>转Profinet网关揭秘!

    CANopen协议架构和应用原理

    稳健的通信协议和接口在工业电机控制应用中发挥着重要作用。在工业驱动应用中,当需要多个处理器元件来持续通信以完成复杂任务时,CANopen因其易于集成、高度可配置,以及支持高效、可靠的实时数据交换等特性,受到了众多工程师青睐。本文从低功耗电机控制应用的角度深入探讨
    的头像 发表于 11-04 13:49 ?1256次阅读

    DeviceNet转CANopen协议网关(DeviceNet转CANopen

    ,设备主要功能 捷米特JM-DNT-COP网关实现DeviceNet总线和CANopen网络连接起来。本网关连接到DeviceNet总线中作为从站使用,连接到CANopen总线中作为主站
    的头像 发表于 09-10 10:16 ?634次阅读
    DeviceNet转<b class='flag-5'>CANopen</b><b class='flag-5'>协议</b>网关(DeviceNet转<b class='flag-5'>CANopen</b>)

    EtherNet/IP转CANopen主站协议转换网关

    ,通过网关向CANopen协议的输送装置发送指令,将组装好的部件输送至下工位。 二,典型应用拓扑图 三,
    的头像 发表于 09-02 11:21 ?503次阅读
    EtherNet/IP转<b class='flag-5'>CANopen</b>主站<b class='flag-5'>协议</b>转换网关

    EtherNet/IP转CANopen主站协议网关(JM-EIP-COP)

    ,通过网关向CANopen协议的输送装置发送指令,将组装好的部件输送至下工位。 二,典型应用拓扑图 三,
    的头像 发表于 08-26 14:53 ?571次阅读
    EtherNet/IP转<b class='flag-5'>CANopen</b>主站<b class='flag-5'>协议</b>网关(JM-EIP-COP)

    EtherCAT从站转CANopen主站协议网关(JM-ECT-COP)

    ,设备主要功能 捷米特JM-ECT-COP网关实现EtherCAT网络与CANopen网络之间的数据通讯,可连接CANopen网络到EtherCAT网络。即将CANopen设备连接
    的头像 发表于 08-15 17:36 ?845次阅读
    EtherCAT从站转<b class='flag-5'>CANopen</b>主站<b class='flag-5'>协议</b>网关(JM-ECT-COP)