一种CAN总线控制器测试方法与流程

文档序号:20215068发布日期:2020-03-31 11:43阅读:394来源:国知局
一种CAN总线控制器测试方法与流程

本发明涉及电子元器件检测技术领域,尤其涉及一种can总线控制器测试方法。



背景技术:

随着计算机硬件、软件及集成电路技术的迅速发展,消费类电子产品、嵌入式主板、汽车和工业应用等领域迅速发展,工业控制领域对高速、高可靠和低成本的通信介质的要求也随之提高。现场总线技术应运而生,现场总线是当今自动化领域技术发展的热点之一,它为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。在嵌入式硬件系统传输领域内,长期以来使用的通信标准,尽管被广泛使用,但是无法在需要大量的传感器和控制器的复杂或大规模的环境中使用。can总线就是为了适应这种需要而发展起来的。

由于can总线的高速通信速率、高可靠性、连接方便、多主站、通信协议简单和高性能价格比等突出优点,深得许多工业应用的青睐,其应用由最初的汽车工业迅速发展至自动控制、数控机床、农业机械、铁路运输、过程控制、医疗领域、纺织机械和电梯控制等各个方面,近年来随着武器型号系统的小型化和模块化,can总线系统更是广泛的应用于航空航天领域的各类武器型号系统。can总线的发展已经颇具规模,这要归根与通信技术的不断进步,对通讯本身的要求不断提高,对性价比的关注也逐步提高,这种形势下can总线的优势在于其优越的抗干扰能力和超高的性价比。

can总线系统简要逻辑框图如图1所示,根据实际应用需要总线上存在n个can节点,每个节点中can收发器负责报文的发送和接收,cpu负责can控制器的初始配置、报文的处理以及与执行设备之间的通信,执行设备是系统中的各种传感器、控制器以及需要进行通信的设备。can控制器用于can总线协议底层物理层以及数据链路层的实现,用于生成can帧并以二进制码流的方式发送,在此过程中进行位填充、添加crc校验、应答检测等操作;将接收到的二进制码流进行解析并接收,在此过程中进行收发比对、去位填充、执行crc校验等操作,此外还需要及时进行冲突判断、错误处理等诸多任务。由此可见,can总线控制器是can总线系统中报文能够按照协议标准有序发送和接收而不造成冲突的关键器件,只有can控制器有条不紊的协调收发器和cpu之间的数据码流,整个can总线系统才能稳定的完成既定任务。

can总线控制器属于控制器类器件,其功能强大,内部寄存器众多,其测试一直是业界难题,即使有个别机构能够完成简单的收发报文功能测试,也无法遍历其内部众多的资源模块和各种处理机制。



技术实现要素:

鉴于上述的分析,本发明旨在提供一种can总线控制器测试方法,用以解决现有技术中缺少能够实现较为全面的can总线控制器测试的问题。

本发明的目的主要是通过以下技术方案实现的:

一种can总线控制器测试方法,所述方法包括以下步骤:

获取当前测试模式并进入相应的工作模式;所述当前测试模式为报文发送测试模式、报文接收测试模式、睡眠测试模式、滤波测试模式、仲裁失效测试模式;

通过can总线控制器rx端构建对应该工作模式的can总线环境,在所述对应该工作模式的can总线环境下进行对所述can总线控制器在相应工作模式下的测试。

在上述方案的基础上,还作出了以下改进:

进一步,当所述当前测试模式为报文发送测试模式时,通过can总线控制器rx端构建报文发送工作模式的can总线环境,进行对报文发送的测试,包括以下步骤:

初始化报文发送测试模式下can总线控制器中的寄存器;

在发送缓冲器中写入待发送的报文信息;

短接tx端和rx端,向所述can总线控制器写入发送命令,从tx端获取所述报文信息并转换为高低电平,写入发送测试pattern;

断开tx端和rx端,再次向所述can总线控制器写入发送命令,并读取延时时间;将所述发送测试pattern中数据帧的响应位的高电平替换为低电平,并为所述发送测试pattern设置与所述延时时间一致的等待时间,得到与tx同步的发送测试pattern;

在每一个波特率周期,向所述rx端施加所述与tx同步的发送测试pattern中相应位的电平激励,同时采集相应位的tx端的电平;

