历史上的今天
返回首页

历史上的今天

今天是:2024年10月23日(星期三)

正在发生

2019年10月23日 | 如何用Pico示波器进行CAN总线解码分析

2019-10-23 来源:21ic

Pico示波器具有串行解码的功能,能够对CAN、FlexRay、I²C、I²S、SPI、LIN或UART等串行总线进行解码。Pico示波器比较适合做串行解码,因为它们的深度存储器可以让软件采集较长时间、不间断的数据,尤其是6000系列能够在几秒内采集数千个数据帧存入到512M的样本存储器。下面将介绍如何用一个款Pico示波器进行CAN总线数据解码。


1关于CAN总线解码

1.1 什么是CAN总线?

数据通信时,物理线路上传输的信号是由一系列高低电平组成的,这些高低电平携带了我们所需要的信息,在数据接收端,我们需要将这些物理电平按照原始的编码规则进行解析,从而得到实际的物理信号。


CAN(控制器区域网络)总线是一种在汽车和工业机械中使用的串行协议,允许微控制器相互通讯。该标准最初由 Robert Bosch GmbH 于 1983 年制定。它使用双绞线上传输差分信号,分别为CAN高(CAN H )和CAN低(CAN L),当线路受到共模干扰之后,信号差值不变,信号依然能够正确被解析。


1.2 CAN总线上传输的电平特点

CAN 总线上发布了ISO11898和ISO11519两个通信标准,分别对应高速CAN和容错CAN。此两个标准差分电平的特性不同。本文主要介绍如何用Pico示波器进行ISO11898标准的CAN总线解码。

如何用Pico示波器进行CAN总线解码分析

CAN高电平大概为3.5V左右,CAN低电平大概为1.5V左右,CAN差分电平大概在2V左右。一般情况下,我们可以从三种CAN总线波形上进行解码:


1)从CAN-H总线上传输的电平,阈值设置为3V左右即可

2)从CAN-L总线上传输的电平,阈值设置为1.6V左右即可

3)从差分波形(CANH-CANL)上进行解码,阈值设置为1.5左右即可。从差分波形上解码更加准确,因为差分波形滤除了线路上的共模干扰信号。

但是很遗憾,目前PicoScope6软件的串行解码功能只能从CANH或CANL波形上进行解码,暂时还无法实现从差分波形上进行解码。


2 PicoScope6 串行解码功能

如何用Pico示波器进行CAN总线解码分析

3解码设置

Pico的任何一台示波器都具有串行解码的功能,不同系列的区别在于示波器硬件参数高时,采集到的波形更加平滑,噪声小。在进行解码时,我们可以只从CAN高波形上进行解码,或只从CAN低波形上进行解码,或者同时对CANH和CANL波形进行解码。


3.1 仅从CAN低波形上进行解码设置

1将CAN网络中的CANL端接入到示波器A通道(示波器通道任意选择)探头的正极,CAN网络的GND连接探头的负极。


2 点击PicoScope6工具菜单,选择串行解码功能。弹出串行解码设置窗口。

如何用Pico示波器进行CAN总线解码分析

1)设置A通道协议:CAN Low

2)设置CAN低判断阈值,如1.6V。该阈值用于判断CAN-L电平是“0”或“1”.

3)设置总线波特率,即目前测试网络的波特率,例如500K波特。

4)设置显示模式,选择“在视图中”或“在窗口中”查看CAN数据。

In View: 在视图中,在波形显示窗口查看解码之后的CAN数据。

In Window: 在窗口中,在表格中查看解码之后的CAN数据。


3.2仅从CAN高波形上进行解码设置

1将CAN网络中的CANH端接入到示波器A通道(示波器通道任意选择)探头的正极,CAN网络的GND连接探头的负极。


2 点击PicoScope6工具菜单,选择串行解码功能。弹出串行解码设置窗口。

如何用Pico示波器进行CAN总线解码分析

设置步骤如下:

1)设置A通道协议:CAN High

2)设置CAN低判断阈值,如3V。该阈值用于判断CAN-L电平是“0”或“1”.

3)设置总线波特率,即目前测试网络的波特率,例如500K波特。

4)设置显示模式,选择“在视图中”或“在窗口中”查看CAN数据。

In View: 在视图中,在波形显示窗口查看解码之后的CAN数据。

In Window: 在窗口中,在表格中查看解码之后的CAN数据。


3.3从CAN高波形和CAN低波形上同时解码


1将CAN网络中的CANH端接入到示波器A通道(示波器通道任意选择)探头的正极,CAN网络的GND连接探头的负极。


2将CAN网络中的CANH端接入到示波器B通道(示波器通道任意选择)探头的正极,CAN网络的GND连接探头的负极。


注意:CANH和CANL使用的测试通道可以自由选择。只是在进行解码设置时,对应正确即可。


3 点击PicoScope6工具菜单,选择串行解码功能。弹出串行解码设置窗口。

在一个窗口分别设置CANH和CANL的解码设置,具体参考3.1和3.2章节的设置。如下图所示:

如何用Pico示波器进行CAN总线解码分析

4 使用注意事项


Pico示波器进行串行解码有一个技术难点:Pico示波器的解码以完整的一个CAN数据帧为单位,即只有采集到完整的一帧CAN报文,才能将该数据帧完整的解析出来。


1 采集CANH和CANL波形时,注意时基的设置。即保证每一个波形页面至少能够采集到一个完整的数据帧,此时才能够解析出CAN报文。对于CAN总线来说,时基设置在1ms/div或者大于1ms/div即可。


2 注意采样率的设置,要保证采集到的波形不失真。例如CAN总线的波特率为500Kbps,那么采样率只有大于1MS/s,才能够采集到正确的波形(满足乃奎斯特定律)。


