一种CAN与UART协议互转通信保障方法技术

技术编号:27282400 阅读:14 留言:0更新日期:2021-02-06 11:49
本发明专利技术涉及一种CAN与UART协议互转通信保障方法,该方法应用于双CPU系统,所述的双CPU系统中,CPU1通过CAN协议与CAN网络进行通信,CPU1与CPU2之间通过UART协议进行通信。该方法在CPU1以及CPU2中添加标志位,该标志位用于表征信息的新鲜度;CPU1与CPU2之间通过UART协议进行信息传递时,发送方将待发送信息与标志位一起发送给接收方,接收方根据标志位判断信息的新鲜度,并根据所述信息的新鲜度进行信息转发或丢弃。此方案大大提高了传输的稳定性和正确率,保证了双CPU通信的功能符合商业应用要求,确认了方案的有效性。求,确认了方案的有效性。求,确认了方案的有效性。

【技术实现步骤摘要】
一种CAN与UART协议互转通信保障方法


[0001]本专利技术涉及汽车电子
,具体涉及一种CAN与UART协议互转通信保障方法。

技术介绍

[0002]在汽车中,有数量众多的电子电控单元(ECU),汽车生产、维护、维修人员需要对这些ECU进行诊断维护,通过CAN通道,使用UDS协议进行此项服务,在这些ECU中,有一类设计的行车安全的ECU,可能在硬件上就使用双备份机制,但是对整车系统来说,他们还是一个电控单元,这时候在进行通信服务是,两个CPU中,一个就要与车身CAN网络连接沟通,另一只通过UART等通信机制与前一个CPU的CAN通道与车身CAN网络沟通。
[0003]在上位机(PC)通过CAN通道使用UDS协议对双CPU诊断、升级时,由于只有CPU1有CAN通道,CPU2没有CAN通道;PC没有与CPU2直接连接,而是通过CPU1的UART的通道与CPU2进行通信,所以CPU1会将通过CAN通道收到的UDS信息打包,再通过CPU1同CPU2间的UART通道,传递给CPU2;但是,由于CAN通信是一个带确认应答的通信协议,而UART是一个不带确认应答的协议,这就可能造成,CPU1已经收到CAN消息,上位机也确认下位机收到CAN消息,并准备进行下一时序的信息传递,但在CPU1通过UART向CPU2传递信息时,可能发生错误,那么就可能造成整个通信的崩溃;在实机的升级过程中,我们通过监控通信输出的log信息,确实发现有比较高的频率发生了此类问题。

技术实现思路