若采集的tx端每一位的高低电平均与所述发送测试pattern中相应位的高低电平相同,且检测到int管脚被拉低、在中断标志寄存器中读取到发送中断标志,则所述can总线控制器的报文发送功能测试通过。

进一步,所述初始化报文发送测试模式下can总线控制器中的寄存器,包括:

配置模式寄存器,进入复位模式;

配置波特率寄存器,设定数据传输速率;

配置模式寄存器,进入操作模式;

配置中断使能寄存器,开启发送中断。

进一步,当所述当前测试模式为报文接收测试模式时,通过can总线控制器rx端构建报文接收工作模式的can总线环境,进行对报文接收的测试,包括以下步骤:

初始化报文接收测试模式下can总线控制器中的寄存器;

在发送缓冲器中写入待接收的报文信息;

短接tx端和rx端,向所述can总线控制器写入发送命令;从tx端获取所述报文信息并转换为高低电平,写入接收测试pattern;

断开tx端和rx端,向所述rx端施加所述接收测试pattern的电平激励,并采集tx端的电平;

在所述rx端施加所述接收测试pattern中为高电平的数据帧的响应位时,在tx端检测到低电平,同时,且检测到int管脚被拉低、在中断标志寄存器中读取到接收中断标志,并在接收缓冲器中检测到匹配于所述接收测试pattern的报文信息,则所述can总线控制器的报文接收功能测试通过。

进一步,所述初始化报文接收测试模式下can总线控制器中的寄存器,包括:

配置模式寄存器,进入复位模式;

配置波特率寄存器,设定数据传输速率;

配置验证屏蔽寄存器的值为ff;

配置模式寄存器,进入操作模式;

配置中断使能寄存器,开启接收中断。

进一步,在数据传输过程中,把一个bit的数据传输用3行表示,每一行都有一定数量的本行重复执行,三行的总时间为一个bit传输的时间,通过对第二行高低电平的检测,实现对当前数据的高低电平判断。

进一步,当所述当前测试模式为睡眠测试模式时,通过can总线控制器rx端构建睡眠工作模式的can总线环境,进行对睡眠功能的测试,包括以下步骤:

初始化睡眠测试模式下can总线控制器中的寄存器,并使能时钟输出管脚,设定分频倍率;

向rx端施加高电平,检测所述时钟输出管脚的输出信号是否在设定总线空闲个数之后被拉低;

若检测到时钟输出管脚的输出信号在所述设定总线空闲个数后被拉低,则向rx端施加一个低电平,此时检测到int管脚被拉低、在中断标志寄存器中读取到睡眠唤醒中断标志、且所述时钟输出管脚的输出信号恢复倍频输出,则所述can总线控制器的睡眠模式功能测试通过。

进一步,所述初始化睡眠测试模式下can总线控制器中的寄存器,包括:

配置模式寄存器,进入复位模式;

配置波特率寄存器,设定数据传输速率;

配置模式寄存器,设定没有总线活动时进入睡眠模式;

配置时钟分频寄存器,使能时钟输出管脚,并设定分频倍率;

配置中断使能寄存器,开启睡眠唤醒中断。

进一步,当所述当前测试模式为滤波测试模式时,通过can总线控制器rx端构建滤波工作模式的can总线环境,进行对滤波功能的测试,包括以下步骤:

配置模式寄存器,进入复位模式;配置验收屏蔽寄存器,使得验收代码寄存器中的代码全部有效;

在发送缓冲器中写入待接收的报文信息,此时所述待接收的报文信息中的报文id与验收代码寄存器的id不一致;获取所述接收测试pattern,并向所述rx端施加所述接收测试pattern的电平激励;

若所述can总线控制器接收数据之后,在中断标志寄存器中未读取到接收中断标志、且读取到的接收缓冲器内容为空,则表明所述验收代码寄存器过滤掉了报文id与所述验收代码寄存器的id不一致的报文信息;

再次在发送缓冲器中写入待接收的报文信息,此时所述待接收的报文信息中的报文id与验收代码寄存器的id一致;获取所述接收测试pattern,并向所述rx端施加所述接收测试pattern的电平激励;

若所述can总线控制器接收数据之后,检测到int管脚被拉低、在中断标志寄存器中读取到接收中断标志,且接收缓冲器内容与所述发送缓冲器内容一致,则表明所述验收代码寄存器没有过滤到报文id与所述验收代码寄存器的id一致的报文信息;且所述can总线控制器的滤波模式功能测试通过。

进一步,当所述当前测试模式为仲裁失效测试模式时,通过can总线控制器rx端构建仲裁失效工作模式的can总线环境,进行对仲裁失效功能的测试,包括以下步骤:

获取所述与tx同步的发送测试pattern;

在向所述rx端施加所述与tx同步的发送测试pattern中相应位的电平激励过程中,将报文id中tx端为高电平的某一位对应的rx端修改为低电平,并将所述低电平施加给rx端;

此时crc校验出错,将修改后的报文id以及其他报文信息发送至发送缓冲器,短接tx端和rx端,获取包含修改后的crc校验码的测试pattern;

断开tx端和rx端,再次向所述can总线控制器写入发送命令,数据传输结束之后,若从中断标志寄存器中读到到接收中断标志,且从仲裁丢失捕捉寄存器中读取到仲裁具体丢失在某一位,则表明can总线控制器在发送过程中被仲裁掉,转化为接收节点;

在所述数据传输结束之后,持续向所述rx端施加高电平,保持总线空闲;若在tx端检测到所述仲裁丢失的报文,则所述can总线控制器的仲裁失效功能测试通过。

本发明的有益效果:

(1)调试过程将tx和rx端短接,模拟can实际应用环境,使用示波器抓取完整的can数据帧,避免了繁琐crc公式的计算,实现了tx和rx的同步,同时完成了can协议的位填充工作。

(2)测试过程中,人为的给rx端施加特定的特定高低电平,促使can总线控制器进入特定的模式或者工作状态。

(3)利用测试机台完全模拟真实can总线系统环境,可以实现对can总线控制器资源和工作模式的全覆盖测试。

(4)此种方法具有通用性,根据此方法可以实现对常用的can总线控制器进行测试程序开发。

本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书、权利要求书以及附图中所特别指出的内容中来实现和获得。

附图说明

附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。

图1为现有技术中can总线系统逻辑框图;

图2为现有技术中简易can总线系统逻辑框图;

图3为本发明实施例中can总线控制器测试方法流程图;

图4为本发明实施例中报文发送测试方法流程图;

图5为本发明实施例中报文接收测试方法流程图;

图6为本发明实施例中睡眠测试方法流程图;

图7为本发明实施例中滤波测试方法流程图;

图8为本发明实施例仲裁失效测试方法流程图;

图9为本发明实施例发送错误验证测试方法流程图;

图10为本发明实施例接收错误验证测试方法流程图;

图11为本发明实施例节点关闭测试方法流程图。

具体实施方式

下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。

can总线通信协议是一种基于应答机制的总线协议,总线系统中各个节点地位平等,没有主从之分。总线空闲时,每一个节点都可以发送数据,当一个节点抢占了总线作为发送器,其它所有节点自动成为接收器,系统中每一个节点都可以接收到发送站发送的数据报文;当有多个节点同时尝试发送时,其数据帧的优先级决定了哪个节点优先级更高,具有较高优先级数据帧的节点成为发送器,仲裁失效的节点也会成为接收器接收报文,没有发送的报文等待总线空闲之后重新发送。

最简单的can总线系统如图2所示,当总线空闲时,总线控制器通过tx尝试发送一个“显性电平”作为数据帧的帧起始,这个“显性电平”通过总线收发器传送到can物理总线上,空闲状态的can总线是一个“隐性电平”状态,此时can总线上的“隐性电平”会被“显性电平”冲掉,这个“显性电平”通过can总线收发器传回给can总线控制器。总线控制器必须在规定时间内检测到这个rx端传回的“显性电平”才能定位为总线上没有故障,可以继续发送数据帧。(备注:显性电平是一个低电平,隐性电平是一个高电平,当高低电平同时施加到总线上,隐性电平会被冲掉,即“0”和“1”经过“线与”变成了“0”。)

然而,测试时只有测试机台的数字通道和总线控制器管脚的物理连接,并没有实际的can总线,也没有总线收发器和其它的节点,所有整个测试过程中,测试机台不仅要模拟cpu为总线控制器寄存器进行配置,还要模拟完整的can环境,主要就是rx端传回数据的“高低电平”,每一个周期内都应结合can实际总线环境情况给出。基于上述对can总线控制器的分析,提供了如下can总线控制器测试方法:

本发明的一个具体实施例,公开了一种can总线控制器测试方法,流程图如图3所示,所述方法包括以下步骤:

获取当前测试模式并进入相应的工作模式;所述当前测试模式为报文发送测试模式、报文接收测试模式、睡眠测试模式、滤波测试模式、仲裁失效测试模式、发送错误验证测试模式、接收错误验证模式或节点关闭测试模式;

通过can总线控制器rx端构建对应该工作模式的can总线环境,在所述对应该工作模式的can总线环境下进行对所述can总线控制器在相应工作模式下的测试。

与现有技术相比,本实施例在熟练掌握can协议及待测芯片(即can总线控制器)的基础上,充分利用can总线控制器的rx端,为芯片营造can真实工作环境,以完成对芯片相应功能的测试。该方法至少可以实现上述功能的测试,在实际应用中,掌握了利用rx端构建对应该工作模式的can总线环境这一核心,还可以实现其他功能的测试,最终可以实现can总线控制器的全功能测试。

下面具体介绍几种测试模式对应的测试步骤:

(一)报文发送测试模式

当所述当前测试模式为报文发送测试模式时,通过can总线控制器rx端构建报文发送工作模式的can总线环境,进行对报文发送的测试,流程图如图4所示,包括以下步骤:

步骤s11:初始化报文发送测试模式下can总线控制器中的寄存器;在实际测试工作中,可以参考can总线控制器正常执行报文发送功能时相应的寄存器配置方式,实现该测试模式下寄存器的初始化。具体地,本实施例给出了如下初始化寄存器的过程:配置模式寄存器,进入复位模式;配置波特率寄存器,设定数据传输速率;配置模式寄存器,进入操作模式;配置中断使能寄存器,开启发送中断。

步骤s12:在发送缓冲器中写入待发送的报文信息;该报文信息包括报文id、数据字节、crc校验码、响应字节(即数据帧的响应位)等。

在实际的can总线系统中,在cpu向命令寄存器写入发送命令后,延迟一定的时间后报文即可开始发送。但是在测试过程中,因为rx端检测不到和tx端匹配的电平,所以can总线控制器会认为总线系统有故障,此时无论如何也发送不出预期的报文包。因此,测试过程中,需要向rx端发送与tx端匹配的电平(即步骤s15),为避免因编写的错误造成的向rx端发送的电平与tx端不匹配,在实际过程中,可执行步骤s13、s14,以获得与tx同步的发送测试pattern。

步骤s13:在调试过程中,短接tx端和rx端,此时rx的信号和tx保持一致,向所述can总线控制器写入发送命令,可以用示波器的表笔测量tx端,可以从示波器上清晰的看到从can总线控制器发出的报文,并且报文格式和总线协议格式相对应,从tx端获取所述报文信息并转换为高低电平,写入发送测试pattern;

实际测试过程中不能将tx和rx短接,如果tx信号和rx信号不能完全对应,则测试过程中会出现不可预期的问题。can总线控制器在实际工作过程中,cpu发出报文传送命令后,延迟一段时间tx才开始发送数据,这个延迟时间同样通过示波器的波形可以读取。另外,在数据帧的响应位,作为发送器的can总线控制器会发送一个“隐性电平”,在can总线系统中,此时成功接收信号的接收节点会发出一个“显性电平”表示接收数据成功,发送器必须检测到这个显性的电平自身才会认为发送成功,所以在编写测试程序时此时rx端应该给一个低电平。根据上述can总线控制器的实际工作过程,设计步骤s14,以得到与can总线控制器实际工作过程一致的、与tx同步的发送测试pattern。

步骤s14:断开tx端和rx端,再次向所述can总线控制器写入发送命令,并读取延时时间;将所述发送测试pattern中数据帧的响应位的高电平替换为低电平,并为所述发送测试pattern设置与所述延时时间一致的等待时间,得到与tx同步的发送测试pattern;

步骤s15:在每一个波特率周期,向所述rx端施加所述与tx同步的发送测试pattern中相应位的电平激励,同时采集相应位的tx端的电平;

步骤s16:若采集的tx端每一位的高低电平均与所述发送测试pattern中相应位的高低电平相同,且检测到int管脚被拉低、在中断标志寄存器中读取到发送中断标志,则所述can总线控制器的报文发送功能测试通过。

