搜索
bottom↓
回复: 3

使用逻辑分析仪排查CAN总线错误

[复制链接]

出0入0汤圆

发表于 2023-6-6 13:01:55 | 显示全部楼层 |阅读模式

本文介绍如何使用逻辑分析仪测量分析CAN总线信号,解决实际工作中碰到的常见CAN总线错误问题。
1.        CAN节点数据收发过程
CAN总线是双绞线,分别是CANH和CANL两根线。总线上的信号电平分为这两条线之间的差分电压。
隐形电平:两条线静态时均为2.5V左右,压差为0,此时状态表示为逻辑1,也被称作隐性。
显形电平:当两条线电压值出现差异时,通常CAN_H=3.5V和CAN_L=1.5V,压差2-3V时,此时状态表示为逻辑0,也称作显性。
CAN总线上的逻辑是“线与”的形式,显性电平可以覆盖隐性电平,因此0可以覆盖1。

CAN总线以“帧(Frame)”形式进行通信。帧的格式如下图:



2.        CAN总线物理层抓包
由于CAN信号是差分信号,在测试过程中需要将差分信号转换为TTL信号,然后进行测试。如下图,使用NXP TJA1050芯片,提供CAN PHY差分接收能力。
逻辑分析仪采用Saleae Logic16(https://www.saleae.com/),将采样出来的实时数据送入电脑内存中,可以自动分析多种常用通信协议,包括CAN协议解析,直接得到分析数据。
   

3.        Saleae Logic16软件配置
Saleae Logic16软性可以从下面链接下载:https://www.saleae.com/downloads/
插上逻辑分析仪USB接口,打开Saleae Logic16软件,设置采样深度,采样频率,使用通道等配置。在Saleae Logic16中Analyzer选项增加CAN protocol协议。单击“Start”后就可以得到CAN Bus数据流。


4.        故障分析
通过Saleae Logic16抓取TJA 1050 PHY Rx脚的数据,并对数据进行CAN protocol协议分析。可以看到CAN波特率出现问题。由于波特率125K变为124K,导致CAN bus出现bit stuff error数据场填充错误。

If 5 zeros are sent in a row, CAN requires that a 1 be sent next. That extra bit will be thrown away by the receiver.
If 5 ones are sent in a row, CAN requires that a 0 be sent next. That extra bit will be thrown away by the receiver.

5.        CAN帧数据
将CAN波形转换为frame帧数据文本文件,可以看到NAK,表示发送节点没有收到其他节点回复的显性确认位,则被称为ACK 错误。

6.        总结
使用Saleae Logic16逻辑分析仪可以方便快捷从CAN PHY物理层定位网络通讯故障,是CAN总线开发测试的有效工具。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出100入312汤圆

发表于 2023-6-6 13:40:42 来自手机 | 显示全部楼层
不错,学习

出0入18汤圆

发表于 2023-6-6 13:48:09 来自手机 | 显示全部楼层
这是卖逻辑分析仪的吧

出0入0汤圆

发表于 2023-6-11 17:26:52 | 显示全部楼层
谢谢分享~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-6 09:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表