在车载控制器中,CAN采样点的测试是控制器的基本测试之一,那CAN总线的采样点一般怎么测试呢?今天一起来捋一捋。
1个位中包含8或16个TQ的分段示意图
采样点的理论计算值可由下式得到:
=(+1)/(+1+2)
例如:若一个TQ的长度为0.0625us,时钟频率是16MHz(通常CAN所使用的时钟频率),预分频数为1。这就导致在500kBaud下一个位含有32个TQ。若预分频数为2,则一个位包含16个TQ。
同步段(SyncSegment)在任何情况下均仅为1个TQ长度,剩余的TQ将会被分为TSEG1和TSEG2。
例如:若一个位的总TQ数为16,采样点位置为75%,则TSEG1的TQ数为11,TSEG2的TQ数为4。
CAN采样点测试的原理是节点判断信号逻辑电平的位置,对CAN总线来说极其重要,尤其是在一个CAN网络里,多个节点要保持同一个采样点。如果其中一个偏差较大,有可能使整个网络出现故障,所以对CAN节点进行采样点的测试显得尤为重要,采样点测试目的用于检查控制器的采样点设置是否遵守规范要求。
采样点的位置不受控制器所处的收发状态影响,故针对采样点测试既可以干扰控制器发送的指定报文的某个位,也可以通过测试工具发送特定干扰报文去检测控制器的行为。
下面以CANoe发送特定干扰报文的方法为例。VH6501在检测到总线空闲时,发送较高优先级的特定干扰报文,完成一个干扰循环。每次干扰循环发送结束,微调CRCDelimiter位长度,使其逐次缩短,导致后一位ACKSlot前移,并将ACKSlot长度增加,保证整帧报文的长度不变。当显性位电平由后往前,移至DUT采样点位置,会被DUT采到并判定CRCDelimiter位为高电平,出现格式错误,DUT随即发送错误帧,并被CANoe采集到。另外每次干扰循环结束,VH6501将发送30次控制器正常接收的任意一帧正常报文,从而使DUT始终保持ErrorActive状态,因其主动错误帧容易辨认。
那CANoe工程如何配置呢?首先打开软件后,选择CANoe的示例工程DisturbanceSamplePointTest(CAN)。进入工程后,将VH6501通道分配给软件通道CAN1,在下图所示界面设置Mode为CAN,并勾选Activate选项使能VH6501总线干扰功能。
VH6501的采样点设置尽量靠前,确保优先干扰到控制器的采样点,此处BTLCycles(指的是TQ数量,将一个位分为16个TQ)和SJW(同步跳变宽度)要选择数值较大的组合,可参考下图配置。
配置完成之后,就可以写capl测试脚本了。
那采样点的测试结果一般受什么影响呢?一般来说受3个因素影响。
在总线信号和RxD引脚信号上影响采样点测试结果的因素示意图
指VH6501每次缩短或增长的步进长度。
假设CAN时钟频率为80MHz,为25ns,预分频(Prescaler)为1,为12.5ns,为6.25ns。仲裁相为500kBaud,数据相为2MBaud。
由于CAN协议11898中并未规定重同步后跳变沿一定要在同步段(SyncSegment)的哪个位置,从同步段(SyncSegment)的开始到结束均可以,因此这会带来1个TQ的误差。在仲裁相和数据相中带来的误差分别为0.625%和2.5%。
因此综上所述,在仲裁相中总的最大误差为2.1875%(1.25%+0.3125%+0.625%),在数据相中总的最大误差为8.75%(5%+1.25%+2.5%)。
由上可知,由VH6501所带来的误差所占比例是很小的。而大部分是由于CAN协议本身所带来的误差。