需要说明的是,can总线控制器在实际工作过程中,还需要考虑如下过程:crc校验是can总线的纠错机制,can总线控制器报文的完整数据帧当中有16位是crc校验码,实际can系统中并不需要人为的干涉,发送端和接收端都会根据发送和接收的数据分别计算crc校验码,如果两端的crc校验码一致,则接收端在接收成功之后会发送一个“隐性电平”表示接收成功(即上述数据帧的响应位)。上述16位校验码直接包含在示波器抓取的完整数据帧当中,而无需人为计算,能够有效提升测试结果的准确性,降低测试过程的复杂程度。另外,在数据帧中,连续五个相同高低电平之后can总线控制器会自动加一个相反电平进行识别,此位接收端解析数据包的时候会被自动滤掉,这些信息都包含在示波器抓取的数据帧当中,就是所谓的位填充。因此,在报文发送测试过程中,通过示波器的合理使用,能够从tx端获取can总线控制器发出的报文,并通过简单变形后即可得到与tx同步的发送测试pattern,有效简化了测试过程,降低了测试复杂度,提升了测试准确度和可信度。当然,在实际测试过程中,也可以具体使用场景,采用其他检测器件,从tx端获取上述报文信息。同时,上述测试过程中,can总线控制器中寄存器的初始化、写入报文信息、写入发送命令、向rx端施加高低电平等与can总线控制器的交互过程,均可借助于测试机台实现。后续测试过程中与can总线控制器的交互过程,也可借助于测试机台实现。

此外,考虑到芯片(即can总线控制器)的工作时钟由测试台数字通道直接输入给芯片时钟管脚,芯片的工作频率和测试pattern是一一对应的关系,但是数据传输速率(波特率)是经过工作频率倍频得到的,波特率一般是芯片工作频率的若干倍,这一点差异在测试pattern的编写过程需要尤其注意。由于数据传输时高低电平的转换有一定的斜率,因此,在数据传输过程中,把一个bit的数据传输用3行表示,每一行都有一定数量的本行重复执行,三行的总时间为一个bit传输的时间,第一行和第三行不定态不进行判断,通过对第二行高低电平的检测,实现对当前数据的高低电平判断。

(二)报文接收测试模式

当所述当前测试模式为报文接收测试模式时,通过can总线控制器rx端构建报文接收工作模式的can总线环境,进行对报文接收的测试,流程图如图5所示,包括以下步骤:

步骤s21:初始化报文接收测试模式下can总线控制器中的寄存器;在测试过程中,首先为了避免接收到的数据被验收代码寄存器滤掉,将验收屏蔽寄存器均设为ff,即屏蔽掉验收代码寄存器,此时只要成功的接收到一个数据帧,就可以在接收缓冲器将其捕获。因此可执行以下操作实现该模式下的寄存器初始化:配置模式寄存器,进入复位模式;配置波特率寄存器,设定数据传输速率;配置验证屏蔽寄存器的值为ff;配置模式寄存器,进入操作模式;配置中断使能寄存器,开启接收中断。

步骤s22:在发送缓冲器中写入待接收的报文信息;

为了实现芯片报文的接收,首先要获取芯片完整的数据帧:已知接收数据的id和具体信息以及位填充规则可以直接根据协议编写数据帧,但是crc校验的编码需要通过软件编程计算,为了省去繁琐的计算并且避免手写出错,而且接收和发送的crc编码应保持一致,所以利用通过与报文发送测试模式相同的方式获取数据帧。即执行步骤s23。

步骤s23:短接tx端和rx端,向所述can总线控制器写入发送命令;从tx端获取所述报文信息并转换为高低电平,写入接收测试pattern;

步骤s24:断开tx端和rx端,向所述rx端施加所述接收测试pattern的电平激励,并采集tx端的电平;

根据can总线控制器的实际工作过程可知,整个接收数据过程中待测芯片的tx端保持为高电平,直至通过了crc验证,到响应位时rx上施加的是一个高电平的“隐性电平”,此时在tx端检测到一个低电平,表示成功接收了一个完整的数据帧。此时读取接收缓冲器,可以读到帧信息,报文识别码和数据字节。如果接收中断打开,测试机台可以在int管脚上读到持续的低电平。此时读取中断标志寄存器,可以读到一个接收中断标志。中断被读取之后int管脚恢复为高。基于该过程,执行步骤s25的判断过程:

