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

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

3天内不再提示

CANOpen系列教程06_ 结合代码理解CAN底层收发数据

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

1写在前面

教程前面讲述了许多关于CAN协议的一些概念,可能许多初学者看的云里雾里,那么本文将结合代码让大家理解之前讲述的内容。

因为关注我的人大部分都在学习STM32,我将结合STM32F103、标准外设库例程来让大家理解之前讲述的一些概念。

本文主要讲述内容:

1.传输数据相关参数

2.位时序及传输波特率

为方便大家理解,我将在最后提供对应例程「CANOpen系列教程06_CAN底层收发例程」。当然,本文只讲述代码中部分内容,某些配置参数放在后面讲述。

2

传输数据相关参数

传输数据相关参数其实主要就是前面《CANOpen系列教程04》讲述的“帧类型及格式说明”那一章节内容,建议先看下那些概念内容。

CAN总线传输的内容主要就是发送和接收,下面我将结合代码中发送和接收参数来让大家理解我们编程控制CAN总线上那些参数。

2.1 CAN总线数据帧

本文提供例程主要是CAN总线使用最多的数据帧为例,让大家理解数据帧传输由我们编程控制的参数。

先看下图回顾一下数据帧格式,其中有些字段内容由控制器自动完成,如:帧起始,CRC校验。而有些就是由我们编程控制,如:ID、数据等。

2.2 CAN发送代码

A.CAN发送数据结构

下图主要就是CAN发送由我们编程控制的参数。其实你会发现,主要就是上面帧格式中部分内容:ID、IDE、RTR、DLC、Data。

B.发送配置参数

下图为实际发送配置的参数。

2.3 CAN接收代码

CAN接收其实和发送类似,CAN总线上的字段就那些,在接收端接收的那些参数无非就是发送端发送出来的那些参数。

针对STM32内部集成的CAN,接收数据结构多了一个FMI参数,大概意思就是接收消息邮箱筛选器索引

接收操作

为方便初学者理解,这里这要就是使用中断接收CAN总线数据,在中断函数里面打印也主要是用于测试,一般实际项目打印不会出现在中断函数(打印相对耗时)。

3

位时序及传输波特率

同样,在前面《CANOpen系列教程04》中有讲述“位时序及传输波特率”的概念。其实,位时序间接决定了传输的波特率。换句话说,传输的波特率由位时序几个参数决定。

看下图,回顾一下波特率计算公式:

3.1 波特率配置代码

结合上图计算公式和下图代码,可以看出位时序中几个参数和波特率的关系。波特率为1M时,几个位时序参数可以配置为如下图值:

提示:

36M代表CAN时钟,具体要看时钟相关配置。

