由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表示有响应位。
此外还可以通过示波器放大功能,选定数据进行放大。总线解码显示与之对应的解码数据并通过不同颜色标注数据的地址、数据、检验码以及响应位。当显示空间不足时,无法显示的数据均以红点表示。当示波器解码结果与协议不一致时,示波器则会显示相应错误。
版权声明:本**所有文章皆为鼎阳硬件设计与测试智库专家呕心沥血之原创。希望我们的经验总结能够帮助到更多的硬件人,欢迎转载!我们鼓励分享,但也坚决捍卫我们的权益。引用请注明出处——“鼎阳硬件设计与测试智库”**号(SiglentThinkTank)。鼎阳硬件设计与测试智库将保留追究文章非法盗用者法律责任的权利!
说明:本文来源网络;文中观点仅供分享交流,不代表本***立场,转载请注明出处,如涉及版权等问题,请您告知,我们将及时处理。