CN112328524B - 一种can与uart协议互转通信保障方法 - Google Patents
一种can与uart协议互转通信保障方法 Download PDFInfo
- Publication number
- CN112328524B CN112328524B CN202011187799.1A CN202011187799A CN112328524B CN 112328524 B CN112328524 B CN 112328524B CN 202011187799 A CN202011187799 A CN 202011187799A CN 112328524 B CN112328524 B CN 112328524B
- Authority
- CN
- China
- Prior art keywords
- information
- cpu1
- uart
- protocol
- sent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
本发明涉及一种CAN与UART协议互转通信保障方法,该方法应用于双CPU系统,所述的双CPU系统中,CPU1通过CAN协议与CAN网络进行通信,CPU1与CPU2之间通过UART协议进行通信。该方法在CPU1以及CPU2中添加标志位,该标志位用于表征信息的新鲜度;CPU1与CPU2之间通过UART协议进行信息传递时,发送方将待发送信息与标志位一起发送给接收方,接收方根据标志位判断信息的新鲜度,并根据所述信息的新鲜度进行信息转发或丢弃。此方案大大提高了传输的稳定性和正确率,保证了双CPU通信的功能符合商业应用要求,确认了方案的有效性。
Description
技术领域
本发明涉及汽车电子技术领域,具体涉及一种CAN与UART协议互转通信保障方法。
背景技术
在汽车中,有数量众多的电子电控单元(ECU),汽车生产、维护、维修人员需要对这些ECU进行诊断维护,通过CAN通道,使用UDS协议进行此项服务,在这些ECU中,有一类设计的行车安全的ECU,可能在硬件上就使用双备份机制,但是对整车系统来说,他们还是一个电控单元,这时候在进行通信服务是,两个CPU中,一个就要与车身CAN网络连接沟通,另一只通过UART等通信机制与前一个CPU的CAN通道与车身CAN网络沟通。
在上位机(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信息,确实发现有比较高的频率发生了此类问题。
发明内容
本发明针对现有技术中存在的技术问题,提供一种CAN与UART协议互转通信保障方法。
本发明解决上述技术问题的技术方案如下:
该方法应用于双CPU系统,所述的双CPU系统中,CPU1通过CAN协议与CAN网络进行通信,CPU1与CPU2之间通过UART协议进行通信。
在CPU1以及CPU2中添加标志位,该标志位用于表征信息的新鲜度;
CPU1与CPU2之间通过UART协议进行信息传递时,发送方将待发送信息与标志位一起发送给接收方,接收方根据标志位判断信息的新鲜度,并根据所述信息的新鲜度进行信息转发或丢弃。
进一步的,发送方在发送信息之前对待发送的信息进行校验,判断待发送信息是否与上一次所发送的信息一致,若校验一致,则不修改标志位,否则修改标志位。
进一步的,接收方在接收信息之后,提取标志位,并判断当前标志位是否与上一次接收到的信息所包含的标志位是否一致,若一致则丢弃,否则接收该信息或同时进行转发。
进一步的,接收方在接收到新发送的信息后,首先进行信息完整性及正确性校验,完整性及正确性校验通过后再提取标志位。
进一步的,在发送下一条待发送信息之前,发送方持续通过UART协议以固有波特率向接收方发送当前信息。
本发明的有益效果是:因为UART通信协议机制已经确定无法做确认信息是否正确被接收,所以在UART通信机制之外找解决方案,在应用中我们发现,CAN的通信波特率是500K而UART的通信波特率是1M,基于此,在一个CAN通信周期内,我们在UART中可以进行2次CAN信息的传输,所以,我们设计了一个UART的信息重发和识别信息新鲜度的机制,以此来解决UART的传输错误问题。
发送方会通过UART协议按照1M的波特率一直将发送buffer中的信息持续向接收方发送;在发送buffer中的信息时,制定一个协议,指定一个专门表示信息被更新的标志,即在发送方CPU中添加信息更新标志位,在更新发送buffer的内容时,对该标志位进行修改更新,而接收方在收到信息时,会根据更新标志与之前的更新标志进行比较,在更新标志发生翻转时,才将接收该信息,进行下一个流程的信息处理,同时将更新标志位更新并存;如果接受到的信息更新标志与之前存储的更新标志一致时,则判断为重发的信息,直接丢弃,不进行后续的信息处理,以此来保障整个信息的正确及新鲜。
附图说明
图1为本发明实施例提供的一种CAN与UART协议互转通信保障方法流程图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
本发明以PC端上位机对双CPU进行诊断、升级为例,对本发明方法进行说明,方法流程图参见图1。
PC端上位机通过CAN协议与CPU1进行通信,CPU1与CPU2之间通过UART协议进行通信。
CPU1和CPU2中均设置有标志位,分别记作标志A、标志B。
上位机将升级信息通过CAN网络发送给CPU1,并写入CPU1的缓存中,此时CPU1校验此次升级信息与前一次的升级信息是否一致。而在实际应用当中,一般上位机发送的升级信息会与前一次不同,因此为了方便操作,本实施例在CPU1的缓存写入数据的同时,即判定信息发生改变,此时,更新标志A。
CPU1在更新标志A后,将标志A与升级信息一起打包,并通过UART协议以1M的波特率持续不断的将升级信息与标志A一同发送至CPU2。
CPU2接收到信息后,进行信息的完整性和正确性校验,此部分通过CHECSUM校验进行,在信息完整、正确的情况下才进行后续的信息更新标志位的判断。若标志A的值与上一次接收到的信息的标志A不同则执行升级流程,若值相同,则判断此次接收到的信息与前一次接收的信息相同,将此次接收到的信息丢弃。
CPU2升级成功后,生成升级成功消息并写入缓存中,同理为了方便操作,本实施例在CPU2的缓存写入数据的同时,即判定信息发生改变,此时,更新标志B。
CPU2在更新标志B后,将标志B与升级成功信息一起打包,并通过UART协议以1M的波特率持续不断的将升级成功信息与标志B一同发送至CPU1。
CPU1接收到信息后,进行信息的完整性和正确性校验,同样通过CHECSUM校验进行,在信息完整、正确的情况下才进行后续的信息更新标志位的判断。若标志B的值与上一次接收到的信息的标志B不同则将升级成功信息转发给上位机PC端,若值相同,则判断此次接收到的信息与前一次接收的信息相同,将此次接收到的信息丢弃。
在整个的UDS通信过程中,虽然CAN的波特率是500K,但实际的工作中,UDS命令流不会接连不断的进行传输,只有在极其个别的应用场景中会持续不断的进行通信数据流的传输,这就为UART能更多次的重传信息提供了更好机会,从而更加提高了此纠错机制的应用机会,更加保障了通信的可靠性。
经过实验表明,在此方案实施之前,由于通过CAN使用UDS协议升级CPU2时,在传输大量的需要更新ROM(500K Byte)的数据时,会有50%的情况出现通信过程中的错误而造成升级的失败。
而在加入此方案后,我们进行了100次的升级,均没有再次出现通信错误造成的升级失败,由此我们可以得出结论,此方案大大提高了传输的稳定性和正确率,保证了双CPU通信的功能符合商业应用要求,确认了方案的有效性。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种CAN与UART协议互转通信保障方法,该方法应用于双CPU系统,所述的双CPU系统中,CPU1通过CAN协议与CAN网络进行通信,CPU2与CPU1之间通过UART协议进行通信,其特征在于,包括:
在CPU1以及CPU2中添加标志位,该标志位用于表征信息的新鲜度;
CPU1与CPU2之间通过UART协议进行信息传递时,发送方在发送信息之前对待发送的信息进行校验,判断待发送信息是否与上一次所发送的信息一致,若校验一致,则不修改标志位,否则修改标志位;接收方在接收信息之后,提取标志位,并判断当前标志位是否与上一次接收到的信息所包含的标志位是否一致,若一致则丢弃,否则接收该信息或同时进行转发。
2.根据权利要求1所述的方法,其特征在于,接收方在接收到新发送的信息后,首先进行信息完整性及正确性校验,完整性及正确性校验通过后再提取标志位。
3.根据权利要求1-2任一项所述的方法,其特征在于,在发送下一条待发送信息之前,发送方持续通过UART协议以固有波特率向接收方发送当前信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011187799.1A CN112328524B (zh) | 2020-10-29 | 2020-10-29 | 一种can与uart协议互转通信保障方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011187799.1A CN112328524B (zh) | 2020-10-29 | 2020-10-29 | 一种can与uart协议互转通信保障方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112328524A CN112328524A (zh) | 2021-02-05 |
CN112328524B true CN112328524B (zh) | 2022-04-19 |
Family
ID=74297348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011187799.1A Active CN112328524B (zh) | 2020-10-29 | 2020-10-29 | 一种can与uart协议互转通信保障方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112328524B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965468A (zh) * | 2021-02-22 | 2021-06-15 | 上海星融汽车科技有限公司 | 车辆ecu的诊断数据发送方法、接收方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0701346A2 (de) * | 1994-09-09 | 1996-03-13 | ABBPATENT GmbH | Verfahren zur konsistenten Nachrichtenübertragung |
CN104361299A (zh) * | 2014-09-23 | 2015-02-18 | 广州日滨科技发展有限公司 | 安全系统、多重安全控制系统及读取位置信息的方法 |
CN111497762A (zh) * | 2020-04-09 | 2020-08-07 | 东风汽车集团有限公司 | 一种用于汽车电子控制器的双cpu控制系统及控制方法 |
-
2020
- 2020-10-29 CN CN202011187799.1A patent/CN112328524B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0701346A2 (de) * | 1994-09-09 | 1996-03-13 | ABBPATENT GmbH | Verfahren zur konsistenten Nachrichtenübertragung |
CN104361299A (zh) * | 2014-09-23 | 2015-02-18 | 广州日滨科技发展有限公司 | 安全系统、多重安全控制系统及读取位置信息的方法 |
CN111497762A (zh) * | 2020-04-09 | 2020-08-07 | 东风汽车集团有限公司 | 一种用于汽车电子控制器的双cpu控制系统及控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112328524A (zh) | 2021-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5245616A (en) | Technique for acknowledging packets | |
US6141784A (en) | Method and system in a data communications system for the retransmission of only an incorrectly transmitted portion of a data packet | |
CN109981480A (zh) | 一种数据传输方法及第一设备 | |
US6640325B1 (en) | Immediate negative acknowledgement for a communication network | |
CN113132063B (zh) | 一种物理层重传控制方法 | |
US6965571B2 (en) | Precise error reporting | |
CN111711609A (zh) | 一种串口通信中的协议设计方法 | |
CN103546250A (zh) | 一种用于车载终端的通信方法及系统 | |
CN111290769B (zh) | 一种在线更新配置数据的方法 | |
JP2003229875A (ja) | Can−コントローラ内部のデータ伝送におけるエラーの認識方法,can−コントローラ,プログラム,記録媒体,及び制御装置 | |
CN112328524B (zh) | 一种can与uart协议互转通信保障方法 | |
CN111752579B (zh) | 蓝牙终端升级方法、装置、存储介质与电子设备 | |
JP3996928B2 (ja) | 破損データを処理する方法 | |
US7783964B2 (en) | Redundant 3-wire communication system and method | |
US7436777B2 (en) | Failed link training | |
CN109688208B (zh) | 一种基于fc-ae-asm消息的数据加载方法 | |
CN104038327B (zh) | Fc网络的出错重传方法 | |
CN112532359B (zh) | 接收端基于数据重传数据进行内容合并的方法及装置 | |
JP2001142845A5 (zh) | ||
US8185795B1 (en) | Side channel for forward error correction used with long-haul IP links | |
GB2229896A (en) | Technique for acknowledging packets | |
JP2001007788A (ja) | 通信チャネルにおいてデータユニットを識別するための方法 | |
CN114047728B (zh) | 基于安全总线的数据同步方法 | |
JPH0955718A (ja) | データ通信装置 | |
CN114760010A (zh) | 一种可靠的串口数据传输方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |