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

    关注

    56

    文章

    2471

    浏览量

    459339
  • 电平
    +关注

    关注

    5

    文章

    338

    浏览量

    39566
  • 逻辑
    +关注

    关注

    2

    文章

    818

    浏览量

    29293
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

    比如ECU1接收ECU2发出的一帧0x100报文,协议层是不会区分是ECU1发的,还是非法接入OBD的CAN盒发的?如果ECU1接收到非ECU2发出的0x100报文岂不是很危险?
    的头像 发表于 01-24 10:03 718次阅读
    <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

    CAN总线和电平逻辑介绍

    差分传输,为了避免信号的反射和干扰,还需要在CAN_H和CAN_L之间接上120欧姆的终端电阻。 每一个设备既可做主设备也可做从设备。CAN总线的通信距离可达10千米(速率低于5Kbps),速度可达1Mbps(通信距离小于40M
    的头像 发表于 11-09 18:11 878次阅读
    <b class='flag-5'>CAN</b>总线和<b class='flag-5'>电平</b><b class='flag-5'>逻辑</b>介绍

    CAN电气特性属性

    显性电平表示逻辑“0”,此时 CAN_H 电平CAN_L 高,分别为 3.5V 和 1.5V,电位差为2V。隐形
    的头像 发表于 10-09 16:10 568次阅读
    <b class='flag-5'>CAN</b>电气特性属性

    影响报文超时上报的机制有哪些

    前言 最近遇到一个CAN报文超时Notification不上报导致ECU不休眠的偶发问题,本文分享解决问题的思路及影响报文超时上报的机制,希望能给各位读者一点启发。 参考文档: 1.
    的头像 发表于 08-07 09:16 897次阅读
    影响<b class='flag-5'>报文</b>超时上报的机制有哪些

    CAN电气特性属性

    CAN 电气属性 CAN 总线使用两根线来连接各个单元:CAN_H 和 CAN_L,CAN 控制器通过判断这两根线上的电位差来得到总线
    的头像 发表于 07-25 10:30 705次阅读
    <b class='flag-5'>CAN</b>电气特性属性

    求一种基于infineonPSOC62开发板的多功能CAN报文记录仪设计方案

    在汽车领域,经常会涉及到CAN报文收发,目前应用最广泛的就是是CAN2.0B协议。CAN报文对整车控制起着至关重要的作用。
    的头像 发表于 07-18 16:17 763次阅读
    求一种基于infineonPSOC62开发板的多功能<b class='flag-5'>CAN</b><b class='flag-5'>报文</b>记录仪设计方案

    一帧CAN报文多少字节

    一帧CAN FD报文位数 根据CAN FD帧结构组成,可以算出一帧CAN FD报文位数: CAN
    的头像 发表于 07-18 10:48 4853次阅读

    电平设计基础:差分逻辑电平匹配

    差分逻辑电平之间的匹配,主要应用于时钟和高速信号。
    的头像 发表于 06-25 14:56 1796次阅读
    <b class='flag-5'>电平</b>设计基础:差分<b class='flag-5'>逻辑</b><b class='flag-5'>电平</b>匹配

    M453单片机的CAN中断接力发送时发送报文数量丢失怎么解决?

    1、我使用新唐M453单片机,使用CAN1进行实验,将CAN1的后4个报文缓存RAM做为发送缓冲区来使用。通过线程启动报文的发送,在中断中通过查询发送请求寄存器
    发表于 06-15 07:26

    【教程】CAN报文固定协议转发

    CAN总线通信的应用领域中,很多客户需要将CANID放在CAN报文中,这样更方便接入不同的设备,有利于用户通过模块更方便的组建自己的网络,使用自定的应用协议。但是要实现这样的应用,用户往往需要
    的头像 发表于 05-15 10:30 481次阅读
    【教程】<b class='flag-5'>CAN</b><b class='flag-5'>报文</b>固定协议转发

    CAN报文固定协议转发教程

    CAN总线通信的应用领域中,很多客户需要将CANID 放在CAN报文中,这样更方便接入不同的设备,有利于用户通过模块更方便的组建自己的网络,使用自定的应用协议。但是要实现这样的应用,用户往往需要
    的头像 发表于 05-12 10:40 605次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>报文</b>固定协议转发教程