技术领域
[0001] 本发明涉及车辆通讯领域,特别是涉及一种多通道车辆通讯系统及控制方法、设备及介质。
相关背景技术
[0002] 在目前的车辆的T‑BOX(Telematics BOX,车载通信终端)产品中,包含4G/5G通讯模块和MCU(Microcontroller Unit,微控制器单元,在汽车中,MCU被用作ECU(Electronic Control Unit,电子控制单元)的核心部件,用于执行ECU的计算和控制功能,MCU是ECU的核心处理单元,具有更高级的计算和控制功能,其负责解析和执行ECU的软件程序,处理传感器输入和执行器输出之间的逻辑关系,MCU还负责管理系统存储器、时钟、通信接口等硬件资源,并协调各个子系统的工作)两大部分。
[0003] 在传统设计中,通讯模块和MCU之间的信号对应引脚的功能都是固定的,其在程序和硬件初始化后就被固定下来了,但车辆ECU的硬件失效是随机的,如在运输、安装和运行过程中,会遭遇到各种意外情况,可能造成部分硬件功能的失效,这时若再按照原定的通信逻辑进行通讯,则可能会导致各种通讯故障,进而影响到车辆的正常使用。
[0004] 因此,如何在部分硬件失效的情况下,仍能保证车辆的基本功能正常使用,并让车厂提前感知到故障,是当前亟需解决的技术问题。
具体实施方式
[0018] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0019] T‑BOX作为车联网的重要设备,承担了数据通道的作用,如将采集到的车辆CAN数据上传到云端服务器或TSP平台(Telematics Service Provider,内容服务提供者,各个汽车制造厂商建立的基于数据和服务的车联网平台系统)、接收手机等远程控车的命令并下发给车辆相关的ECU、接收整车ECU升级的固件包并发起升级请求等。为实现该功能,T‑BOX中包含了两个主要部分:一个4G或5G通讯模块,用于远程无线通讯,和TSP平台建立通信连接;一个MCU芯片,用于和整车的CAN网络进行通讯,控制T‑BOX进入休眠或唤醒等状态。所有的数据流都经过这两个功能模块,因此,这两个模块之间的通讯的可靠性非常重要,若通讯链路一旦出现问题,则整车的远程控制、休眠唤醒、OTA升级(Over The Air,空中下载技术,在线车辆设备软件升级)等操作都无法实现。
[0020] 当前行业内在设计T‑BOX时,通讯模块和MCU之间一般通过两个GPIO信号,外加一个5线SPI接口进行连接,如图1所示。其中,图1中的GPIO信号的DTR信号用于MCU在休眠状态下唤醒通讯模块,如用户用钥匙打开车门时MCU就通过DTR信号唤醒4G/5G通讯模块;RI信号用于在休眠状态下,通讯模块唤醒MCU,比如收到短信或电话时远程唤醒车辆。
[0021] 5线SPI接口中,以4G/5G通讯模块为主模块,MCU模块为从模块,图1中的SCLK是时钟信号,用于主从模块之间的时钟同步;CS是选择信号,用于选择SPI从设备;MOSI是数据信号,由主模块发出,从模块接收;MISO是数据信号,由从模块发出,主模块接收,主从模块可以同时收发数据;SYNC是同步信号,当主从模块之间的数据不同步时,主模块会发送同步信号给从模块,重新进行信号同步。通讯模块内部通过周期性的调用SPI接口传输和发送数据,如10毫秒一个周期。
[0022] 这些GPIO接口和SPI接口的信号在初始化完成后,通信功能都被固定,不再动态调整。例如DTR信号引脚因为硬件失效等原因,导致该信号中断,会致使MCU无法通过该信号唤醒通讯模块,当车主开车时就无法使用车机导航等功能;或者是整车休眠时通讯模块一直处于唤醒状态,无法休眠,时间过长会耗尽车辆的蓄电池电量,导致车辆无法启动;如果RI信号线失效,通讯模块就无法唤醒MCU,车主的远控指令就无法生效;如果SPI接口的电平转换芯片失效,将会导致车辆CAN数据无法上传,无法进行远程升级等操作。这些问题都是由于通讯模块和MCU的通讯链路过于单一,且硬件上没有冗余备份,软件上无法进行动态调整导致的,因此,一旦部分关键器件出现失效,将会影响车辆的正常使用。
[0023] 所以,针对现有技术方案在通信链路和重要信号上没有备份的不足之处,提出本申请的一种多通道车辆通讯系统。
[0024] 如图2所示,本申请所述的一种多通道车辆通讯系统,被配置于车辆的T‑BOX装置中,T‑BOX装置包括车辆的通讯模块(即图2中的4G/5G通讯模块)和车辆的微控单元(即图2中的MCU芯片)。
[0025] 其中,多通道车辆通讯系统包括GPIO接口组(即图2中的GPIO‑M和GPIO‑S)、串行通信接口组(即图2中的串口M和串口S)和SPI接口组(即图2中的6线SPI主机和6线SPI从机)。
[0026] GPIO接口组用于传输通讯模块向微控单元发送的控制唤醒信号(即图2中的RI信号),以及微控单元向通讯模块发送的通信唤醒信号(即图2中的DTR信号),其中,控制唤醒信号用于唤醒处于休眠状态的微控单元;通信唤醒信号用于唤醒处于休眠状态的通讯模块。
[0027] RI信号是通讯模块发出给微控单元的信号,用于在收到短信、电话时唤醒微控单元,进而唤醒整个车辆的CAN网络,该信号失效时会导致车辆无法被唤醒,远控指令失效。
[0028] DTR信号是微控单元发出给通讯模块的信号,用于唤醒通讯模块,提供整车的无线通信服务,该信号失效时会导致车机导航、车载娱乐功能等无法使用。
[0029] 进一步,GPIO接口组包括通过第一电平转换芯片(即图2中的电平转换芯片1)互相连接的第一GPIO接口(即图2中的GPIO‑M)和第二GPIO接口(即图2中的GPIO‑S);第一GPIO接口与通讯模块通讯连接,用于向微控单元发送控制唤醒信号,以及接收微控单元发送的通信唤醒信号;第二GPIO接口与微控单元通讯连接,用于向通讯模块发送通信唤醒信号,以及接收通讯模块发送的控制唤醒信号。
[0030] 串行通信接口组用于传输通讯模块与微控单元之间的满足预设的数据量要求和预设的数据类型要求的指令数据(即图2中的TX信号和RX信号),即重要但数据量少的数据,提供全双工的信号通信,串行通信接口组作为SPI接口组的补充,避免因为模块内部的SPI控制器失效或电平转换芯片故障,导致通信无法进行。
[0031] 进一步,串行通信接口组包括通过第一电平转换芯片互相连接的第一通信接口(即图2中的串口M)和第二通信接口(即图2中的串口S);第一通信接口与通讯模块通讯连接,用于向微控单元发送指令数据,以及接收微控单元发送的指令数据;第二通信接口与微控单元通讯连接,用于向通讯模块发送指令数据,以及接收通讯模块发送的指令数据。
[0032] SPI接口组用于传输通讯模块与微控单元之间的SPI数据,SPI数据的数据量大于指令数据的数据量,SPI数据为数据量大、发送频繁的周期信号数据,如CAN周期信号或者ECU固件升级数据。
[0033] 进一步,SPI接口组包括通过第二电平转换芯片(即图2中的电平转换芯片2)互相连接的第一SPI接口(即图2中的6线SPI主机)和第二SPI接口(即图2中的6线SPI从机);第一SPI接口与通讯模块通讯连接,用于向微控单元发送SPI数据,以及接收微控单元发送的SPI数据;第二SPI接口与微控单元通讯连接,用于向通讯模块发送SPI数据,以及接收通讯模块发送的SPI数据。
[0034] 其中,SPI接口组的第一SPI接口和第二SPI接口之间通过MRdy信号线、SRdy信号线、SCLK信号线、CS信号线、MISO信号线、MOSI信号线连接。
[0035] MRdy信号线用于传输通讯模块向微控单元发送的MRdy信号,MRdy信号为通知微控单元以接收SPI数据的准备信号。
[0036] MRdy信号是通讯模块发送给微控单元的信号,当通讯模块有SPI数据需要发送时,拉低MRdy信号,通知微控单元准备好DMA内存(Direct Memory Access,直接内存访问)以接收SPI数据;当微控单元准备好后会拉低SRdy信号,通知通讯模块允许发送,然后通讯模块通过SCLK、CS、MISO、MOSI四根信号线同时发送和接收数据。
[0037] SRdy信号线用于传输微控单元向通讯模块发送的SRdy信号,SRdy信号为通知通讯模块以发送SPI数据的准备信号。
[0038] 当微控单元有SPI数据需要发送时,也会主动拉低SRdy信号,通知通讯模块发起SPI请求,以接收微控单元的数据。
[0039] SCLK信号线用于传输通讯模块向微控单元发送的时钟信号。
[0040] SCLK信号是时钟信号,在传输数据时,从通讯模块输出到微控单元,以提供时钟同步功能。
[0041] CS信号线用于传输通讯模块向微控单元发送的片选信号,片选信号为使能微控单元的SPI功能的使能信号。
[0042] MISO信号线用于传输微控单元向通讯模块发送的SPI数据。
[0043] MOSI信号线用于传输通讯模块向微控单元发送的SPI数据。
[0044] GPIO接口组和串行通信接口组共用一颗电平转换芯片(即第一电平转换芯片),SPI接口组单独用一颗电平转换芯片(即第二电平转换芯片),以使当有一颗电平转换芯片出现硬件故障时,另外一颗电平转换芯片提供的通道仍可以保证系统基本通信功能。
[0045] 除此之外,MRdy信号线还用于传输通讯模块向微控单元发送的控制唤醒信号,SRdy信号线还用于传输微控单元向通讯模块发送的通信唤醒信号,MRdy信号线和SRdy信号线分别作为RI信号和DTR信号的备份,软件上周期性的检测串行通信接口组的通信链路和SPI通道的心跳,当发现其中一路通道不通时,动态切换到另外一路,必要时减少CAN数据的传输量。在休眠唤醒时,记录RI信号和DTR信号的状态,发现对应的硬件失效时,软件把相关的功能切换到MRdy信号和SRdy信号上,以实现通信故障的恢复。
[0046] 本发明在硬件上增加一个串口通信链路(TX信号和RX信号),并把5线SPI信号的通信模式改为6线SPI信号的通信模式,在现有的T‑BOX装置只增加3条信号线的情况下,实现6线SPI信号共存,并通过两颗电平转换芯片进行连接,提高了现有方案的硬件冗余度,且6线SPI信号中MRdy信号和SRdy信号可作为RI信号和DTR信号的冗余备份,在通信链路上做到了双备份,软件上对硬件功能进行实时监测,并动态调整通信链路,在用户无感知的情况下,实现通信故障的恢复。
[0047] 此外,本申请还提供了一种多通道车辆通讯系统的控制方法,应用于上述的多通道车辆通讯系统,该方法包括:通讯模块每隔预设的检测时段,通过串行通信接口组和SPI接口组,同时向微控单元发送心跳检测信号;
微控单元在接收到心跳检测信号后,向通讯模块发送心跳应答包;
在接收时段内,若串行通信接口组和SPI接口组的任一接口接收到了心跳应答包,则将该接口的心跳应答包的接收状态确定为正常状态;若串行通信接口组和SPI接口组的任一接口未接收到心跳应答包,则将该接口的心跳应答包的接收状态确定为异常状态;其中,接收时段的开始时间为通讯模块发送心跳应答包的时间,接收时段的长度为预设的时间长度;
若串行通信接口组的任一接口的心跳应答包的接收状态为异常状态,则将串行通信接口组的通信功能切换至SPI接口组;
若SPI接口组的任一接口的心跳应答包的接收状态为异常状态,则将SPI接口组的通信功能切换至串行通信接口组。
[0048] 如图3所示,当微控单元唤醒通讯模块时,微控单元端同时拉低DTR信号和SRdy信号,并在SPI从接口上准备唤醒命令,等待通讯模块端通过SPI信号读取数据。通讯模块被唤醒后,会检测DTR和SRdy信号对应引脚的触发状态,如果都触发了则表示这两个信号链路都是正常的,否则其中一条链路出现问题,标记为失效状态(即异常状态),并保存相关检测记录,然后通过TSP平台上报故障信息。
[0049] 如图4所示,当通讯模块唤醒微控单元时,通讯模块同时拉低RI信号和MRdy信号,并在SPI主接口上准备唤醒命令。微控单元被唤醒后会检测RI信号和MRdy信号对应引脚的触发状态,如果都触发了则表示从通讯模块到微控单元的唤醒链路正常,否则标记未触发的链路为失效状态,保存相关的检测记录,通过TSP上报故障信息。
[0050] 对于本申请的多通道车辆通讯系统的基本通信功能,在具体实施时,当数据量比较少(如小于255个字节)时,如控制命令、简单的查询命令等,则通过串行通信接口组传输。SPI接口组的传输通道用于车辆的大数据传输,如CAN信号上报、OTA升级等。SPI数据传输时,通过MRdy信号通知微控单元准备接收SPI数据,微控单元准备好后,拉低SRdy通知通讯模块,通讯模块发起SPI传输,整个时序图如图5所示。在传统的4线或5线SPI信号中,通讯模块需要每隔10毫秒左右轮询一次,不断轮询还带来CPU占用率高的问题。但通过本申请所述的6线SPI信号,MRdy信号和SRdy信号的准备可以在不到1毫秒内完成,响应及时,并且在没有数据传输时不会占用CPU的利用率。当MRdy信号或SRdy信号被标记为失效状态时,SPI接口组可退回到4线SPI传输模式。
[0051] 通讯模块的软件系统每隔30秒,通过串行通信接口组和SPI接口组同时向微控单元发送心跳检测信号,微控单元通过原路返回心跳应答包,每一个接口在收到应答包后被标记为正常,否则标记失效。当有一路通信链路被标记失效时,通信功能临时切换到另外一路。如SPI信号的通信被标记异常时,跟微控单元的通信都被切换到串行通信接口组,并且丢弃部分数据量大的CAN数据上报功能,保障系统的最低通信要求,同时通过TSP平台上报故障信息。
[0052] 本发明提出一种带故障检测的多通道车辆通讯系统,其主要是在硬件上增加冗余度,软件上增加故障监测和动态功能切换的能力,通过这两方面来改进现有方案的不足。硬件上增加一个异构的串行通信接口组,降低因为硬件失效导致所有接口都无法使用的概率,并在SPI接口组上增加一个GPIO引脚,加快通信速率,还可以作为DTR信号和RI信号的硬件备份,每组通信接口通过一颗单独的电平转换芯片与通讯模块和微控单元连接;软件上增加硬件状态监测功能,在检测到硬件故障时动态切换引脚功能和通信模式,以最大程度保证T‑BOX能完成基本功能。
[0053] 本发明的实施例还提供一种计算机程序产品,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使该电子设备执行本说明书上述描述的根据本发明各种示例性实施方式的方法中的步骤。
[0054] 此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
[0055] 通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD‑ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
[0056] 在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
[0057] 所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
[0058] 根据本发明的这种实施方式的电子设备。电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0059] 电子设备以通用计算设备的形式表现。电子设备的组件可以包括但不限于:上述至少一个处理器、上述至少一个储存器、连接不同系统组件(包括储存器和处理器)的总线。
[0060] 其中,所述储存器存储有程序代码,所述程序代码可以被所述处理器执行,使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
[0061] 储存器可以包括易失性储存器形式的可读介质,例如随机存取储存器(RAM)和/或高速缓存储存器,还可以进一步包括只读储存器(ROM)。
[0062] 储存器还可以包括具有一组(至少一个)程序模块的程序/实用工具,这样的程序模块包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0063] 总线可以为表示几类总线结构中的一种或多种,包括储存器总线或者储存器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
[0064] 电子设备也可以与一个或多个外部设备(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备交互的设备通信,和/或与使得该电子设备能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口进行。并且,电子设备还可以通过网络适配器与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。
[0065] 在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
[0066] 所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0067] 计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0068] 可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0069] 可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0070] 此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
[0071] 应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0072] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。