步骤s25:所述rx端施加所述接收测试pattern中为高电平的数据帧的响应位时,在tx端检测到低电平,同时,且检测到int管脚被拉低、在中断标志寄存器中读取到接收中断标志,并在接收缓冲器中检测到匹配于所述接收测试pattern的报文信息,则所述can总线控制器的报文接收功能测试通过。

(三)睡眠测试模式

当所述当前测试模式为睡眠测试模式时,通过can总线控制器rx端构建睡眠工作模式的can总线环境,进行对睡眠功能的测试,流程图如图6所示,包括以下步骤:

步骤s31:初始化睡眠测试模式下can总线控制器中的寄存器,并使能时钟输出管脚,设定分频倍率;优选地,可以执行以下方式所述初始化睡眠测试模式下can总线控制器中的寄存器,包括:配置模式寄存器,进入复位模式;配置波特率寄存器,设定数据传输速率;配置模式寄存器,设定没有总线活动时进入睡眠模式;配置时钟分频寄存器,使能时钟输出管脚,并设定分频倍率;配置中断使能寄存器,开启睡眠唤醒中断。此时测试机台可以在时钟输出管脚管脚检测到工作频率分频的时钟信号。

步骤s32:向rx端施加高电平,此时can总线控制器进入睡眠模式,检测所述时钟输出管脚的输出信号是否在设定总线空闲个数之后被拉低;优选地,这里的设定总线空闲个数因不同的can总线控制器而已,可根据待测芯片技术手册针对性设置。

步骤s33:若检测到时钟输出管脚的输出信号在所述设定总线空闲个数后被拉低,此时确定进入睡眠模式,can总线控制器实际工作时,若此时向rx端施加一个低电平,can总线控制器会被唤醒,并产生一个睡眠唤醒中断。因此,当向rx端施加一个低电平,此时检测到int管脚被拉低、在中断标志寄存器中读取到睡眠唤醒中断标志、且所述时钟输出管脚的输出信号恢复倍频输出,则所述can总线控制器的睡眠模式功能测试通过。

(四)滤波测试模式

当所述当前测试模式为滤波测试模式时,通过can总线控制器rx端构建滤波工作模式的can总线环境,进行对滤波功能的测试,流程图如图7所示,包括以下步骤:

步骤s41:配置模式寄存器,进入复位模式;配置验收屏蔽寄存器为全0(不起作用),即使得验收代码寄存器中的代码全部有效;

步骤s42:在发送缓冲器中写入待接收的报文信息,此时所述待接收的报文信息中的报文id与验收代码寄存器的id不一致;参考报文接收测试模式中的步骤s23,获取此时的接收测试pattern,并向所述rx端施加所述接收测试pattern的电平激励;

步骤s43:若所述can总线控制器接收数据之后,在中断标志寄存器中未读取到接收中断标志、且读取到的接收缓冲器内容为空,则表明所述验收代码寄存器过滤掉了报文id与所述验收代码寄存器的id不一致的报文信息;

步骤s44:再次在发送缓冲器中写入待接收的报文信息,此时所述待接收的报文信息中的报文id与验收代码寄存器的id一致;参考报文接收测试模式中的步骤s23,获取此时的接收测试pattern,并向所述rx端施加所述接收测试pattern的电平激励;

步骤s45:若所述can总线控制器接收数据之后,检测到int管脚被拉低、在中断标志寄存器中读取到接收中断标志,且接收缓冲器内容与所述发送缓冲器内容一致,则表明所述验收代码寄存器没有过滤到报文id与所述验收代码寄存器的id一致的报文信息;且所述can总线控制器的滤波模式功能测试通过。

(五)仲裁失效测试模式

当所述当前测试模式为仲裁失效测试模式时,通过can总线控制器rx端构建仲裁失效工作模式的can总线环境,进行对仲裁失效功能的测试,流程图如图8所示,包括以下步骤:

步骤s51:获取所述与tx同步的发送测试pattern;该过程可参考报文发送测试模式实现;

