CN115604052B - 车辆通讯交互方法、***及电子设备 - Google Patents
车辆通讯交互方法、***及电子设备 Download PDFInfo
- Publication number
- CN115604052B CN115604052B CN202211592385.6A CN202211592385A CN115604052B CN 115604052 B CN115604052 B CN 115604052B CN 202211592385 A CN202211592385 A CN 202211592385A CN 115604052 B CN115604052 B CN 115604052B
- Authority
- CN
- China
- Prior art keywords
- data
- vehicle
- frame
- frame data
- mcu
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40006—Architecture of a communication node
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
- H04L2012/40215—Controller Area Network CAN
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
本发明提供了一种车辆通讯交互方法、***及电子设备,涉及车辆通讯领域,该方法通过对变化的CAN报文数据进行摘取解析后按照通信协议格式传递给SOC,降低了MCU与SOC之间的通信总线负担,同时该方法可设置相应的ACK机制、数据重发机制、异常数据帧处理机制、数据校验机制,极大的提高了数据通信的安全性与可靠性。
Description
技术领域
本发明涉及车辆通讯领域,尤其是涉及一种车辆通讯交互方法、***及电子设备。
背景技术
随着车辆智能化水平的提高;车身的电子器件模块数量也在快速的增加,使得各个器件之间的数据交互也越来越频繁,带来的是总线上交互的数据大量的增加;由于多媒体车机作为车身信息交互的主要显示以及操作终端,其上层显示端数据依赖于底层的数据反馈;为了能保证上层的交互显示能及时准确,就需要对当前的通讯交互模式做出优化,降低MCU与SOC之间通信总线上的负担,提高数据传输的可靠性及完整性。
现有的通信交互方式多采用对CAN数据进行透明传输的方式,无法通过协议增加ACK机制、重发机制、异常帧处理机制、数据帧校验机制,存在数据丢帧、帧数据不完整等风险。同时由于车辆智能化水平的提高,车身器件数量快速增加,透明传输的CAN报文数量将会爆发性增加,这给SOC与MCU之间的通信总线带来很大的负担。同时透明传输的CAN报文未经过MCU解析,将会在SOC与MCU之间的通信总线上产生大量的无用数据报文,增加通信总线负担。
发明内容
有鉴于此,本发明的目的在于提供一种车辆通讯交互方法、***及电子设备,该方法通过对变化的CAN报文数据进行摘取解析后按照通信协议格式传递给SOC,降低了MCU与SOC之间的通信总线负担,同时该方法可设置相应的ACK机制、数据重发机制、异常数据帧处理机制、数据校验机制,极大的提高了数据通信的安全性与可靠性。
第一方面,本发明实施例提供了一种车辆通讯交互方法,该方法应用于车辆CAN总线数据通过车辆MCU与车辆SOC进行的交互过程;该方法包括:
当车辆CAN数据发生变化时,控制车辆MCU将车辆CAN数据发送至预设的消息队列中;
建立数据发送线程,并利用数据发送线程周期性读取消息队列中的车辆CAN数据;
利用预设的业务钩子函数对车辆CAN数据进行提取得到车辆CAN数据的有效数据,并将有效数据打包为帧数据发送至车辆MCU的通信层中进行缓存;
控制通信层将已缓存的帧数据通过串口通信传输至车辆SOC中。
在一些实施方式中,控制车辆MCU将车辆CAN数据发送至预设的消息队列中,包括:
初始化消息队列;其中,消息队列至少包括:NORMAL队列、ISR队列、NOACK队列;
根据车辆CAN数据的类型,分别将车辆CAN数据发送至消息队列中。
在一些实施方式中,若帧数据为需要ACK响应的帧时,将有效数据打包为帧数据发送至车辆MCU的通信层中进行缓存,包括:
利用已初始化的第一计时器进行超时计时;
当超时计时的第一时长达到预设的第一时间阈值时,判断通信层中是否接收到ACK回应;
若通信层中接收到ACK回应,则将当前帧数据缓存至车辆MCU的通信层中,并将当前帧数据标记为发送成功;
结束当前帧数据的发送过程,控制消息队列中对当前帧数据的下一帧数据进行发送。
在一些实施方式中,若通信层中未接收到ACK回应,该方法还包括:
按照第一时间阈值,循环判断通信层中是否接收到ACK回应;
当循环次数达到预设次数,且所述通信层中未收到ACK回应时,将帧数据进行舍弃。
在一些实施方式中,当车辆MCU接收到车辆SOC的帧数据后,该方法还包括:
利用串口通信获取车辆SOC的帧数据后,控制车辆MCU将帧数据保存至预设的环形缓存中;其中,帧数据中至少包括:响应数据、控制数据以及通知数据;
控制车辆MCU对环形缓存中的帧数据按照预设的字节长度以及字节数量进行循环校验;
将循环校验成功的帧数据按照车辆CAN数据的格式需求进行格式化,并控制车辆MCU将已格式化的帧数据传输至车辆CAN总线。
在一些实施方式中,控制车辆MCU对环形缓存中的帧数据按照预设的字节长度以及字节数量进行循环校验的步骤,包括:
控制车辆MCU获取环形缓存中帧数据的缓存长度;
判断帧数据的缓存长度是否达到预设的字节长度;如果是,按照预设的字节数量提取帧数据的有效数据长度,并根据有效数据长度计算得到完整帧数据的帧长度;
判断环形缓存中帧数据是否达到帧长度;如果是,则控制车辆MCU对环形缓存中的帧数据进行校验处理。
在一些实施方式中,判断环形缓存中帧数据是否达到帧长度的步骤之前,该方法还包括:
判断帧数据的帧头是否为预设的固定帧头;
如果否,则将环形缓存中帧数据的第一个字节丢弃,并重新控制车辆MCU获取环形缓存中帧数据的缓存长度。
在一些实施方式中,若环形缓存中帧数据未达到帧长度时,该方法还包括:
利用已初始化的第二计时器进行超时计时;
当超时计时的第二时长达到预设的第二时间阈值时,则将环形缓存中帧数据的固定帧头进行丢弃,并重新控制车辆MCU获取环形缓存中帧数据的缓存长度。
第二方面,本发明实施例提供了一种车辆通讯交互***,该***应用于车辆CAN总线数据通过车辆MCU与车辆SOC进行的交互过程;该***包括:
第一数据发送模块,用于当车辆CAN数据发生变化时,控制车辆MCU将车辆CAN数据发送至预设的消息队列中;
第二数据发送模块,用于建立数据发送线程,并利用数据发送线程周期性读取消息队列中的车辆CAN数据;
数据缓存模块,用于利用预设的业务钩子函数对车辆CAN数据进行提取得到车辆CAN数据的有效数据,并将有效数据打包为帧数据发送至车辆MCU的通信层中进行缓存;
数据通讯模块,用于控制通信层将已缓存的帧数据通过串口通信传输至车辆SOC中。
第三方面,本发明实施例还提供一种电子设备,包括:处理器和存储器;存储器上存储有计算机程序,计算机程序在被处理器运行时实现上述第一方面中提到的车辆通讯交互方法的步骤。
第四方面,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,其中,计算机程序被处理器运行时实现上述第一方面中提到的车辆通讯交互方法的步骤。
本发明实施例带来了以下有益效果:
本发明提供了一种车辆通讯交互方法、***及电子设备,应用于车辆CAN总线数据通过车辆MCU与车辆SOC进行的交互过程;当车辆CAN数据发生变化时,该方法首先控制车辆MCU将车辆CAN数据发送至预设的消息队列中;然后建立数据发送线程,并利用数据发送线程周期性读取消息队列中的车辆CAN数据;再利用预设的业务钩子函数对车辆CAN数据进行提取得到车辆CAN数据的有效数据,并将有效数据打包为帧数据发送至车辆MCU的通信层中进行缓存;最后控制通信层将已缓存的帧数据通过串口通信传输至车辆SOC中。该方法通过对变化的CAN报文数据进行摘取解析后按照通信协议格式传递给SOC,降低了MCU与SOC之间的通信总线负担,同时该方法可设置相应的ACK机制、数据重发机制、异常数据帧处理机制、数据校验机制,极大的提高了数据通信的安全性与可靠性。
本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种车辆通讯交互方法的流程图;
图2为本发明实施例提供的一种车辆通讯交互方法中,控制车辆MCU将车辆CAN数据发送至预设的消息队列中的流程图;
图3为本发明实施例提供的一种车辆通讯交互方法中,若帧数据为需要ACK响应的帧时,将有效数据打包为帧数据发送至车辆MCU的通信层中进行缓存的流程图;
图4为本发明实施例提供的一种车辆通讯交互方法中,若通信层中未接收到ACK回应时的流程图;
图5为本发明实施例提供的一种车辆通讯交互方法中,当车辆SOC接收到帧数据后的流程图;
图6为本发明实施例提供的一种车辆通讯交互方法中步骤S502的流程图;
图7为本发明实施例提供的一种车辆通讯交互方法中,判断环形缓存中帧数据是否达到帧长度的步骤之前的流程图;
图8为本发明实施例提供的一种车辆通讯交互方法中,若环形缓存中帧数据未达到帧长度时的流程图;
图9为本发明实施例提供的一种车辆通讯交互方法中车辆CAN总线、车辆MCU与车辆SOC的连接关系示意图;
图10为本发明实施例提供的一种车辆通讯交互方法中车辆CAN总线向车辆SOC进行数据交互的流程图;
图11为本发明实施例提供的一种车辆通讯交互方法中车辆SOC向车辆CAN总线进行数据交互的流程图;
图12为本发明实施例提供的一种车辆通讯交互***的结构示意图;
图13为本发明实施例提供的一种电子设备的结构示意图。
图标:
1210-第一数据发送模块;1220-第二数据发送模块;1230-数据缓存模块;1240-数据通讯模块;
101-处理器;102-存储器;103-总线;104-通信接口。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
随着车辆智能化水平的提高;车身的电子器件模块数量也在快速的增加,使得各个器件之间的数据交互也越来越频繁,带来的是总线上交互的数据大量的增加;由于多媒体车机作为车身信息交互的主要显示以及操作终端,其上层显示端数据依赖于底层的数据反馈;为了能保证上层的交互显示能及时准确,就需要对当前的通讯交互模式做出优化,降低MCU与SOC之间通信总线上的负担,提高数据传输的可靠性及完整性。
现有的通信交互方式多采用对CAN数据进行透明传输的方式,无法通过协议增加ACK机制、重发机制、异常帧处理机制、数据帧校验机制,存在数据丢帧、帧数据不完整等风险。同时由于车辆智能化水平的提高,车身器件数量快速增加,透明传输的CAN报文数量将会爆发性增加,这给SOC与MCU之间的通信总线带来很大的负担。同时透明传输的CAN报文未经过MCU解析,将会在SOC与MCU之间的通信总线上产生大量的无用数据报文,增加通信总线负担。基于此,本发明实施例提供了一种车辆通讯交互方法、***及电子设备,该方法通过对变化的CAN报文数据进行摘取解析后按照通信协议格式传递给SOC,降低了MCU与SOC之间的通信总线负担,同时该方法可设置相应的ACK机制、数据重发机制、异常数据帧处理机制、数据校验机制,极大的提高了数据通信的安全性与可靠性。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种车辆通讯交互方法进行详细介绍,该方法应用于车辆CAN总线数据通过车辆MCU与车辆SOC进行的交互过程,具体的,该方法如图1所示,包括:
步骤S101,当车辆CAN数据发生变化时,控制车辆MCU将车辆CAN数据发送至预设的消息队列中。
此时的数据流是车辆CAN数据发送至车辆SOC中,当车辆CAN数据发生变换后或者车机本身上有待上传的数据时,车辆MCU根据相关通讯协议将数据发送至相应的消息队列中。
步骤S102,建立数据发送线程,并利用数据发送线程周期性读取消息队列中的车辆CAN数据。
在消息队列中的车辆CAN数据在进行更新的过程中,通过数据发送线程来对消息队列进行读取,读取的过程是周期性进行的;实际场景中也可设置长连接对消息队列中的车辆CAN数据进行实时读取,但实时读取的过程也需要设置相应的周期参数来进行周期读取过程。
步骤S103,利用预设的业务钩子函数对车辆CAN数据进行提取得到车辆CAN数据的有效数据,并将有效数据打包为帧数据发送至车辆MCU的通信层中进行缓存。
通过数据发送线程从消息队列中读取到车辆CAN数据后,用业务钩子函数取出需要发送的有效数据,并对其进行组包后得到帧数据,再将帧数据发送到通信层缓存中。
步骤S104,控制通信层将已缓存的帧数据通过串口通信传输至车辆SOC中。
当MCU有数据请求时,通过控制通信层将缓存的帧数据通过串口通信发送到车辆SOC中。可见,该方法可对变化的CAN报文数据进行摘取、解析后,按照通信协议格式传递给SOC,降低了MCU与SOC之间的通信总线负担。
在一些实施方式中,控制车辆MCU将车辆CAN数据发送至预设的消息队列中,如图2所示,包括:
步骤S201,初始化消息队列;其中,消息队列至少包括:NORMAL队列、ISR队列、NOACK队列。
根据使用情况的不同,本协议中消息队列可分为以下三类,分别为NORMAL队列、ISR队列、NOACK队列,在对消息队列进行初始化的过程中,需要对上述三类消息队列分别进行初始化。
步骤S202,根据车辆CAN数据的类型,分别将车辆CAN数据发送至消息队列中。
数据发送线程周期性的读取这三个队列的数据,当读取成功后将会取出数据,调用业务钩子函数取出需要发送的有效信息进行组包并将帧数据发送到通信层缓存中,等待串口发出。
对于需要ACK(应答位)的帧数据,在一些实施方式中,若帧数据为需要ACK响应的帧时,将有效数据打包为帧数据发送至车辆MCU的通信层中进行缓存,如图3所示,包括:
步骤S301,利用已初始化的第一计时器进行超时计时;
步骤S302,当超时计时的第一时长达到预设的第一时间阈值时,判断通信层中是否接收到ACK回应;
步骤S303,若通信层中接收到ACK回应,则将当前帧数据缓存至车辆MCU的通信层中,并将当前帧数据标记为发送成功。
步骤S304,结束当前帧数据的发送过程,控制消息队列中对当前帧数据的下一帧数据进行发送。
具体的,在将数据帧发送到通信层缓存中的同时开启超时计时,可在50ms后未收到ACK回应后将会开启重发,在一些实施方式中,若通信层中未接收到ACK回应,如图4所示,该方法还包括:
步骤S401,按照第一时间阈值,循环判断通信层中是否接收到ACK回应;
步骤S402,当循环次数达到预设次数,且所述通信层中未收到ACK回应时,将帧数据进行舍弃。
在上述实施例中的场景中,在将数据帧发送到通信层缓存中的同时开启超时计时,在50ms后未收到ACK回应后将会开启重发;最多重发3次。重发3次后仍无ACK回应则舍弃本帧数据的发送,重新周期性开始,继续读消息队列开始下一帧发送。
在一些实施方式中,当车辆MCU接收到车辆SOC的帧数据后,如图5所示,该方法还包括:
步骤S501,利用串口通信获取车辆SOC的帧数据后,控制车辆MCU将帧数据保存至预设的环形缓存中。
其中,帧数据中至少包括:响应数据、控制数据以及通知数据。
步骤S502,控制车辆MCU对环形缓存中的帧数据按照预设的字节长度以及字节数量进行循环校验。
车辆MCU通过周期性的循环校验,以查看环形缓存中帧数据的字节长度以及字节数量,并通过字节长度以及字节数量对其进行校验。
步骤S503,将循环校验成功的帧数据按照车辆CAN数据的格式需求进行格式化,并控制车辆MCU将已格式化的帧数据传输至车辆CAN总线。
循环校验完成后,对于校验成功的帧数据按照车辆CAN数据的格式需求进行格式化处理,并将已格式化的帧数据通过车辆CAN总线发送至相应的器件模块中进行数据处理。
在一些实施方式中,控制车辆MCU对环形缓存中的帧数据按照预设的字节长度以及字节数量进行循环校验的步骤S502,如图6所示,包括:
步骤S601,控制车辆MCU获取环形缓存中帧数据的缓存长度;
步骤S602,判断帧数据的缓存长度是否达到预设的字节长度;如果是,按照预设的字节数量提取帧数据的有效数据长度,并根据有效数据长度计算得到完整帧数据的帧长度;
步骤S603,判断环形缓存中帧数据是否达到帧长度;如果是,则控制车辆MCU对环形缓存中的帧数据进行校验处理。
实际场景中,车辆MCU周期性的查看环形缓存中数据数量,当环形缓存数据的数据量达到12字节后(12字节包括4字节帧头+2字节帧类型属性+4字节CMD+2字节有效数据长度),则取出有效数据长度计算出完整帧的帧长度。然后向后继续周期查看环形缓存中数据数量是否达到计算出的整帧的帧长。若环形缓存中数据数量达到计算出的整帧的帧长,则进行和校验处理,和校验成功则此帧数据接收成功并进行相应的数据处理。
在一些实施方式中,判断环形缓存中帧数据是否达到帧长度的步骤之前,如图7所示,该方法还包括:
步骤S701,判断帧数据的帧头是否为预设的固定帧头;
步骤S702,如果否,则将环形缓存中帧数据的第一个字节丢弃,并重新控制车辆MCU获取环形缓存中帧数据的缓存长度。
此时,当环形缓存数据的数据量达到12字节后,MCU判断前四个字节是否为固定帧头,若不是固定帧头,则将环形队列中的数据第一个字节丢弃,继续向后查看等待满12字节。若前四个字节是固定帧头,则取出有效数据长度计算出完整帧的帧长度。然后向后继续周期查看环形缓存中数据数量是否达到计算出的整帧的帧长。
在一些实施方式中,若环形缓存中帧数据未达到帧长度时,如图8所示,该方法还包括:
步骤S801,利用已初始化的第二计时器进行超时计时;
步骤S802,当超时计时的第二时长达到预设的第二时间阈值时,则将环形缓存中帧数据的固定帧头进行丢弃,并重新控制车辆MCU获取环形缓存中帧数据的缓存长度。
若环形缓存中响应的帧数据未达到帧长度时,则设置超时时间,超过500ms未达到整帧数量,则丢弃环形缓存中的前四个字节继续向后查看等待满12字节。若超时时间内环形缓存中数据数量达到计算出的整帧的帧长,则进行和校验处理,和校验成功则此帧数据接收成功并进行相应的数据处理。若校验失败,则丢弃环形缓存中的前四个字节的帧头,继续向后查看等待满12字节。
实际场景中,在上述实施例的交互过程中,车辆CAN总线、车辆MCU与车辆SOC的连接关系的结构示意图如图9所示。对于车身CAN总线数据,MCU将会对车身CAN总线变化的数据解析后转变为本发明的通信协议数据格式上传到SOC。对于SOC下发的数据,MCU将会解析后转换为CAN数据格式发送到CAN总线。
对于车辆CAN总线向车辆SOC进行数据交互的过程中,其流程图如图10所示;具体的说,当CAN数据发生变化后或者车机本身有上传的数据,MCU将根据通信协议将数据发送到对应的消息队列中。根据使用情况的不同,本协议中消息队列分为三类,分别为NORMAL队列、ISR队列、NOACK队列。数据发送线程周期性的读取这三个队列的数据,当读取成功后将会取出数据,调用业务钩子函数取出需要发送的有效信息进行组包并将帧数据发送到通信层缓存中,等待串口发出。对于需要ACK(应答位)的数据帧,在将数据帧发送到通信层缓存中的同时开启超时计时,在50ms后未收到ACK回应后将会开启重发,最多重发3次。重发3次后仍无ACK回应则舍弃本帧数据的发送,重新周期性开始,继续读消息队列开始下一帧发送。
对于车辆SOC向车辆CAN总线进行数据交互的过程中,其流程图如图11所示;具体的说,串口将接收到的数据放置到指定的环形缓存中。MCU周期性的查看环形缓存中数据数量。当环形缓存数据的数据量达到12字节后(12字节包括4字节帧头+2字节帧类型属性+4字节CMD+2字节有效数据长度),MCU判断前四个字节是否为固定帧头,若不是固定帧头,则将环形队列中的数据第一个字节丢弃,继续向后查看等待满12字节。若前四个字节是固定帧头,则取出有效数据长度计算出完整帧的帧长度。然后向后继续周期查看环形缓存中数据数量是否达到计算出的整帧的帧长。若未达到,则设置超时时间,超过500ms未达到整帧数量,则丢弃环形缓存中的前四个字节继续向后查看等待满12字节。若超时时间内环形缓存中数据数量达到计算出的整帧的帧长,则进行和校验处理,和校验成功则此帧数据接收成功并进行相应的数据处理。若校验失败,则丢弃环形缓存中的前四个字节的帧头,继续向后查看等待满12字节。
可见,从图10和图11中可知,该车辆通讯交互方法对车身器件的数据进行解析后按照通信协议数据格式进行传输,降低了通信总线负担。同时,该方法可设置ACK机制,协议数据报文按照是否需要应答ACK来区分,分为NEED_ACK协议报文和NO_ACK协议报文,由数据结构中FRAME0字段来区分,为用户提供可选择的发送方式。该方法具有数据重发机制,一方向另一方发送需要ACK的报文后,指定时间超时未收到ACK回应,则自动重新发送报文。保证了数据通信的可靠性。并且还设置有丢帧处理,对接收到的SOC数据需保证数据帧头的唯一性,按照丢弃1字节的方式向后逐个寻找,直到找到帧头。通过这种方式达到过滤有效数据帧的效果。该方法还具有超时处理能力,对接收到的SOC数据,收到帧头及数据长度后,超时未收到指定的有效数据数量,则丢弃该数据帧头,重新向后寻找数据帧头。有效过滤掉了异常帧数据。同时,该方法具有数据校验机制,对数据帧进行和校验,保证数据发送到接收过程中的完整性。
通过上述实施例中的车辆通讯交互方法可知,该方法通过对变化的CAN报文数据进行摘取解析后按照通信协议格式传递给SOC,降低了MCU与SOC之间的通信总线负担,同时该方法可设置相应的ACK机制、数据重发机制、异常数据帧处理机制、数据校验机制,极大的提高了数据通信的安全性与可靠性。
对应于上述车辆通讯交互方法实施例,本发明实施例提供了一种车辆通讯交互***,如图12所示,该***包括:
该***应用于车辆CAN总线数据通过车辆MCU与车辆SOC进行的交互过程;该***包括:
第一数据发送模块1210,用于当车辆CAN数据发生变化时,控制车辆MCU将车辆CAN数据发送至预设的消息队列中;
第二数据发送模块1220,用于建立数据发送线程,并利用数据发送线程周期性读取消息队列中的车辆CAN数据;
数据缓存模块1230,用于利用预设的业务钩子函数对车辆CAN数据进行提取得到车辆CAN数据的有效数据,并将有效数据打包为帧数据发送至车辆MCU的通信层中进行缓存;
数据通讯模块1240,用于控制通信层将已缓存的帧数据通过串口通信传输至车辆SOC中。
在一些实施方式中,第一数据发送模块1210,还用于:初始化消息队列;其中,消息队列至少包括:NORMAL队列、ISR队列、NOACK队列;根据车辆CAN数据的类型,分别将车辆CAN数据发送至消息队列中。
在一些实施方式中,若帧数据为需要ACK响应的帧时,数据缓存模块1230,还用于:利用已初始化的第一计时器进行超时计时;当超时计时的第一时长达到预设的第一时间阈值时,判断通信层中是否接收到ACK回应;若通信层中接收到ACK回应,则将当前帧数据缓存至车辆MCU的通信层中,并将当前帧数据标记为发送成功;结束当前帧数据的发送过程,控制消息队列中对当前帧数据的下一帧数据进行发送。
在一些实施方式中,若通信层中未接收到ACK回应,数据缓存模块1230,还用于:按照第一时间阈值,循环判断通信层中是否接收到ACK回应;当循环次数达到预设次数,且所述通信层中未收到ACK回应时,将帧数据进行舍弃。
在一些实施方式中,车辆通讯交互***还包括:车辆SOC数据交互模块;当车辆MCU接收到车辆SOC的帧数据后,车辆SOC数据交互模块用于:利用串口通信获取车辆SOC的帧数据后,控制车辆MCU将帧数据保存至预设的环形缓存中;其中,帧数据中至少包括:帧数据、控制数据以及通知数据;控制车辆MCU对环形缓存中的帧数据按照预设的字节长度以及字节数量进行循环校验;将循环校验成功的帧数据按照车辆CAN数据的格式需求进行格式化,并控制车辆MCU将已格式化的帧数据传输至车辆CAN总线。
在一些实施方式中,车辆SOC数据交互模块还用于:控制车辆MCU获取环形缓存中帧数据的缓存长度;判断帧数据的缓存长度是否达到预设的字节长度;如果是,按照预设的字节数量提取帧数据的有效数据长度,并根据有效数据长度计算得到完整帧数据的帧长度;判断环形缓存中帧数据是否达到帧长度;如果是,则控制车辆MCU对环形缓存中的帧数据进行校验处理。
在一些实施方式中,车辆SOC数据交互模块用于:判断帧数据的帧头是否为预设的固定帧头;如果否,则将环形缓存中帧数据的第一个字节丢弃,并重新控制车辆MCU获取环形缓存中帧数据的缓存长度。
在一些实施方式中,车辆SOC数据交互模块用于:若环形缓存中帧数据未达到帧长度时,利用已初始化的第二计时器进行超时计时;当超时计时的第二时长达到预设的第二时间阈值时,则将环形缓存中帧数据的固定帧头进行丢弃,并重新控制车辆MCU获取环形缓存中帧数据的缓存长度。
本发明实施例提供的车辆通讯交互***与上述实施例提供的车辆通讯交互方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。为简要描述,实施例部分未提及之处,可参考前述实施例中相应内容。
本实施例还提供一种电子设备,为该电子设备的结构示意图如图13所示,该设备包括处理器101和存储器102;其中,存储器102用于存储一条或多条计算机指令,一条或多条计算机指令被处理器执行,以实现上述车辆通讯交互方法。
图13所示的电子设备还包括总线103和通信接口104,处理器101、通信接口104和存储器102通过总线103连接。
其中,存储器102可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。总线103可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图13中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
通信接口104用于通过网络接口与至少一个用户终端及其它网络单元连接,将封装好的IPv4报文或IPv4报文通过网络接口发送至用户终端。
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器102,处理器101读取存储器102中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行前述实施例的方法的步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、设备和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以用软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (9)
1.一种车辆通讯交互方法,其特征在于,所述方法应用于车辆CAN总线数据通过车辆MCU与车辆SOC进行的交互过程;所述方法包括:
当车辆CAN数据发生变化时,控制所述车辆MCU将所述车辆CAN数据发送至预设的消息队列中;
建立数据发送线程,并利用所述数据发送线程周期性读取所述消息队列中的所述车辆CAN数据;
利用预设的业务钩子函数对所述车辆CAN数据进行提取得到所述车辆CAN数据的有效数据,并将所述有效数据打包为帧数据发送至所述车辆MCU的通信层中进行缓存;
控制所述通信层将已缓存的所述帧数据通过串口通信传输至所述车辆SOC中;
若所述帧数据为需要ACK响应的帧时,将所述有效数据打包为帧数据发送至所述车辆MCU的通信层中进行缓存,包括:
利用已初始化的第一计时器进行超时计时;
当所述超时计时的第一时长达到预设的第一时间阈值时,判断所述通信层中是否接收到ACK回应;
若所述通信层中接收到ACK回应,则将所述帧数据缓存至所述车辆MCU的通信层中,并将当前所述帧数据标记为发送成功;
结束当前所述帧数据的发送过程,控制所述消息队列中对当前所述帧数据的下一帧数据进行发送。
2.根据权利要求1所述的车辆通讯交互方法,其特征在于,控制所述车辆MCU将所述车辆CAN数据发送至预设的消息队列中,包括:
初始化所述消息队列;其中,所述消息队列至少包括:NORMAL队列、ISR队列、NOACK队列;
根据所述车辆CAN数据的类型,分别将所述车辆CAN数据发送至所述消息队列中。
3.根据权利要求1所述的车辆通讯交互方法,其特征在于,若所述通信层中未接收到ACK回应,所述方法还包括:
按照所述第一时间阈值,循环判断所述通信层中是否接收到ACK回应;
当循环次数达到预设次数,且所述通信层中未收到ACK回应时,将所述帧数据进行舍弃。
4.根据权利要求1所述的车辆通讯交互方法,其特征在于,当所述车辆MCU接收到所述车辆SOC的帧数据后,所述方法还包括:
利用所述串口通信获取所述车辆SOC的帧数据后,控制所述车辆MCU将所述帧数据保存至预设的环形缓存中;其中,所述帧数据中至少包括:响应数据、控制数据以及通知数据;
控制所述车辆MCU对所述环形缓存中的所述帧数据按照预设的字节长度以及字节数量进行循环校验;
将循环校验成功的所述帧数据按照所述车辆CAN数据的格式需求进行格式化,并控制所述车辆MCU将已格式化的所述帧数据传输至所述车辆CAN总线。
5.根据权利要求4所述的车辆通讯交互方法,其特征在于,控制所述车辆MCU对所述环形缓存中的所述帧数据按照预设的字节长度以及字节数量进行循环校验的步骤,包括:
控制所述车辆MCU获取所述环形缓存中所述帧数据的缓存长度;
判断所述帧数据的缓存长度是否达到预设的所述字节长度;如果是,按照预设的所述字节数量提取所述帧数据的有效数据长度,并根据所述有效数据长度计算得到完整帧数据的帧长度;
判断所述环形缓存中所述帧数据是否达到所述帧长度;如果是,则控制所述车辆MCU对所述环形缓存中的所述帧数据进行校验处理。
6.根据权利要求5所述的车辆通讯交互方法,其特征在于,判断所述环形缓存中所述帧数据是否达到所述帧长度的步骤之前,所述方法还包括:
判断所述帧数据的帧头是否为预设的固定帧头;
如果否,则将所述环形缓存中所述帧数据的第一个字节丢弃,并重新控制所述车辆MCU获取所述环形缓存中所述帧数据的缓存长度。
7.根据权利要求6所述的车辆通讯交互方法,其特征在于,若所述环形缓存中所述帧数据未达到所述帧长度时,所述方法还包括:
利用已初始化的第二计时器进行超时计时;
当所述超时计时的第二时长达到预设的第二时间阈值时,则将所述环形缓存中所述帧数据的固定帧头进行丢弃,并重新控制所述车辆MCU获取所述环形缓存中所述帧数据的缓存长度。
8.一种车辆通讯交互***,其特征在于,所述***应用于车辆CAN总线数据通过车辆MCU与车辆SOC进行的交互过程;所述***包括:
第一数据发送模块,用于当车辆CAN数据发生变化时,控制所述车辆MCU将所述车辆CAN数据发送至预设的消息队列中;
第二数据发送模块,用于建立数据发送线程,并利用所述数据发送线程周期性读取所述消息队列中的所述车辆CAN数据;
数据缓存模块,用于利用预设的业务钩子函数对所述车辆CAN数据进行提取得到所述车辆CAN数据的有效数据,并将所述有效数据打包为帧数据发送至所述车辆MCU的通信层中进行缓存;
数据通讯模块,用于控制所述通信层将已缓存的所述帧数据通过串口通信传输至所述车辆SOC中;
若所述帧数据为需要ACK响应的帧时,所述数据缓存模块在将所述有效数据打包为帧数据发送至所述车辆MCU的通信层中进行缓存的过程中,还用于:利用已初始化的第一计时器进行超时计时;当所述超时计时的第一时长达到预设的第一时间阈值时,判断所述通信层中是否接收到ACK回应;若所述通信层中接收到ACK回应,则将所述帧数据缓存至所述车辆MCU的通信层中,并将当前所述帧数据标记为发送成功;结束当前所述帧数据的发送过程,控制所述消息队列中对当前所述帧数据的下一帧数据进行发送。
9.一种电子设备,其特征在于,包括:处理器和存储装置;所述存储装置上存储有计算机程序,所述计算机程序在被所述处理器运行时实现如上述权利要求1至7任一项所述的车辆通讯交互方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211592385.6A CN115604052B (zh) | 2022-12-13 | 2022-12-13 | 车辆通讯交互方法、***及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211592385.6A CN115604052B (zh) | 2022-12-13 | 2022-12-13 | 车辆通讯交互方法、***及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115604052A CN115604052A (zh) | 2023-01-13 |
CN115604052B true CN115604052B (zh) | 2023-03-28 |
Family
ID=84852228
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211592385.6A Active CN115604052B (zh) | 2022-12-13 | 2022-12-13 | 车辆通讯交互方法、***及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115604052B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472313B (zh) * | 2023-12-28 | 2024-04-16 | 深圳市航盛电子股份有限公司 | 显示控制***及双联屏 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1191747A2 (en) * | 2000-08-02 | 2002-03-27 | National Instruments Corporation | System and method for interfacing a can device and a peripheral device |
WO2013121545A1 (ja) * | 2012-02-15 | 2013-08-22 | トヨタ自動車株式会社 | 車両用電子制御装置、データ受信方法 |
CN113341922A (zh) * | 2021-06-02 | 2021-09-03 | 英博超算(南京)科技有限公司 | 基于lcm的域控制器故障诊断*** |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005220B (zh) * | 2015-06-09 | 2018-01-05 | 上海网车科技有限公司 | 车载仪表集成车联网***的设计方法 |
US10237690B2 (en) * | 2017-06-28 | 2019-03-19 | Nissan North America, Inc | Vehicle sensing and access control for on-demand services |
CN111599168B (zh) * | 2020-04-01 | 2021-12-21 | 广东中科臻恒信息技术有限公司 | 基于路侧单元的道路交通信息采集方法、设备、存储介质 |
CN113194440B (zh) * | 2021-04-28 | 2022-10-04 | 西安电子科技大学 | 车联网中传输资源的抢占方法 |
CN115437975A (zh) * | 2022-06-14 | 2022-12-06 | 北京罗克维尔斯科技有限公司 | 一种数据处理方法、装置、电子设备、存储介质及车辆 |
-
2022
- 2022-12-13 CN CN202211592385.6A patent/CN115604052B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1191747A2 (en) * | 2000-08-02 | 2002-03-27 | National Instruments Corporation | System and method for interfacing a can device and a peripheral device |
WO2013121545A1 (ja) * | 2012-02-15 | 2013-08-22 | トヨタ自動車株式会社 | 車両用電子制御装置、データ受信方法 |
CN113341922A (zh) * | 2021-06-02 | 2021-09-03 | 英博超算(南京)科技有限公司 | 基于lcm的域控制器故障诊断*** |
Also Published As
Publication number | Publication date |
---|---|
CN115604052A (zh) | 2023-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111083161A (zh) | 数据传输的处理方法及装置、物联网设备 | |
CN115604052B (zh) | 车辆通讯交互方法、***及电子设备 | |
CN110830460B (zh) | 一种连接建立方法、装置、电子设备及存储介质 | |
CN109787722A (zh) | 数据传输方法、装置和服务器 | |
WO2014135038A1 (zh) | 基于pcie总线的报文传输方法与装置 | |
CN110138809A (zh) | 一种面向以太网控制器接收链路的tcp报文拼接***和方法 | |
CN109450912B (zh) | 数据传输方法、装置和设备 | |
CN110445585A (zh) | 基于ppp数据帧组帧和解帧硬件加速器 | |
WO2021134418A1 (zh) | 一种数据校验方法及装置 | |
CN112261142A (zh) | 一种rdma网络的数据重传方法、装置及fpga | |
CN113709490A (zh) | 一种视频压缩方法、装置、***及介质 | |
CN114422617B (zh) | 一种报文处理方法、***及计算机可读存储介质 | |
CN109728879B (zh) | 串口突发接入应用层slip协议报文同步纠错方法 | |
US9544401B2 (en) | Device and method for data communication using a transmission ring buffer | |
CN114338270B (zh) | 数据通信方法、装置、电子设备及存储介质 | |
CN116112536A (zh) | 一种tcp-串口通信透传的方法及装置 | |
CN115622944A (zh) | 基于多并行度下数据流的tcp拼包方法和*** | |
WO2022111326A9 (zh) | 一种数据传输方法、装置、电子设备和存储介质 | |
CN115348333A (zh) | 基于udp双端通信交互的数据传输方法、***及设备 | |
CN110493081B (zh) | 游戏客户端的网络流量确定方法、装置、设备及存储介质 | |
CN111949542B (zh) | 回归测试或者压力测试的生成数据的提取方法及装置 | |
EP2726992B1 (en) | Network control model driver | |
CN112230880A (zh) | 一种数据传输控制方法、装置、fpga及介质 | |
CN113747206B (zh) | 数据回传控制方法和***、显示屏控制器及显示控制卡 | |
CN114979172B (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 |