发明内容
有鉴于此,本申请的主要目的在于提供一种CAN控制器的测试方法及装置,实现对CAN控制器进行有效并且成本较低的测试。
本申请第一方面提供了一种CAN控制器的测试方法,该方法包括:
对多个测试工装进行独立编号,并生成第一编号,多个测试工装中的每个测试工装包括微控制单元MCU、CAN控制器、CAN收发器,并将第一编号写入MCU,以便MCU根据第一编号以及CAN控制器内部的第二编号为CAN控制器分配标识符CAN_ID;其中,多个测试工装分别连接到总线上。
根据标识符CAN_ID对应的CAN报文内容向总线发送预设数目的第一报文;
对第一报文进行校验生成第一校验结果,并存储第一校验结果。
在本申请第一方面的一些实现方式中,该多个测试工装包括:第一测试工装,该第一测试工装包括:MCU、第一CAN控制器、第一CAN收发器;该方法还包括:
接收由多个测试工装中的第一测试工装发送的测试指令,根据测试指令启动状态同步机制;
根据状态同步机制对第一测试工装包括的第一CAN控制器进行报文收发测试。
在本申请第一方面的一些实现方式中,其中,根据状态同步机制对第一测试工装包括的第一CAN控制器进行报文收发测试,包括:
判断第一测试工装包括的第一CAN控制器在预设时间段是否接收到第二报文;
若在预设时间段内第一测试工装包括的第一CAN控制器未接收到第二报文,则确定总线处于空闲状态。
在本申请第一方面的一些实现方式中,根据标识符CAN_ID对应的CAN报文内容向总线发送预设数目的第一报文之后,还包括:
当第一CAN控制器发送完第一报文之后,确定第一CAN控制器进入状态同步阶段;
当总线上的所有的CAN控制器发送完第一报文之后,切换CAN模式。
在本申请第一方面的一些实现方式中,该方法还包括:
解析第一校验结果,并生成第二校验结果;
根据第二校验结果分析CAN控制器的工作状态。
在本申请第一方面的一些实现方式中,多个测试工装分别通过继电器连接到总线上。
本申请第二方面提供了一种CAN控制器的测试装置,该测试装置包括:编号组件和多个测试工装,其中多个测试工装之间通过双绞线进行物理连接,多个测试工装分别通过继电器连接到总线上;
多个测试工装中的每个测试工装包括微控制单元MCU、CAN控制器、CAN收发器;
编号组件用于对多个测试工装进行独立编号,并生成第一编号;
MCU用于根据第一编号以及CAN控制器内部的第二编号为CAN控制器分配标识符CAN_ID;
测试工装具体用于根据标识符CAN_ID对应的CAN报文内容向总线发送预设数目的第一报文;对第一报文进行校验生成第一校验结果,并存储第一校验结果。
本申请第三方面提供了一种CAN控制器的测试装置,该测试装置包括:
编号模块,用于对多个测试工装进行独立编号,并生成第一编号,多个测试工装中的每个测试工装包括微控制单元MCU、CAN控制器、CAN收发器,并将第一编号写入MCU,以便MCU根据第一编号以及CAN控制器内部的第二编号为CAN控制器分配标识符CAN_ID;多个测试工装分别通过继电器连接到总线上;
发送模块,用于根据标识符CAN_ID对应的CAN报文内容向总线发送预设数目的第一报文;
校验模块,用于对第一报文进行校验生成第一校验结果,并存储第一校验结果。
在本申请第三方面的一些实现方式中,该测试装置还可以包括:
接收模块,用于接收由多个测试工装中的第一测试工装发送的测试指令,根据测试指令启动状态同步机制;
测试模块,用于根据状态同步机制对第一测试工装包括的第一CAN控制器进行报文收发测试。
在本申请第三方面的一些实现方式中,测试模块具体用于判断第一测试工装包括的第一CAN控制器在预设时间段是否接收到第二报文;若在预设时间段内第一测试工装包括的第一CAN控制器未接收到第二报文,则确定总线处于空闲状态。
本申请第四方面提供了一种计算机设备,其特征在于,该设备包括存储器和处理器,处理器用于执行存储器中存储的程序,运行如前述第一方面中任一项的方法。
相对于现有技术,本申请所提供的技术方案具有如下有益效果:
本申请将MCU内多个CAN控制器互联于不同节点数的不同CAN网络,之后与总线连接并分配独立ID,基于状态同步机制进行报文收发测试和报文解析判断,采用软硬件结合的方案因此无需引入外部测试设备,相对于现有技术的方案需要使用价格昂贵操作复杂的外部测试设备,并且为针对单个CAN控制器的诊断协议测试而言,本申请无需引入外部测试设备,并且针对复杂工况也可以进行有效测试,因此可以实现对CAN控制器进行有效并且成本较低的测试。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等,如果存在是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
CAN控制器是CAN局域网控制器的简称,CAN 是Controller Area Network 的缩写,以下称为CAN,是ISO国际标准化的串行通信协议。CAN控制器工作于多种方式,网络中的各节点都可根据总线访问优先权,采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。波特率,可以通俗的理解为一个设备在一秒钟内发送或接收了多少码元的数据。它是对符号传输速率的一种度量,1波特即指每秒传输1个码元符号,通过不同的调制方式,可以在一个码元符号上负载多个bit位信息,1比特每秒是指每秒传输1比特。
现有技术中的CAN控制器测试需要采用价格昂贵操作复杂的外部测试设备,大多的外部测试设备为针对单个CAN控制器的诊断协议测试,因此难以针对MCU内多个CAN控制器在不同CAN总线中同步工作的复杂工况进行快速有效的低成本测试。
本申请实施例提供的方案中,将MCU内多个CAN控制器互联于不同节点数的不同CAN网络,并分配独立标识符ID,基于状态同步机制进行报文收发测试和报文解析,采用软硬件结合的方案无需引入外部测试设备,成本较低。
本申请实施例中,实现对CAN控制器的测试过程中,可以包括如下设备:
单个测试工装由MCU,MCU内部CAN控制器及外部CAN收发器,继电器,CAN网络接口组成。
带多个接口的双绞线作为CAN网络物理载体,与测试工装上CAN网络接口连接。
根据组网需求,使用多个测试工装,多条双绞线进行物理连接。并控制继电器将不同的CAN节点挂载到总线上即可组成多条不同节点数的CAN网络。
请参阅图1,由于现有技术中仅针对单个CAN控制器进行测试,对于复杂工况无法进行有效且低成本的测试,因此本申请该实施例提供了一种CAN控制器的测试方法包括以下步骤:
S101:对多个测试工装进行独立编号,并生成第一编号,该多个测试工装中的每个测试工装包括微控制单元MCU、CAN控制器、CAN收发器,并将该第一编号写入MCU,以便MCU根据第一编号以及CAN控制器内部的第二编号为CAN控制器分配标识符CAN_ID;其中,多个测试工装分别连接到总线上;
具体地,对多个测试工装进行独立编号可以实现CAN网络中不发生ID冲突,冲突也可以理解为不唯一,例如在实际运用中,大多数传感器及部分控制器向总线的输出帧ID都是固定的,则有可能出现不同节点的CAN控制器ID出现相同的情况,这种情况下则可能导致无法使用。
需要说明的是,测试工装还可以包括其他设备不限制以上设备,并且其中的第一编号可以是区分每个测试工装的身份,第一编号可以根据测试工装的队列进行编号也可以按照其他顺序并不作限定;CAN控制器内部的第二编号可以是例如CAN1、CAN2、CAN3等等,其中这个数值可以进行扩展。
S102:根据标识符CAN_ID对应的CAN报文内容向总线发送预设数目的第一报文;
可以理解的是,每个标识符可以对应不同的报文内容,由于每个标识符对应不同的CAN控制器,所产生的报文内容也可能不相同。
需要说明的是,第一报文的数目可以由测试人员提前设定,也可以采用其他规则用程序设定,设定第一报文的数目为便于后续分析测试结果,其中不同节点的预设数目一般相同。
S103:对第一报文进行校验生成第一校验结果,并存储第一检验结果;
测试完成后读取第一校验结果即可分析出MCU中多个CAN控制器在组网场景下的工作状态。
需要说明的是,可以将第一校验结果存储进特定的存储设备,例如MCU的片内或者片外闪存flash,也可以采用其他存储形式进行存储,均不限制本申请实施例的实现。
图1所示的流程,通过高自由度的组网方式实现将MCU内多个CAN控制器互联于不同节点数的不同CAN网络。通过节点CAN_ID自动分配实现CAN网络中不发生ID冲突并完成通讯状态分析,进一步加强了CAN控制器的测试效率。
请参阅图2,本申请还提供了另外一种CAN控制器的测试方法,由于现有技术未采用状态同步机制,因此容易导致每个节点的状态不同步仍需要逐一测试,由此本申请该实施例具体包括如下步骤:
S201:接收由多个测试工装中的第一测试工装发送的测试指令,根据测试指令启动状态同步机制;
具体地,状态同步机制即监控总线是否空闲,例如根据总线空闲的时间长短判断总线上各节点状态,并且依据状态同步机制也可以控制总线报文最小间隔,或者也可以判断CAN网络中所有节点是否均完成了报文发送。其中,最小间隔可以参考车载场景。
S202:根据状态同步机制对第一测试工装包括的第一CAN控制器进行报文收发测试。
具体地,可以判断所述第一测试工装包括的第一CAN控制器在预设时间段是否接收到第二报文;
若在预设时间段内所述第一测试工装包括的第一CAN控制器未接收到所述第二报文,则确定所述总线处于空闲状态。
需要说明的是,预设时间段应远大于每个测试工装间的启动间隔。
在一些实现方式中,S202可以周期性执行。
其中S201和S202的执行顺序可以先后进行,也可以同时进行。
在图2所示的本申请实施例中,为了将MCU内多个CAN控制器互联,提出了基于状态同步机制进行报文收发测试和报文解析,以此方式,在实现多个CAN控制器互联于不同节点数的不同CAN网络中的前提下,相较于现有技术更便于后续测量的方法。
如图3所示,本申请实施例还提供了另一种CAN控制器的测试方法,该方法具体包括:
S101:对多个测试工装进行独立编号,并生成第一编号,多个测试工装中的每个测试工装包括微控制单元MCU、CAN控制器、CAN收发器,并将第一编号写入MCU,以便MCU根据第一编号以及CAN控制器内部的第二编号为CAN控制器分配标识符CAN_ID;其中,多个测试工装分别连接到总线上
S102:根据标识符CAN_ID对应的CAN报文内容向总线发送预设数目的第一报文;
S301:当所述第一CAN控制器发送完所述第一报文之后,确定所述第一CAN控制器进入状态同步阶段;
S302:当所述总线上的所有的CAN控制器发送完所述第一报文之后,切换CAN模式;
需要说明的是,CAN模式分为经典CAN和CAN_FD,其中两种模式的波特率不相同,波特率可以理解为通讯速率。经典CAN为1M,CAN_FD为1M以上。
波特率可以理解为单片机或计算机在串口通信时的速率,指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240Bd,比特率为10位*240个/秒=2400bps。又比如每秒钟传送240个二进制位,这时的波特率为240Bd,比特率也是240bps。(但是一般调制速率大于波特率,比如曼彻斯特编码)。波特率,可以通俗的理解为一个设备在一秒钟内发送(或接收)了多少码元的数据。它是对符号传输速率的一种度量,1波特即指每秒传输1个码元符号(通过不同的调制方式,可以在一个码元符号上负载多个bit位信息),1比特每秒是指每秒传输1比特(bit)。单位"波特"本身就已经是代表每秒的调制数,以"波特每秒"(Baud per second)为单位是一种常见的错误。
具体地,切换CAN模式之后可以循环上述测试过程,目的是测试不同CAN模式和波特率下CAN控制器的工作状态。
S103:对第一报文进行校验生成第一校验结果,并存储第一校验结果。
具体地,存储第一校验结果之后可以解析第一校验结果生成第二校验结果;根据第二校验结果分析CAN控制器的工作状态。
在图3所示的本申请实施例中,通过节点状态同步机制实现经典CAN和CAN_FD不同波特率同步切换。
如图4所示,本申请实施例还提供了另一种CAN控制器的测试装置,该装置具体包括:
编号组件和多个测试工装,多个测试工装之间通过双绞线进行物理连接;
多个测试工装中的每个测试工装包括微控制单元MCU、CAN控制器、CAN收发器;
编号组件用于对多个测试工装进行独立编号,并生成第一编号;
测试工装具体用于根据标识符CAN_ID对应的CAN报文内容向总线发送预设数目的第一报文;对第一报文进行校验生成第一校验结果,并存储第一校验结果;
MCU用于根据第一编号以及CAN控制器内部的第二编号为CAN控制器分配标识符CAN_ID。
需要说明的是,其中该测试装置还可以包括继电器、CAN网络接口,并不限制本申请该实施例的实现。
如图5所示,本申请实施例还提供了一种CAN控制器的测试装置,该测试装置具体包括:
编号模块501,用于对多个测试工装进行独立编号生成第一编号,多个测试工装中的每个测试工装包括微控制单元MCU、CAN控制器、CAN收发器,并将第一编号写入微控制单元MCU,以便微控制单元MCU根据第一编号以及CAN控制器内部的第二编号为CAN控制器分配标识符CAN_ID;
发送模块502,用于根据标识符CAN_ID对应的CAN报文内容向总线发送预设数目的第一报文;
校验模块503,用于对第一报文进行校验生成第一校验结果,并存储第一校验结果。
在本申请的另一些实施例中,该测试装置还可以包括:
接收模块504,用于接收由多个测试工装中的第一测试工装发送的测试指令,根据测试指令启动状态同步机制;
测试模块505,用于根据状态同步机制对第一测试工装包括的第一CAN控制器进行报文收发测试;
在一些具体实施方式中,该测试模块505具体用于判断第一测试工装包括的第一CAN控制器在预设时间段是否接收到第二报文;若在预设时间段内第一测试工装包括的第一CAN控制器未接收到第二报文,则确定总线处于空闲状态。
可以理解的是,本实施例示意的结构并不构成对该装置的具体限定。在另一些实施例中,该装置可以包括比图示更多或更少的部件,或者组合另一些部件,或者拆分另一些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
如图6所示,本申请实施例还提供了一种计算机设备,包括:存储器601、处理器602;
其中,存储器601用于存储程序;
处理器602用于执行存储器中的程序,以实现上述如图1至图3中描述的一种CAN控制器的测试方法。
最后,还需要说明的是,在本申请实施例中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。