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

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

3天内不再提示

CAN基础:电平、逻辑、报文是怎么来的

电子设计 来源:电子设计 作者:电子设计 2020-12-26 02:46 次阅读

CAN总线的报文是怎么产生以及收发的,遇到通讯异常的问题时从什么角度分析?这篇文章将会带您快速了解报文的传输原理。

1、节点通讯的原理

图1 CAN节点示意图

如图1所示是一个CAN节点的示意图,整体包括了CAN收发器、CAN控制器MCU。我们以节点发送报文为例,当我们使用上位机软件发送一段报文时,报文会通过MCU发送给CAN控制器。CAN控制器将这段报文解析成逻辑信号后,再发送给CAN收发器。CAN收发器根据CAN-bus标准将接收到的逻辑信号转换成电信号,再通过CAN_H和CAN_L两根总线将电信号传到总线上的其他节点上。

简单说就是MCU将报文发送给控制器,控制器将报文转换成符合规范的CAN报文后,通过CAN收发器以电信号的形式在总线上进行传输。

2、电平是如何转换成逻辑?

图2 CAN-bus信号电平

如图2所示,CAN总线使用的是双线差分信号,所以分为CAN_H和CAN_L两根总线,根据两根总线之间电压的差值大小来判断其显隐性。而线缆上传输的电平信号只有两种可能,分别为显性电平和隐性电平,其中显性电平代表逻辑0,隐性电平代表逻辑1。

当接受到报文时,首先就要通过CAN收发器将电信号转换成逻辑信号。根据图3所示的ISO11898高速CAN电平标准进行判断,但是线路上经常会受到各种干扰,为了保证传输的稳定性。所以差分电平小于0.5V就是隐性电平代表逻辑1,差分电平大于0.9V就是显性电平代表逻辑0。

图3 ISO11898高速CAN电平

3、逻辑信号如何转换成报文?

CAN控制器是CAN-bus设备的核心元件,集成了CAN规范中数据链路层的全部功能,能够自动完成CAN-bus协议的解析。

当CAN收发器将逻辑信号传送给CAN控制器后,CAN控制器会将逻辑信号转换成符合CAN规范的CAN帧。而CAN帧的类型包括了数据帧、远程帧、帧间空间、错误帧和超载帧。

图4 标准帧格式

以最常见的数据帧为例,图4就是标准帧的格式,包括了帧起始、仲裁场、控制场、数据场等。

图5 报文解析实例

图5就是报文解析的实例,当接受到对应的逻辑信号后,CAN控制器就会根据规定的CAN帧格式进行解析,并将报文发给MCU。

4、上位机报文显示

图6 上位机报文显示

如图6所示,当CAN控制器完成了CAN-bus协议的解析后,就会将报文传输到MCU中在上0位机软件中进行显示。像帧起始、CRC场、ACK场这样的数据不读取,所以我们上位机软件只显示数据帧类型、帧ID和帧数据等信息

5、总结

对于CAN总线报文错误来说,百分之90的错误都来自于物理层,而CANScope总线分析仪可以对CAN 波形与报文同步发送和接收,快速对CAN总线进行各项测试,帮助工程师们快速完成故障定位和问题排查。

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

    关注

    57

    文章

    2725

    浏览量

    463464
  • 电平
    +关注

    关注

    5

    文章

    360

    浏览量

    39860
  • 逻辑
    +关注

    关注

    2

    文章

    832

    浏览量

    29456
