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

    关注

    58

    文章

    3012

    浏览量

    471478
  • CANopen
    +关注

    关注

    8

    文章

    456

    浏览量

    47584
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CAN如何进行录波,接收所有数据

    模式RT_CAN_MODE_LISEN,就能够正常使用,之前工作在RT_CAN_MODE_NORMAL普通模式。但是底层并没有提供有这个是普通还是监听模式的设置的接口。 5)有没有做过这块C
    发表于 10-09 09:12

    CANopen转Profient网关协议介绍

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

    Texas Instruments TCAN1043A-Q1汽车级CAN FD收发器技术解析

    Texas Instruments TCAN1043A-Q1汽车级CAN FD收发器是一款高速控制器局域网 (CAN) 收发器,符合ISO 11898-2:2016高速
    的头像 发表于 09-24 15:25 664次阅读
    Texas Instruments TCAN1043A-Q1汽车级<b class='flag-5'>CAN</b> FD<b class='flag-5'>收发</b>器技术解析

    ‌TCAN1162-Q1汽车级CAN FD收发器技术解析

    Texas Instruments TCAN1162-Q1汽车级CAN FD收发器是一款高速控制器局域网 (CAN) 收发器,符合ISO 11898-2:2016高速
    的头像 发表于 09-19 14:57 563次阅读
    ‌TCAN1162-Q1汽车级<b class='flag-5'>CAN</b> FD<b class='flag-5'>收发</b>器技术解析

    移植CANfestival,发现can无法接收数据,为什么?

    最近在研究Canopen协议,在f407的板子上移植了canfestival协议栈 移植成功后遇到一些问题,总线上我在没有发数据的情况下还是可以进入can接收中断,我不清为什么会进入中断,后来我自己
    发表于 09-11 07:46

    TCAN341x系列3.3V CAN FD收发器技术解析与应用指南

    Texas Instruments TCAN341x 3.3V CAN FD收发器是控制器局域网(CAN)FD收发器,符合ISO 11898-2:2016高速
    的头像 发表于 09-05 10:23 833次阅读
    TCAN341x<b class='flag-5'>系列</b>3.3V <b class='flag-5'>CAN</b> FD<b class='flag-5'>收发</b>器技术解析与应用指南

    ProfiNet转CAN/CANopen网关技术详解

    在PROFINET 侧作为 IO 从站,通常连接西门子等品牌的 PLC;在 CANopen 侧则作为主站,可以连接诸如伺服驱动器、变频器、电机等 COE 设备;在 CAN 自由口模式下,用户可以自由收发
    的头像 发表于 08-26 16:54 579次阅读
    ProfiNet转<b class='flag-5'>CAN</b>/<b class='flag-5'>CANopen</b>网关技术详解

    CAN收发器:总线信号的“翻译官”

    CAN总线通信中,CAN收发器(Transceiver)扮演着至关重要的角色——它就像一位“翻译官”,负责将微控制器(MCU)的数字信号转换为总线上的差分信号,同时把总线信号翻译回MCU能
    的头像 发表于 06-27 11:34 1653次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>收发</b>器:总线信号的“翻译官”

    盟通方案|CANopen数据链路配置工具

    CANopen产品开发过程中,并非所有应用场景的CANopen网络拓扑都是确定的,这需要CANopen网络能够灵活配置设备间对象字典的收发关系。显然,如果通过编程或者读取每个从设备E
    的头像 发表于 05-30 14:19 584次阅读
    盟通方案|<b class='flag-5'>CANopen</b><b class='flag-5'>数据</b>链路配置工具

    三格电子-ProfiNet 转CAN/CANopen网关

    CANopen
    三格电子科技
    发布于 :2025年03月31日 14:53:23

    使用ES32实现CANopen从机

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

    EtherCAT转CANopen配置CANopen侧的PDO映射

    在工业自动化领域,EtherCAT和CANopen是两种广泛应用的通信协议。它们各自具有独特的优势,但在某些应用场景下,需要将这两种协议进行转换以实现设备间的高效数据交换。本文将详细介绍如何在
    的头像 发表于 03-26 17:56 830次阅读
    EtherCAT转<b class='flag-5'>CANopen</b>配置<b class='flag-5'>CANopen</b>侧的PDO映射

    CANOPEN协议详细介绍

             CANOPEN协议是基于CAN总线协议建立的应用层协议。 CANOPEN协议的基本通信单元叫做“通信对象”,他们结构相同,包括funciton Code、Node-ID、DLC
    发表于 03-26 15:27 0次下载

    广成科技CANopenCAN模块的应用场景

    以下是广成科技CANopenCAN模块在不同领域的具体应用示例。
    的头像 发表于 02-17 11:28 971次阅读

    茂睿芯全系列车规CAN收发器均已实现量产出货

    茂睿芯全系列车规CAN收发器产品目前均已实现量产出货,包括:MCAN1042-Q1、MCAN1044-Q1、MCAN1043-Q1、MCAN1145-Q1,新款集成信号改善技术的CAN
    的头像 发表于 12-10 13:41 1260次阅读
    茂睿芯全<b class='flag-5'>系列</b>车规<b class='flag-5'>CAN</b><b class='flag-5'>收发</b>器均已实现量产出货