3 示波器的波形(一个显示页面)与波形之前是不连续的,总是或多或少一些间隙。所以当在进行CAN总线解码时,波形页面的边缘会有一些无法被解析的数据帧,主要原因是波形页面边缘将一个完成的数据帧截断了,以至于无法得到争取的解析。如下图所示:

如何用Pico示波器进行CAN总线解码分析


推荐阅读

史海拾趣

Curtis Industries公司的发展小趣事

为了进一步扩大市场份额,Curtis Industries公司积极拓展市场布局。公司在全球范围内设立了多个生产基地和研发中心,以便更好地满足不同地区客户的需求。同时,公司还加强了与上下游企业的合作,形成了完整的产业链。这些举措不仅提升了公司的产能和研发实力,还为公司带来了更多的商业机会。

芯源半导体(CW)公司的发展小趣事

随着市场竞争的加剧,芯源半导体(CW)公司意识到品质管理的重要性。公司加强了对原材料采购、生产过程和产品质量控制的管理,建立了完善的质量管理体系。同时,公司还引入了先进的检测设备和技术手段,以确保产品的稳定性和可靠性。这些措施使芯源半导体(CW)公司的产品质量得到了显著提升,赢得了客户的信任和好评。

AIC [Analog Intergrations Corporation]公司的发展小趣事

为了进一步提升公司的竞争力,芯源半导体(CW)公司开始实施国际化战略。公司积极拓展海外市场,参加国际展会和论坛,与国际同行进行交流与合作。同时,公司还设立了海外研发中心,引进国际优秀人才和技术资源,以加强公司的研发实力和市场竞争力。这些举措使芯源半导体(CW)公司在国际市场上逐渐崭露头角。

Ferranti Electric Inc公司的发展小趣事

为了更好地满足全球客户的需求,Ferranti Electric Inc公司积极实施全球化战略。公司不仅在英国本土拥有生产基地和研发中心,还在全球范围内设立了多个分支机构和办事处。通过全球化布局,公司能够更好地了解不同市场的需求和特点,为客户提供更加定制化的产品和服务。同时,公司也积极参与国际竞争和合作,提升其在全球电气行业的影响力。

DC Components公司的发展小趣事

DC Components公司在追求经济效益的同时,也积极履行社会责任。公司注重环保和可持续发展,通过采用环保材料和节能技术,降低生产过程中的环境影响。此外,公司还积极参与公益活动,回馈社会,为社区的和谐发展做出了积极贡献。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实基础。

AXSEM公司的发展小趣事

DC Components公司在追求经济效益的同时,也积极履行社会责任。公司注重环保和可持续发展,通过采用环保材料和节能技术,降低生产过程中的环境影响。此外,公司还积极参与公益活动,回馈社会,为社区的和谐发展做出了积极贡献。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实基础。

问答坊 | AI 解惑

电子密码锁_源程序(单片机控制)

摘要:本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。系统能完成开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。除上述基本的密码锁功能外,还具有调电存储、声光提示等功能,依据实际的情况还可以添加遥控功能 ...…

查看全部问答>

青越锋功能介绍——完善的泪滴处理功能

在我们熟知的PCB设计软件,给出的泪滴,在功能上并不是完善的,只是纯粹的将过孔和焊盘,补上泪滴就OK,并没有考虑到有些错误,如:过孔和焊盘若是有小段track,到底是补还是不补泪滴。针对这样的一个情况,青越锋从DRC角度出发,是不会补泪滴的, ...…

查看全部问答>

wince 启动停止了。

我在编写流驱动的时候,系统启动突然停止了。 串口输出信息: [dm9: Tries to map io space with 18000000 [dm9: The mapped address is D0B80000 [dm9: Chip signature is 90000A46 [dm9: Chip signature is 90000A46 STRINGS:***@@****DL ...…

查看全部问答>

SAEJ1939与SJA1000

第一次开发CAN总线,由于任务急就用周立功老师开发的“sja1000_Peli”, 请问这个库能用SAEJ1939协议吗? 其中已知PGN=0xFD08,SA=0X3F, 那么“WriteSJARegBlock(16,Recevive_CAN_Filter,8);   //配置验收代码/屏蔽寄存器”时 ...…

查看全部问答>

89s51与计算机串口下载

   请问能用什么方式直接把程序通过计算机串口直接下载到89s51芯片中。先谢过了!…

查看全部问答>

订制较大容量的内核

我想用PBWORKS订制一个包括简体中文,繁体中文,和英文的系统,可是每次Make Image的时候都过不了,NK也开到足够在了. 请问各位要同时包括简体和繁体中文要注意哪些事项啊?…

查看全部问答>

Keil MDK的安装与工程建立

KEIL MDK开发工具源自德国 Keil 公司,被全球超过 10 万的嵌入式开发工程师验证和使用,是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。KEIL MDK 集成了业内最领先的技术,包括μVision4集成开发环境与RealView 编译器。支持ARM7、AR ...…

查看全部问答>

avr studio打开.cof报错

各位高手,我用ICCAVR编译了一个小程序,现在avr studio一加载ICCAVR编译生成的.cof就开始报错。而以前是好的,现在加载以前的文件也是好的, 报错提示:LDLED.cof  is not a AVR Studio 4-savefile 会是什么原因呢?请高手指点指点…

查看全部问答>

申请MSP-EXP430FR5739实验板套件

相用MSP-EXP430FR5739实验板套件做个智能小车学习…

查看全部问答>

一个中断嵌套的思考

今天想到个问题,不知道大家有没有人做过,如果将一个中断的处理函数中,调用一个会出发中断的函数会有什么结果。     我的想法是这样的:如果在中断处理函数中调用一个比自己优先级低的中断,那么这个高优先级的中断一直无法结束,那 ...…

查看全部问答>