收藏 人收藏

    评论

    相关推荐

    逻辑电平输出是什么意思

    信号。 逻辑电平输出的定义 逻辑电平输出是指数字电路中的输出端能够产生的电压水平,这些电压水平用于表示逻辑状态。在数字电路中,通常使用两个不
    的头像 发表于 09-20 17:32 493次阅读

    CAN总线的报文类型介绍

    CAN(Controller Area Network)总线是一种广泛使用的串行通信协议,特别适用于汽车和工业自动化领域。CAN总线上的报文类型主要可以分为以下几种,每种类型都有其特定的用途和格式。
    的头像 发表于 09-03 14:20 1157次阅读

    CAN SIC收发器助力复杂CAN网络高效可靠通信(2)

    SIC的作用机理在CAN总线上,通过CAN_H和CAN_L两根线上的电位差表示CAN信号。CAN
    的头像 发表于 08-09 08:37 1370次阅读
    <b class='flag-5'>CAN</b> SIC收发器助力复杂<b class='flag-5'>CAN</b>网络高效可靠通信(2)

    CYT2BL和SDL v8.0.0是否有可能实现以相同ID发送和接收CAN报文(RxID、TxID)的功能?

    我使用的是 CYT2BL 和 SDL v8.0.0。 我想发送和接收具有相同 ID 的 CAN 报文。 1.是否有可能实现以相同 ID 发送和接收 CAN 报文(RxID、TxID)
    发表于 07-23 06:12

    TSMaster 中不同总线报文消息过滤的操作方式

    TSMaster软件平台支持对不同总线(CAN、LIN、FlexRay)报文和信号的过滤,包括全局接收过滤、数据流过滤、窗口过滤、字符串过滤、可编程过滤,针对不同的总线信号过滤器的使用方法基本相
    的头像 发表于 06-22 08:21 1425次阅读
    TSMaster 中不同总线<b class='flag-5'>报文</b>消息过滤的操作方式

    如何通过CAN报文TC375传输数据?

    从示例 MCMCAN_1_KIT_TC375_LK 和 ADC_Single_Channel_1_TC375_LK 开始,我必须用 CAN 报文发送从模拟通道获取的数值。 我就是这么做的: void
    发表于 05-28 08:30

    CAN报文为什么会发送失败?

    CAN总线调试过程中出现报文发送失败。很多工程师都对此只知其一不知其二,今天我们就以CAN报文发送失败的问题做一次探讨。在了解
    的头像 发表于 04-12 08:25 1929次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>报文</b>为什么会发送失败?

    CAN总线波形中为什么ACK电平偏高?

    在观察CAN通信波形时,我们会发现差分电平在ACK段突然增高,这是什么原因导致的呢?本文结合测试实例对ACK电平偏高的原因做简单分析。ACK简介ACK的作用:确认一帧报文是否正常接收。
    的头像 发表于 03-28 08:23 1097次阅读
    <b class='flag-5'>CAN</b>总线波形中为什么ACK<b class='flag-5'>电平</b>偏高?

    TC275多路CAN节点,报文接收时需要开启多路的CAN接收中断吗?

    TC275配置使用一路CAN0时,收发都可以,收报文是开启的CAN0接收中断,然后接收报文;现在使用两路CAN
    发表于 02-20 08:27

    双向逻辑电平转换器电路图分享

    双向逻辑电平转换器是一种电子器件,用于在不同电压逻辑电平之间进行转换。它可以将一个逻辑电平转换为
    的头像 发表于 02-19 16:54 3149次阅读
    双向<b class='flag-5'>逻辑</b><b class='flag-5'>电平</b>转换器电路图分享

    TC387模块CAN0的节点2作为CANA使用,CANA既收不到报文也发不出报文如何解决?

    TC387模块CAN0的节点2作为CANA使用,CAN1的节点0作为CANB使用,配置基本相同。但CANB的通信正常,而在TJA1145正常情形下,CANA既收不到报文,也发不出报文
    发表于 02-19 06:43

    TC39x的can报文过滤规则怎么设置?

    TC39x的can报文过滤规则怎么设置
    发表于 02-19 06:12

    请问TC297如何配置接收多个id的CAN报文

    例程中使用了IfxMultican_Can_MsgObj_initConfig这个函数,里面设置了int型的messageId ,只能接收messageId的报文。我看到有
    发表于 02-02 07:45

    CAN总线报文数据一致性校验

    比如ECU1接收ECU2发出的一帧0x100报文,协议层是不会区分是ECU1发的,还是非法接入OBD的CAN盒发的?如果ECU1接收到非ECU2发出的0x100报文岂不是很危险?
    的头像 发表于 01-24 10:03 1713次阅读
    <b class='flag-5'>CAN</b>总线<b class='flag-5'>报文</b>数据一致性校验

    [ElfBoard] YOU CAN YOU UP 之CAN总线

    出现问题,缺点是信号反射严重,无法用于高波特率和远距离传输,如下图所示: 电平标准 CAN_High - CAN_Low < 0.5V 时候为隐性的,逻辑信号表现为\"
    发表于 12-05 10:45