数据帧发送id过程中,某一位tx发出的是“隐性电平”,此时人为的将此位rx修改为“显性电平”,can总线控制器会认为此时总线系统中有另一个节点同时在发送报文,并且优先级高于自身,被测芯片丢失仲裁,转为接收器。而测试机台可以继续利用rx发送报文,待测芯片可以接收报文,但是id的某一位由“1”变成了“0”,此时直接用原pattern进行发送can总线控制器会报crc校验错,利用示波器重新获取报文数据帧,修改发送的crc校验码。根据上述分析过程执行步骤s52、s53;

步骤s52:在向所述rx端施加所述与tx同步的发送测试pattern中相应位的电平激励过程中,将报文id中tx端为高电平的某一位对应的rx端修改为低电平,并将所述低电平施加给rx端;

步骤s53:此时检测到crc校验出错,将修改后的报文id以及其他报文信息发送至发送缓冲器,短接tx端和rx端,获取包含修改后的crc校验码的测试pattern;

步骤s54:断开tx端和rx端,再次向所述can总线控制器写入发送命令,数据传输结束之后可以在接收缓冲器读从rx端接收到的报文,若从中断标志寄存器中读到到接收中断标志,且从仲裁丢失捕捉寄存器中读取到仲裁具体丢失在某一位,表明can总线控制器在发送过程中被仲裁掉,转化为接收节点;

在所述数据传输结束之后,持续向所述rx端施加高电平,保持总线空闲,仲裁丢失的芯片会继续发送仲裁丢失的报文,报文的数据帧可以在tx端检测到。此时执行步骤s55:

步骤s55:若在tx端检测到所述仲裁丢失的报文,则所述can总线控制器的仲裁失效功能测试通过。

can总线的错误分为主动错误和被动错误,两种错误的错误帧格式不同,发送完错误帧之后主动错误可以直接重启发送,被动错误需要等待至少8个总线空闲才能继续发送出错的报文。发送错误计数器和接收错误都不超过127时,控制器是主动错误节点,其中一个或多个错误计数器超过超过127时,控制器转换为被动错误节点。

(六)发送错误验证测试模式

当所述当前测试模式为发送错误验证测试模式时,通过can总线控制器rx端构建发送错误验证工作模式的can总线环境,进行对发送错误验证的测试,流程图如图9所示,包括以下步骤:

步骤s61:配置控制寄存器,进入复位模式;

步骤s62:配置发送错误计数器,设定为小于127的初值;

步骤s63:获取所述与tx同步的发送测试pattern;该过程可参考报文发送测试模式中步骤s11-s14实现;

步骤s64:在向所述rx端施所述与tx同步的发送测试pattern中相应位的电平激励过程中,将数据帧中tx端为低电平的某一位对应的rx端修改为高电平,并将所述低电平施加给rx端;

此时can总线控制器采集到的电平和发送的电平不一致,又不是仲裁失效,can总线控制器会认为由于自身的原因发生了发送错误,发送错误计数器会+8;can总线控制器接着会发送错误帧,告知其它节点自身产生了一个发送错误。作为主动错误节点,错误帧由6个显性位的错误标志和8个隐性位的错误界定符组成。测试机台可以通过检测tx管脚检测到错误帧,另一方面,必须同时给rx管脚施加和tx管脚相同的高低电平,否则can总线控制器无法检测到总线系统中的回检信号会继续累加发送错误计数器。错误帧发送完毕之后,间隔3个总线空闲,主动错误节点会继续尝试发送数据帧。基于以上分析过程,执行步骤s65、s66;

步骤s65:此时检测到所述发送错误计数器+8,且在tx端检测到由6个低电平位的错误标志和8个高电平位的错误界定符组成的错误帧;

步骤s66:向所述rx端施加所述由6个低电平位的错误标志和8个高电平位的错误界定符组成的错误帧;

当发送错误计数器累加超过127时,主动错误节点会变成被动错误节点,此时错误帧由6个连续隐性位的错误标志和8个隐性位的错误界定符组成。发送完错误界定符,需要等待3个总线空闲和8个“隐性位”的挂起传送之后,才能继续发送报文。整个错误帧和和挂起传送包括总线空闲器件,rx端必须保持为“隐性性电平”。基于上述分析,执行步骤s67:

