用逻辑分析仪分析CAN数据

(一)CAN的帧格式:

1字节(Byte)等于8位(bit)。

CAN(Controller Area Network)帧格式是一种用于在汽车和工业环境中进行可靠通信的协议。CAN帧的基本格式如下:

1. 帧起始(Start of Frame, SOF):1位,标志帧的开始,总是显性位(0)。

2. 标识符(Identifier):11位(标准格式)或29位(扩展格式),用于标识帧的内容和优先级。标识符越小,优先级越高。

3. 远程传输请求(Remote Transmission Request, RTR):1位,用于区分数据帧(0)和远程帧(1)。

4. 控制字段(Control Field):6位,包含数据长度代码(DLC),指示数据字段的字节数(0-8字节)。

5. 数据字段(Data Field):0-8字节,包含实际传输的数据。

6. 循环冗余校验(Cyclic Redundancy Check, CRC):15位,用于错误检测,包括CRC序列和CRC界定符(1位隐性位)。

7. 确认字段(Acknowledgment Field, ACK):2位,包括ACK槽(发送节点发送隐性位,接收节点确认时发送显性位)和ACK界定符(1位隐性位)。

8. 帧结束(End of Frame, EOF):7位,标志帧的结束,总是隐性位(1)。

9. 间隔字段(Intermission Field):3位,用于分隔连续帧,总是隐性位(1)。

发送了一针 ID为0 数据域为00 11 22 33 44 55 66 77的数据,可以看出逻辑分析是可以根据CAN H 或者 CAN L 之间一段的信号来解析数据,但是需要我们设置正确的阈值电压,CAN L 解析出来的数据如下:

还有一个疑问,这个CRC校验是怎么算出来的呢?从CAN2.0的Spec了解到,CRC的计算的值从SOF开始,到数据字段(Data Field),多项式:

                                          P(x) = x15+ x14+ x10+ x8+ x7+ x4+ x3+ 1

 通过在线CRC计算网站,输入我们的数据,计算CRC的值:

1.扩展帧相比与标准帧的数据发送都是8字节,优势在哪里?

  • 标准帧:使用11位的标识符。

  • 扩展帧:使用29位的标识符(11位基础标识符 + 18位扩展标识符)。

  • 优势:扩展帧的29位标识符提供了更大的地址空间,允许更多的唯一标识符。这对于复杂的系统或需要大量节点的网络非常有用。

2.CAN的远程传输请求(Remote Transmission Request, RTR):1位,用于区分数据帧(0)和远程帧(1)。 控制字段(Control Field):6位,包含数据长度代码(DLC),指示数据字段的字节数(0-8字节)。是由用户提供的,还是默认自定义的,作用是什么?

远程传输请求(RTR)

  • 定义:RTR位用于区分数据帧和远程帧。

    • 数据帧:RTR位为0,表示该帧包含数据。

    • 远程帧:RTR位为1,表示该帧不包含数据,而是请求另一个节点发送特定的数据帧。

  • 提供方式:RTR位是由用户或应用程序在构造CAN帧时指定的。用户根据通信需求决定是发送数据帧还是远程帧。

控制字段(Control Field)

  • 定义:控制字段包含数据长度代码(DLC),用于指示数据字段的字节数(0-8字节)。

  • 提供方式:DLC是由用户或应用程序在构造CAN帧时指定的。用户根据要发送的数据长度设置DLC值。

  • 作用

    • 数据长度指示:DLC告诉接收方数据字段中有多少字节的数据。这对于正确解析和处理数据帧至关重要。

    • 帧类型指示:控制字段还包含其他信息,如帧类型(标准帧或扩展帧)。

(二)逻辑分析仪测量CAN的方法:

连接 1 通道至 CAN_L,黑色信号线为接地信号线,连接收发器的 GND。

因为在电路设计中一般都会对总线端的电源做隔离,所以在测 CAN 时,两个探头分别接 CAN_H 和 CAN_L 信号,但是探头接地夹需要接总线端的参考地,一般是 CAN 收发器芯片的 GND 引脚,不要接到 MCU 的 GND 上去了。

逻辑分析仪接在CAN芯片左右端问题:

接线:单片机的CAN_TX(PB6)接到逻辑分析仪的任意一个通道上,GND和单片机共地。注意,依据手册,不能直接把逻辑分析接到CAN驱动芯片输出的CAN_H和CAN_L上。

解码成功后对波形展开,配合协议列表显示,可以知道我们对地址为”0x100″的设备发送了“01 23 45 67 89 AB CD EF”等数据。

CAN有专门的CAN解码装置:

开发板CANH----> CAN卡H 开发板CANL----> CAN卡L

逻辑分析仪抓取can,稍微不一样,逻辑分析仪主要是一个GND和通道,按如下方式接。

通道0的通道0--->接开发板CANL          通道0的GND--->接开发板GND

需要注意的是:2V电平设置   波特率和采集频率   主要是阈值电平,默认是1V,要设置2.0V

图片参考自:

【DSView逻辑分析抓取波形CAN步骤-硬件连接-数据解析-底层波形认识CAN-工具使用】-CSDN博客

使用逻辑分析仪抓取CAN总线数据_逻辑分析仪采集can数据-CSDN博客

(三)CAN的电平标准:

下面是只测量CAN_L数据线,逻辑电平标准:

采样频率一般高于被测信号频率的10倍才能更好还原信号:

触发阈值一定设置正确,否则不能很好分辨逻辑1和逻辑0:

下面试CAN解码出来的数据:

(四)CAN终端电阻的新加法:

  CAN通信时,终端电阻比较常见的方案是用120欧姆,但是还有一种方案是用2个62欧姆电阻串联,同时在两个电阻中间用一个4.7nF电容接地。

 1、CAN总线上不接终端电阻:

 2、CAN总线上接120欧姆终端电阻:

3、CAN总线上接2个串联的62欧姆终端电阻,并且在两个电阻中间用4.7nF电容接地:

通过以上波形对比分析可以得出如下结论:

        CAN总线上不接终端电阻时,CAN波形严重失真;当CAN总线上接120欧姆终端电阻时,CAN_H和CAN_L存在明显的噪声波动;CAN总线上接2个串联的62欧姆终端电阻,并且在两个电阻中间用4.7nF电容接地时,对CAN信号质量改善明显。
原文链接:https://blog.csdn.net/weixin_43244476/article/details/134693877

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值