[0004]本专利技术针对现有技术中存在的技术问题,提供一种CAN与UART协议互转通信保障方法。
[0005]本专利技术解决上述技术问题的技术方案如下:
[0006]该方法应用于双CPU系统,所述的双CPU系统中,CPU1通过CAN协议与CAN网络进行通信,CPU1与CPU2之间通过UART协议进行通信。
[0007]在CPU1以及CPU2中添加标志位,该标志位用于表征信息的新鲜度;
[0008]CPU1与CPU2之间通过UART协议进行信息传递时,发送方将待发送信息与标志位一起发送给接收方,接收方根据标志位判断信息的新鲜度,并根据所述信息的新鲜度进行信息转发或丢弃。
[0009]进一步的,发送方在发送信息之前对待发送的信息进行校验,判断待发送信息是否与上一次所发送的信息一致,若校验一致,则不修改标志位,否则修改标志位。
[0010]进一步的,接收方在接收信息之后,提取标志位,并判断当前标志位是否与上一次接收到的信息所包含的标志位是否一致,若一致则丢弃,否则接收该信息或同时进行转发。
[0011]进一步的,接收方在接收到新发送的信息后,首先进行信息完整性及正确性校验,完整性及正确性校验通过后再提取标志位。
[0012]进一步的,在发送下一条待发送信息之前,发送方持续通过UART协议以固有波特率向接收方发送当前信息。。
[0013]本专利技术的有益效果是:因为UART通信协议机制已经确定无法做确认信息是否正确被接收,所以在UART通信机制之外找解决方案,在应用中我们发现,CAN的通信波特率是500K而UART的通信波特率是1M,基于此,在一个CAN通信周期内,我们在UART中可以进行2次CAN信息的传输,所以,我们设计了一个UART的信息重发和识别信息新鲜度的机制,以此来解决UART的传输错误问题。
[0014]发送方会通过UART协议按照1M的波特率一直将发送buffer中的信息持续向接收方发送;在发送buffer中的信息时,制定一个协议,指定一个专门表示信息被更新的标志,即在发送方CPU中添加信息更新标志位,在更新发送buffer的内容时,对该标志位进行修改更新,而接收方在收到信息时,会根据更新标志与之前的更新标志进行比较,在更新标志发生翻转时,才将接收该信息,进行下一个流程的信息处理,同时将更新标志位更新并存;如果接受到的信息更新标志与之前存储的更新标志一致时,则判断为重发的信息,直接丢弃,不进行后续的信息处理,以此来保障整个信息的正确及新鲜。
附图说明
[0015]图1为本专利技术实施例提供的一种CAN与UART协议互转通信保障方法流程图。
具体实施方式
[0016]以下结合附图对本专利技术的原理和特征进行描述,所举实例只用于解释本专利技术,并非用于限定本专利技术的范围。
[0017]本专利技术以PC端上位机对双CPU进行诊断、升级为例,对本专利技术方法进行说明,方法流程图参见图1。
[0018]PC端上位机通过CAN协议与CPU1进行通信,CPU1与CPU2之间通过UART协议进行通信。
[0019]CPU1和CPU2中均设置有标志位,分别记作标志A、标志B。
[0020]上位机将升级信息通过CAN网络发送给CPU1,并写入CPU1的缓存中,此时CPU1校验此次升级信息与前一次的升级信息是否一致。而在实际应用当中,一般上位机发送的升级信息会与前一次不同,因此为了方便操作,本实施例在CPU1的缓存写入数据的同时,即判定信息发生改变,此时,更新标志A。
[0021]CPU1在更新标志A后,将标志A与升级信息一起打包,并通过UART协议以1M的波特率持续不断的将升级信息与标志A一同发送至CPU2。
[0022]CPU2接收到信息后,进行信息的完整性和正确性校验,此部分通过CHECSUM校验进行,在信息完整、正确的情况下才进行后续的信息更新标志位的判断。若标志A的值与上一次接收到的信息的标志A不同则执行升级流程,若值相同,则判断此次接收到的信息与前一次接收的信息相同,将此次接收到的信息丢弃。
[0023]CPU2升级成功后,生成升级成功消息并写入缓存中,同理为了方便操作,本实施例在CPU2的缓存写入数据的同时,即判定信息发生改变,此时,更新标志B。
[0024]CPU2在更新标志B后,将标志B与升级成功信息一起打包,并通过UART协议以1M的波特率持续不断的将升级成功信息与标志B一同发送至CPU1。
[0025]CPU1接收到信息后,进行信息的完整性和正确性校验,同样通过CHECSUM校验进
行,在信息完整、正确的情况下才进行后续的信息更新标志位的判断。若标志B的值与上一次接收到的信息的标志B不同则将升级成功信息转发给上位机PC端,若值相同,则判断此次接收到的信息与前一次接收的信息相同,将此次接收到的信息丢弃。
[0026]在整个的UDS通信过程中,虽然CAN的波特率是500K,但实际的工作中,UDS命令流不会接连不断的进行传输,只有在极其个别的应用场景中会持续不断的进行通信数据流的传输,这就为UART能更多次的重传信息提供了更好机会,从而更加提高了此纠错机制的应用机会,更加保障了通信的可靠性。
[0027]经过实验表明,在此方案实施之前,由于通过CAN使用UDS协议升级CPU2时,在传输大量的需要更新ROM(500K Byte)的数据时,会有50%的情况出现通信过程中的错误而造成升级的失败。...

【技术保护点】

【技术特征摘要】
1.一种CAN与UART协议互转通信保障方法,该方法应用于双CPU系统,所述的双CPU系统中,CPU1通过CAN协议与CAN网络进行通信,CPU2与CPU1之间通过UART协议进行通信,其特征在于,包括:在CPU1以及CPU2中添加标志位,该标志位用于表征信息的新鲜度;CPU1与CPU2之间通过UART协议进行信息传递时,发送方将待发送信息与标志位一起发送给接收方,接收方根据标志位判断信息的新鲜度,并根据所述信息的新鲜度进行信息转发或丢弃。2.根据权利要求1所述的方法,其特征在于,发送方在发送信息之前对待发送的信息进行校验,判断待发送信息是否...

【专利技术属性】
技术研发人员:王军德汤戈闵道均雷靖宇田建华
申请(专利权)人:武汉光庭信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1