如何用示波器测试CAN信号?
由7个不同的场组成。分别为帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结尾。
帧起始
(SOF)标志数据帧和远程帧的开始,仅由一个“显性”(逻辑电平“0”为显性电平,“1”为隐性电平)位组成,只有在总线空闲时才允许发送信号。
仲裁场
CAN总线上发送的每一条报文都具有唯一的一个11位或29位的ID。CAN总线状态取决于二进制数“0”而不是“1”,所以ID号越小,则该报文拥有越高的优先权。因此一个为全“0”标志符的报文具有总线传输上的最高优先权。
标准格式帧和扩展格式帧的仲裁场格式不同:
标准格式里,仲裁场由11位识别符和RTR位组成。识别符位为ID28…ID18。识别符后为RTR位。RTR位在数据帧必须为“显性”,在远程帧必须为“隐性”。
扩展格式里,仲裁场包括29位识别符ID28…ID0(基本ID 11位,扩展ID 18位)、SRR位、IDE位、RTR位。基本ID首先发送,其次是SRR、IDE位。
控制场
控制场由6个位组成。标准格式里的帧包括数据长度代码,IDE位及保留位R0。扩展格式里的帧包括数据长度和保留位R1和R0。保留位必须显性发送。
数据场
数据场由数据帧中的发送数据组成。它可以为0-8个字节,每字节包含了8个位,MSB先发送。
CRC场
CRC场包括CRC序列,其后是CRC界定符。CRC序列为循环冗余检验码。CRC序列之后是CRC界定符,它包含一个单独的“隐性”位。
应答场
应答场长度为2位。包含应答间隙和应答界定符。在应答声里,发送两个“隐性”位,当接收器正确地接收到有效报文,接收器就会在应答间隔期间向发送器发送“显性”位以示应答。
帧结尾
每一个数据帧和远程帧均由一标志序列界定。由7个“隐性”位组成。
远程帧目的在于请求发送具有同一标识符的数据帧;远程帧由6个不同位的场组成。分别为帧起始、仲裁场、控制场、CRC场、应答场、帧结尾。与数据帧相反,远程帧的RTR位是“隐性”的。
错误帧由错误标志和错误界定符两部分组成:
错误标志分为主动的错误标志和被动的错误标志。主动的错误标志由6个连续的“显性”位组成,被动的错误标志由6个连续的“隐性”位组成。
错误界定符:错误界定符包括8个“隐性”位。
过载帧包括过载标志和过载界定符。过载标志由6个“显性”位组成;过载界定符包括8个“隐性”位。
在充分了解CAN协议后,接下来通过示波器展示如何测试CAN总线。示波器在测试总线时一般使用触发和解码同时进行。触发可以根据实际的需求捕获预期事件,而解码则可以把捕获到的信号进行解码。
首先我们通过STB3演示板输出CAN信号并使用无源探头通过测试CAN_L和GND,接入到示波器,然后根据信号特征设置合适的电压和时基档位。
配置如下:
总线选择
首先进入触发菜单,类型选择为“总线”,总线协议设置为“CAN”。如图1所示。
图1:总线选择
信号配置
进入信号菜单,信源设置为信号输入通道,本次输入通道为C1。阈值电平需设置到波形区域内,通常为波形中部。如图2所示。
图2:信号配置
触发配置
进入触发设置菜单,设置合适的触发条件,如图3所示。从图可以看到触发条件分为开始条件、远程帧、ID、ID+数据、错误帧。从上节CAN协议可以知道,这些触发条件均为CAN协议的里规定的帧特征,是捕获CAN信号的核心。根据需求设定触发条件,进而监控CAN总线上的信息。
开始条件:即为数据帧和远程帧的帧起始(SOF)。把开始条件作为触发条件时,示波器捕获所有具有SOF特征的信号。
远程帧:远程帧的结构与数据帧类似但不传输数据,只为传输数据作初始化。其显著的标志是RTR为“隐性”电平。设置为此条件时,示波器将只捕获远程帧。
ID(地址):为数据帧和远程帧的仲裁场识别符。识别符ID越小优先级越高。
ID+数据:专门为数据帧准备的触发条件,可以指定具体的地址和数据在,方便捕获特定数据。
错误帧:专门检测符合错误标志的数据;用于监测总线上的错误帧。
图3:触发条件
总线配置
进入菜单将标准波特率配置为输入信号的波特率。CAN 最大支持1Mbit/s的传输速率。STB3演示板的波特率为50Kbit/s。如图4。
图4:波特图形
解码功能可以把触发捕获的信号进行解码并以一定格式显示出来。按下示波器的“Decode”按键进入解码菜单并开启总线功能,如图5所示。
图5:解码菜单
解码列表
设置总线并配置解码的行数。显示列表的作用是配置用于显示数据量并查看每帧数据。其中行数可配置1-7行;滚动表示当前正在查询的具体的数据,选中时数据行高亮,可查看屏幕上所有的解码数据。如图6。表示当前采集了43帧数据,正在查看第43帧数据。
图6:解码列表
显示选项
数据显示格式,支持二进制、十进制、十六进制、ASCAII码。如图7。
图7:显示格式
协议信号
与触发菜单类似,设定信源及阈值。需要注意的是,阈值电压需要设置于波形内,若阈值电平位于波形区域外则无法解码。
协议配置
配置与输入信息相同的波特率。
协议复制
若用户非常清楚触发或解码的协议信号和协议配置,可使用此功能快速复制触发参数到解码,或复制解码参数到触发。
通过触发配置和解码配置,我们可以看到CAN总线只要配置好触发条件、触发和解码的阈值电平、波特率以及数据显示格式即可得到CAN数据。
下图为STB3输出的CAN 信号输入到示波器,示波器的触发条件为开始条件,触发和解码的波特率均设置为50kbit/s即可得到CAN 的解码数据,如图8所示。
图8:总线解码
从上图中,我们可以看到,解码列表里显示了与波形相对应的解码数据:
序号代表从屏幕左边到右对应帧的数据。
Time代表每帧相对水平中间位置的时间。
Type代表解码得到的帧类型。是标准数据帧、远程帧或是扩展帧。
ID代表解码后的报文地址;设置为触发条件,可以对特定报文进行筛选。
Length代表解码得到的数据长度;数据长度0到8个字节。
Data代表数据帧的数据信息;测试者最关心的数据。
CRC为检验码;当校验数据不正确时,提示错误信息。
ACK为响应位,Yes表示有响应位。
此外还可以通过示波器放大功能,选定数据进行放大。总线解码显示与之对应的解码数据并通过不同颜色标注数据的地址、数据、检验码以及响应位。当显示空间不足时,无法显示的数据均以红点表示。当示波器解码结果与协议不一致时,示波器则会显示相应错误。