步骤s67:重复上述发送错误的步骤,当检测到所述发送错误计数器累加超过127时,若在tx端检测到由6个高电平位的错误标志和8个高电平位的错误界定符组成的错误帧;并检测tx端发送所述由6个高电平位的错误标志和8个高电平位的错误界定符组成的错误帧期间、以及之后的3个总线空闲、8个高电平挂起期间,所述rx端是否为高电平,若rx端为高电平,则所述can总线控制器的发送错误验证功能测试通过。

(七)接收错误验证测试模式

当所述当前测试模式为接收错误验证测试模式时,通过can总线控制器rx端构建接收错误验证工作模式的can总线环境,进行对接收错误验证的测试,流程图如图10所示,包括以下步骤:

步骤s71:配置模式寄存器,进入复位模式;

步骤s72:配置接收错误计数器,设定为小于127的初值;

步骤s73:获取所述接收测试pattern;该过程可参考报文接收测试模式中步骤s21-s23实现;修改所述接收测试pattern中的crc校验码,得到crc校验码出错的接收测试pattern;

步骤s74:向所述rx端施加所述crc校验码出错的接收测试pattern,所述can总线控制器接收完所述crc校验码出错的接收测试pattern后,此时检测到所述接收错误计数器+1,且在tx端检测到由6个低电平位的错误标志和8个高电平位的错误界定符组成的错误帧;此时检测到所述接收错误计数器+8;

步骤s75:向所述rx端施加错误帧,所述向rx端施加的错误帧中的高低电平区别于所述由6个低电平位的错误标志和8个高电平位的错误界定符组成的错误帧;此时检测到所述接收错误计数器+8;

步骤s76:重复上述通过tx端发送由6个低电平位的错误标志和8个高电平位的错误界定符组成的错误帧、并向rx施加错误帧,当检测到所述接收错误计数器累加超过127时,若在tx端检测到由6个高电平位的错误标志和8个高电平位的错误界定符组成的错误帧,并检测tx端发送所述由6个高电平位的错误标志和8个高电平位的错误界定符组成的错误帧期间、以及之后的3个总线空闲、8个高电平挂起期间,所述rx端是否为高电平,若rx端为高电平,则所述can总线控制器的接收错误验证功能测试通过。

(八)节点关闭测试模式

在操作模式中,当发送或者接收错误计数器累加到255之后,can总线控制器认为自身错误过多,会将自身节点关闭,不参与任何总线活动。并且自动从操作模式自动转为复位模式,将发送错误计数器置为0x7f,将接收错误计数器清零。再次配置芯片进入工作模式,总线保持为高,每11个总线空闲发送错误计数器-1,直至发送错误计数器变成0,can节点恢复正常工作状态。基于上述分析过程,本实施例给出了节点关系的测试步骤:

当所述当前测试模式为节点关闭测试模式时,通过can总线控制器rx端构建节点关闭工作模式的can总线环境,进行对节点关闭的测试,流程图如图11所示,包括以下步骤:

步骤s81:在操作模式中,将发送错误计数器或接收错误计数器累加到255,若检测到状态寄存器为总线关闭状态、can总线控制器从操作模式切换至复位模式,并检测到所述发送错误计数器中值为0x7f、接收错误计数器清零;

步骤s82:则再次配置所述can总线控制器,进入操作模式,控制rx端保持高电平,若检测到所述发送错误计数器是否每隔固定总线空闲-1,且检测到当所述发送错误计数器变为0时,can总线控制器恢复正常工作状态;则所述can总线控制器的节点关闭功能测试通过。

本文所述的方法,可以实现对can总线控制器的全功能测试,由于篇幅的限制,并不能在此穷尽所有can总线控制器的资源和工作模式。根据本专利所述方法,熟练掌握can协议和待测芯片技术手册,通过rx为芯片营造can真实工作环境就可以完成对芯片的完备性测试。

综上,本发明实施例,具备如下有益效果:

(1)调试过程将tx和rx端短接,模拟can实际应用环境,使用示波器抓取完整的can数据帧,避免了繁琐crc公式的计算,实现了tx和rx的同步,同时完成了can协议的位填充工作。

(2)测试过程中,人为的给rx端施加特定的特定高低电平,促使can总线控制器进入特定的模式或者工作状态。

(3)利用测试机台完全模拟真实can总线系统环境,可以实现对can总线控制器资源和工作模式的全覆盖测试。

(4)此种方法具有通用性,根据此方法可以实现对常用的can总线控制器进行测试程序开发。

本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1