波特率固定,位时序参数可以不同。比如波特率固定为1M,位时序参数可以为上图配置;也可以修改其中的值,如修改位段1为CAN_BS1_5tq,位段2为CAN_BS2_3tq。只要遵循波特率计算公式即可。

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

    关注

    56

    文章

    2471

    浏览量

    459328
  • CANopen
    +关注

    关注

    6

    文章

    201

    浏览量

    42884
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66814
收藏 人收藏

    评论

    相关推荐

    【米尔-瑞萨RZ/G2UL开发板】5.CAN通讯进阶CANopen

    (Emergency),是当设备内部发生错误,触发该对象,发送设备内部错误 代码,提示 NMT 主站。紧急报文属于诊断性报文,一般不会影响 CANopen 通讯,其 CAN-ID 存储在 1014h
    发表于 03-31 16:19

    医疗设备CAN/CANopen总线数据传输解决方案

    盟通提出的医疗设备CAN/CANopen总线数据传输解决方案是基于IXXAT的高性能CAN设备,助力您实现稳定、便捷的数据采集和分析,为您的
    的头像 发表于 03-18 14:26 844次阅读
    医疗设备<b class='flag-5'>CAN</b>/<b class='flag-5'>CANopen</b>总线<b class='flag-5'>数据</b>传输解决方案

    思瑞浦发布高速CAN收发器TPT133X系列

    聚焦高性能模拟芯片和嵌入式处理器的半导体供应商思瑞浦3PEAK(股票代码:688536)正式推出3.3V供电、带故障保护功能的高速CAN收发器TPT133X系列产品。
    的头像 发表于 03-12 14:56 327次阅读
    思瑞浦发布高速<b class='flag-5'>CAN</b><b class='flag-5'>收发</b>器TPT133X<b class='flag-5'>系列</b>

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

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

    工业通讯中CANOPEN转EtherCAT的转换

    EtherCAT控制系统中,实现EtherCAT网络与CANOPEN网络的数据交互。它支持标准的CAN2.0A接口,符合CANOPEN CiA 401标准,同时具有2个RJ45以太网接
    发表于 12-12 11:31

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

    Modbus协议的消息解析为原始数据,例如传感器/执行器的状态或PLC的指令。2. 消息转换:将原始数据转换为CANopen协议的消息,以便在CAN总线上传输。 软件实现Mo
    发表于 12-08 17:02

    CTM系列隔离CAN收发器模块

    电子发烧友网站提供《CTM系列隔离CAN收发器模块.pdf》资料免费下载
    发表于 10-13 10:44 0次下载
    CTM<b class='flag-5'>系列</b>隔离<b class='flag-5'>CAN</b><b class='flag-5'>收发</b>器模块

    NXP CAN收发器的特点及应用

    面对各种不同种类的CAN通信收发器,你是否知道该如何选型?NXP推出了多种类型的CAN收发器,它们除了能满足基本的CAN通信需求外,每种
    的头像 发表于 09-05 14:05 1386次阅读
    NXP <b class='flag-5'>CAN</b><b class='flag-5'>收发</b>器的特点及应用

    接收CAN公共汽车上数据包的代码

    应用程序: 这个样本代码接收 CAN 公共汽车上的数据包, 使用协议中断的检测来与 CAN 公共汽车通信的失败率匹配, 并动态调整 M253 CANFD 的失败率 。 BSP 版本:
    发表于 08-29 06:24

    SM系列全隔离CAN收发芯片的“家族成员”,你了解多少?

    ZLG致远电子基于近二十年的总线隔离技术及工艺积累,推出SM系列集成电源隔离、CAN收发电路和信号隔离电路“三合一”的高集成度全隔离CAN收发
    的头像 发表于 08-16 12:12 1231次阅读
    SM<b class='flag-5'>系列</b>全隔离<b class='flag-5'>CAN</b><b class='flag-5'>收发</b>芯片的“家族成员”,你了解多少?

    【产品应用】SM系列全隔离CAN收发芯片的“家族成员”,你了解多少?

    ZLG致远电子基于近二十年的总线隔离技术及工艺积累,推出SM系列集成电源隔离、CAN收发电路和信号隔离电路“三合一”的高集成度全隔离CAN收发
    的头像 发表于 08-16 11:45 518次阅读
    【产品应用】SM<b class='flag-5'>系列</b>全隔离<b class='flag-5'>CAN</b><b class='flag-5'>收发</b>芯片的“家族成员”,你了解多少?

    CANopen通信系统基础知识分享

    在阅读有关CAN总线的文章时,你肯定会遇到“CANopen”这个词,它其实是一个基于CAN 的通信系统。CANopen 在基本术语中可以定义为在CA
    发表于 08-14 15:28 971次阅读
    <b class='flag-5'>CANopen</b>通信系统基础知识分享

    CAN发送的底层逻辑:CANwrite函数机制介绍

    这个系列是全新的系列,整个系列会通过实际操作,调试实际的代码,以CAN为例,完整的解析AUTOSAR的从
    的头像 发表于 07-17 15:47 3187次阅读
    <b class='flag-5'>CAN</b>发送的<b class='flag-5'>底层</b>逻辑:CANwrite函数机制介绍

    金升阳R4S系列CAN/485总线隔离收发模块介绍

    为满足客户多样的设计需求,金升阳通过技术方案革新及平台升级,紧跟市场步伐,加快完成了CAN/485总线隔离收发模块R4系列升级,推出国产化更高性价比的R4S系列
    的头像 发表于 06-30 14:42 839次阅读
    金升阳R4S<b class='flag-5'>系列</b><b class='flag-5'>CAN</b>/485总线隔离<b class='flag-5'>收发</b>模块介绍

    一个CANopen的应用样例(上)

    在基本的运行CANopen框架的演示项目中,除了一个已经运行CANopenNode组件程序的CANopen节点,还需要一台运行PCAN-View软件的PC机和USB-CAN转换器PEAK-CA
    的头像 发表于 06-23 15:57 1491次阅读
    一个<b class='flag-5'>CANopen</b>的应用样例(上)