CN115460036B - 基于uart实现多路can数据收发的系统、方法、设备及存储介质 - Google Patents
基于uart实现多路can数据收发的系统、方法、设备及存储介质 Download PDFInfo
- Publication number
- CN115460036B CN115460036B CN202211048177.XA CN202211048177A CN115460036B CN 115460036 B CN115460036 B CN 115460036B CN 202211048177 A CN202211048177 A CN 202211048177A CN 115460036 B CN115460036 B CN 115460036B
- Authority
- CN
- China
- Prior art keywords
- data
- interface
- uart
- cautc001
- module
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0002—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission rate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0061—Error detection codes
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/14—Two-way operation using the same type of signal, i.e. duplex
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Quality & Reliability (AREA)
- Communication Control (AREA)
Abstract
本发明公开一种基于一个UART实现多路CAN数据收发的系统,CPU通过一个URAT连接CAUTC001模块控制多路CAN接口,通过UART参数配置,实现多路CAN接口数据收发全双工模式,CPU通过UART接口发送初始化命令、系统配置命令、数据发送命令,当任意CAN接口接收到数据,对数据根据配置命令进行固定格式的封装后,填入数据缓存中,CAUTC001模块对接收数据进行校验并按照系统配置命令封装格式中指定的通道号,从数据净荷中提取封装数据中规定长度的数据,在指定通道号的CAN接口通道发送数据。本发明适用于通过UART接口控制多路CAN接口的汽车和工程控制领域。
Description
技术领域
本发明涉及汽车车身网络控制,具体为配置多路CAN参数,控制CAN的发送和接收报文。
背景技术
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。控制器局域网络CAN(Controller Area Network,CAN)总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线。在汽车领域和工程控制领域,由于单个MCU内的CAN接口不足,导致需要多个MCU配合才能达到满足需要的综合效果,带来的问题是成本上升和多个控制系统越来越复杂。随着这样的问题出现,也出现了一些控制CAN总线的方法。
公开号CN202010972486.0,名称“一种道路试验车多路CAN数据采集终端及方法”的中国发明专利申请,通过GPIO通知CPU接收CAN总线数据,SPI传输CAN数据。但该方法只能接收多路CAN数据,不能通过CAN总线发送数据,使CAN功能受限,无法做到对CAN功能的完全扩展,需要使用GPIO和SPI两种外设来实现数据传输,使得控制电路变得复杂。公开号CN202111115719.6,名称“一种兼容多种串行协议的CAN数据转换芯片和方法”的中国发明专利申请,通过串行协议(I2C/SPI/UART)转换CAN收到的数据和发送CAN数据,但该方法一个串行接口只能扩展一个CAN接口,在需要扩展多个CAN接口时,需要外接多个芯片,增加成本和电路排版,也减少了中央处理器CPU的对外接口数量,另外扩展的CAN接口无法修改配置(如波特率,can过滤器等),导致无法适应外围环境的变化。公开号CN201310001375.5,名称“四路串行总线与四路CAN总线转换电路”的发明专利申请,虽然实现了四路CAN的同时收发,但需要连接四路UART才能达到理想的效果,导致整个系统中UART接口资源短缺,其他与UART相关的应用受限,因为占用了很多的UART接口导致电路变得复杂,增加额外成本,且也无法对扩展的CAN接口进行配置,导致无法适应外围环境的变化。公开号CN201711212701.1,名称“一种多通道CAN通信总线端口扩展方法及系统”的发明专利申请,虽然实现了八路CAN的同时收发,可以实现CAN的参数配置,仍然需要连接四路UART才能达到理想的效果,导致整个系统中UART接口资源短缺,其他与UART相关的应用受限,因为占用了很多的UART导致电路变得复杂,增加额外成本,另外该方法每两路CAN接口需要一个MCU来控制,一共需要4个MCU,成本极高,不适合商用。
发明内容
本发明针对现有技术利用CAN网络实现数据发送和接收技术中存在的占有UART接口资源过多,需要多个MCU控制,导致系统中UART接口资源短缺,成本额外增加等问题,提供一种通过UART接口的数据交互配置,控制多路CAN的系统和方法,控制电路简单,占用UART接口资源少,CAN功能能够完全扩展,可以解决因为MCU单芯片内CAN接口不足而选用多个MCU芯片配合的情况,并达到降低成本的目的。
本发明解决上述问题的技术方案是,提供一种多路CAN接口的配置控制方法,CPU通过一个URAT连接数据交互控制多路系统CAUTC001,控制多路CAN总线接口,通过UART参数配置,支持每一路CAN网络参数配置,参数和状态查询,实现CAN接口数据收发为全双工模式。具体为,一种实现多路CAN数据收发的系统,其特征在于,包括CPU、数据交互控制多路CAN模块CAUTC001,CPU通过一个URAT连接CAUTC001模块控制多路CAN接口,通过UART参数配置,CAUTC001控制CAN接口数据接收和发送,实现多路CAN接口数据收发全双工模式,CAUTC001包括:UART接口、数据缓存、多个CAN接口,CPU通过UART接口发送初始化命令、系统配置命令、数据发送命令,当任意CAN接口接收到数据,对数据根据配置命令进行固定格式的封装后,填入数据缓存中,CAUTC001通过UART接口传输数据缓存中的数据给CPU,CAUTC001模块对接收数据进行校验并按照系统配置命令封装格式中指定的通道号,从数据净荷中提取封装数据中规定长度的数据,在指定通道号的CAN接口通道发送数据。
进一步优选,对UART进行初始化,CPU通过UART发送CAN接口配置命令,CAUTC001模块配置CAN接口参数;UART发送控制命令,UART接收数据通过指定CAN接口发送数据,当任意CAN接口收到外部总线数据,按照配置命令要求的固定格式对数据进行打包封装,存入数据缓存,通过UART接收CAN接口的数据,解封装成CAN数据。
进一步优选,对UART进行初始化具体包括:CPU的UART接口和CAUTC001的UART接口初始化成相同的配置,设置波特率115200bps,全双工模式,1个停止位,偶校验,9个数据位。
进一步优选,通过UART参数配置具体包括:CPU发送设置CAUTC001模块中UART和每一路CAN配置命令,修改CAUTC001内部寄存器值设置UART和每一路CAN的配置,通过UART传输的数据,CAUTC001模块控制寄存器实现一个UART控制多路CAN接口,配置完成后,发送当前UART参数配置和每一路CAN的参数配置到CPU。
进一步优选,CAN数据接收包括:CAUTC001模块的多路CAN接口接收到数据后,先放到数据缓存里,所有CAN接口通道共享一个数据缓存,根据接收到数据的时间先后顺序,按照固定的格式存放,CAUTC001模块定时轮询发送数据缓存,检测数据缓存中是否有数据,如果数据缓存里面有数据就通过UART发送给CPU,CPU通过固定的格式解封装获取CAN接口收到的数据。
进一步优选,CAN数据发送包括:CPU将待发送内容通过固定格式封装,通过UART发送给CAUTC001模块,CAUTC001模块采用固定格式解封装,确定发送数据的CAN接口号,以及发送数据的长度,CAUTC001启动对应的CAN接口发送数据。
进一步优选,系统配置命令包括:通道号CHANID、信息类型TYPE、数据长度LENGTH、配置信息类型VALUE、合成数据校验checksum,其中,合成数据校验根据CHANID、TYPE、LENGTH、VALUE的值按照字节进行异或计算;配置完成报文包括:通道号CHANID、信息类型TYPE、查询子类型VALUE、合成数据校验checksum,其中,合成数据校验根据CHANID、TYPE、LENGTH、VALUE的值按照字节进行异或计算;对CAUTC001模块的CAN接口位速率、波特率、过滤器和UART接口波特率配置。
进一步优选,配置CAN接口参数的数据净荷,通过对CAN接口参数配置确定启用接收数据的CAN接口通道号,配置UART接口参数的数据净荷,波特率设置为与配置CAN接口参数数据净荷的相同。
进一步优选,CAUTC001模块的任意一个CAN接口通道接收到数据后,存入数据缓存,进行数据加工组合,判断接收缓存互斥锁是否有其他CAN接口通道占用,如果有其他通道占用缓存互斥锁,产生一个0到CAN接口数之间的随机数R,等待R+1个时钟周期后,如该缓存互斥锁是否还被占用,该CAN接口通道不再接收新的数据直至缓存互斥锁被释放;当缓存锁没有被占用,占用该缓存互斥锁,加工组合后的合成数据放入共享的接收队列中。
第二方面,本发明还提出一种实现多路CAN数据收发的方法,CPU通过一个URAT连接CAUTC001模块控制多路CAN接口,通过UART参数配置,CAUTC001控制CAN接口数据接收和发送,实现多路CAN接口数据收发全双工模式,CPU通过UART接口发送初始化命令、系统配置命令、数据发送命令,当任意CAN接口接收到数据,对数据进行固定格式的封装填入数据缓存中;CAUTC001模块通过UART接口传输数据缓存中的数据给CPU,CAUTC001模块对接收数据进行校验并按照封装数据中指定的通道号,从数据净荷中提取封装数据中规定长度的数据,在指定通道号的CAN接口通道发送数据。
进一步优选,对UART进行初始化,CPU通过UART发送CAN接口配置命令,CAUTC001模块配置CAN接口参数;UART发送控制命令,UART接收数据通过指定CAN接口发送数据,当任意CAN接口收到外部总线数据,按照配置命令要求的固定格式对数据进行打包封装,存入数据缓存,通过UART接收CAN接口的数据,解封装成CAN数据。
进一步优选,配置CAN接口参数的数据净荷,通过对CAN接口参数配置确定启用接收数据的CAN接口通道号,配置UART接口参数的数据净荷,波特率设置为与配置CAN接口参数数据净荷的相同。
进一步优选,对UART进行初始化具体包括:CPU的UART接口和CAUTC001的UART接口初始化成相同的配置,设置波特率115200bps,全双工模式,1个停止位,偶校验,9个数据位。
进一步优选,通过UART参数配置具体包括:CPU发送设置CAUTC001模块中UART和每一路CAN配置命令,修改CAUTC001模块内部寄存器值设置UART和每一路CAN的配置,通过UART传输的数据,CAUTC001模块控制寄存器实现一个UART控制多路CAN接口,配置完成后,发送当前UART参数配置和每一路CAN的参数配置到CPU。
进一步优选,CAN数据接收包括:CAUTC001模块的多路CAN接口接收到数据后,先放到数据缓存里,所有CAN接口通道共享一个数据缓存,根据接收到数据的时间先后顺序,按照固定的格式存放,CAUTC001模块定时轮询发送数据缓存,检测数据缓存中是否有数据,如果数据缓存里面有数据就通过UART发送给CPU,CPU通过固定的格式解封装获取CAN接口收到的数据。
进一步优选,CAN数据发送包括:CPU将待发送内容通过固定格式封装,通过UART发送给CAUTC001模块,CAUTC001模块采用固定格式解封装,确定发送数据的CAN接口号,以及发送数据的长度,CAUTC001启动对应的CAN接口发送数据。
进一步优选,系统配置命令包括:通道号CHANID、信息类型TYPE、数据长度LENGTH、配置信息类型VALUE、合成数据校验checksum,其中,合成数据校验根据CHANID、TYPE、LENGTH、VALUE的值按照字节进行异或计算;配置完成报文包括:通道号CHANID、信息类型TYPE、查询子类型VALUE、合成数据校验checksum,其中,合成数据校验根据CHANID、TYPE、LENGTH、VALUE的值按照字节进行异或计算;对CAUTC001模块的CAN接口位速率、波特率、过滤器和UART接口波特率配置。
进一步优选,CAUTC001模块的任意一个CAN接口通道接收到数据后,存入数据缓存,进行数据加工组合,判断接收缓存互斥锁是否有其他CAN接口通道占用,如果有其他通道占用缓存互斥锁,产生一个0到CAN接口数之间的随机数R,等待R+1个时钟周期后,如该缓存互斥锁是否还被占用,该CAN接口通道不再接收新的数据直至缓存互斥锁被释放;当缓存锁没有被占用,占用该缓存互斥锁,加工组合后的合成数据放入共享的接收队列中。
第三方面,本发明还提出一种控制设备,包括:处理器和存储器;其中,所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于实现上面所述的实现多路CAN数据收发的方法。
第四方面,本发明还提出一种计算机可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令能够被处理器加载和运行以执行如上面所述的实现多路CAN数据收发的方法。
本发明的CPU外设只使用一个UART通过专用芯片实现对多路CAN接口控制,节约了外设的占用,实现多路CAN收发减少控制系统软件的复杂程度,支持同时收发CAN数据的全双工模式,支持每一路CAN的参数配置,参数和状态查询,也支持UART参数配置,这样不限定应用场景,使之更为通用,应用场景更宽泛。适用于通过UART接口控制多路CAN(包括但不限于CAN,CAN FD,及其他CAN扩展的其他类型的总线)系统,可适用于汽车和工程控制领域。
附图说明
图1为本发明实施例的系统架构图;
图2为本发明实施例的系统配置流程示意图;
图3为本发明实施例的数据发送流程示意图;
图4为本发明实施例的数据接收流程示意图;
图5为本发明实施例的CAUTC001缓存发送流程示意图;
图6为本发明实施例的CPU数据接收处理流程示意图。
具体实施方式
下面参照附图更详细地描述本发明的示例性实施例。附图中显示了本公开的示例性实施例,显然所描述的实施例仅仅是本发明的一部分,而不是全部实施例,提供这些实施例是为了能够更加透彻的理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
如图1所示为本发明实施例的系统架构图,一种实现多路CAN数据收发的系统,所述系统包含CPU和数据交互控制多路CAN模块(该系统以下简称CAUTC001),CPU通过一个URAT连接数据交互控制多路CAN模块CAUTC001,控制多路CAN总线接口,实现CAN接口数据收发为全双工模式,CPU和CAUTC001通过UART进行通信,CPU的UART和CAUTC001的UART初始化成相同的配置,如可设置为波特率115200bps,全双工模式,1个停止位,偶校验,9个数据位。CAUTC001接收各路CAN数据,并将其接收的数据通过UART发送给CPU,CPU控制处理CAUTC001系统接收的数据。本实施例中图1所示的系统结构显示CAUTC001接入4路CAN。
数据交互控制多路CAN模块CAUTC001包括:UART接口、数据缓存、多个CAN接口,其中,数据缓存:当CAN接口接收到数据后,对数据进行固定格式的封装后,填入数据缓存中;UART接口:用于CPU与多路CAN接口进行全双工通信,CPU通过UART接口发送初始化命令、系统配置命令、数据发送命令,CAUTC001通过UART传输数据缓存模块的数据给CPU。CAN接口:用于接收外围设备发送给CPU的数据、发送CPU控制发送的数据。
CPU通过一个UART控制多路CAN总线收发数据,通过UART参数配置,具体包括:系统初始化及配置实现CAN数据收发为全双工模式,CAUTC001控制CAN数据接收和CAN数据发送。
对UART进行初始化,通过CAUTC001发送CAN接口配置命令,通过UART发送配置命令,CAUTC001配置CAN接口参数,要求CAUTC001通过CAN发送数据;UART发送控制命令,UART接收数据通过指定CAN接口发送数据;CAN接口收到外部数据,对数据进行打包封装,存入数据缓存,通过UART接收对应CAN接口的数据,解封装成CAN数据,处理CAN数据。
首先CPU对CAUTC001模块进行初始化及配置。初始化设置CPU和CAUTC001中UART接口的配置相同(如可设置波特率115200bps,全双工模式,1个停止位,偶校验,9个数据位);CPU发送初始化命令,CAUTC001接收初始化命令后,停止接收CAN数据,清空接收缓存,发送初始化完成的应答数据给CPU,开启接收CAN数据功能,等待接收CAN数据;CPU发送查询UART和每一路CAN配置命令,CAUTC001接收到命令后,发送UART参数配置和每一路CAN的参数配置到CPU。
如图2所示为本发明实施例的系统配置流程示意图,CPU发送设置CAUTC001中UART和每一路CAN配置命令,CAUTC001接收到命令后,按照设置要求对CAUTC001内部寄存器值的修改达到设置UART和每一路CAN的配置的要求,通过UART传输的数据,CAUTC001模块控制系统内部的寄存器实现一个UART控制多路CAN,配置完成后,发送当前UART参数配置和每一路CAN的参数配置到CPU。
CAN数据接收,CAUTC001模块的多路CAN接口接收到数据后,先放到数据缓存里,所有CAN接口通道共享一个数据缓存,根据接收到数据的时间先后顺序,按照固定的格式存放,CAUTC001模块定时轮询发送数据缓存,检测数据缓存中是否有数据,如果数据缓存里面有数据就通过UART发送给CPU;CPU通过初始化时配置的固定的格式解封装,获取CAN总线收到的内容并处理其内容。
CAN数据发送,CPU把需要发送的内容,通过设置的固定格式封装,然后通过UART发送给CAUTC001;CAUTC001接收到UART的内容后,根据固定格式解封装,确定是哪路CAN接口总线发送数据,以及发送数据的长度等,CAUTC001启动相应路的CAN接口把数据发送出去。
如图2所示为CPU发起系统配置流程示意图,CPU根据CAUTC001外部硬件环境要求,通过配置命令填写通道号,配置命令类型,配置的详细信息,修改CAUTC001的接口配置参数来适应外部硬件。CAUTC001系统收到CPU发起的系统配置命令后,先判断命令格式和数据的合法性,判断完成后,根据配置内容配置外设或者系统参数,配置完成后,返回配置完成信息。如果发起的配置流程超过预定时间CPU没有收到配置完成的应答数据,会重新发起,发起预定次数以后还未收到应答数据,开始发起系统初始化流程。具体为:CPU发起配置流程,向CAUTC001系统发送配置命令,对命令进行校验,如果校验错误,向CPU发起设备错误流程,CAUTC001系统处理配置命令,回复CAUTC001配置完成报文,放入发送缓存,通过UART发送给CPU。校验应答完成,关闭定时器。
其中,配置命令包括:通道号CHANID、信息类型TYPE、数据长度LENGTH、配置信息类型VALUE、合成数据校验checksum(根据CHANID、TYPE、LENGTH、VALUE的值按照字节进行异或计算得到的值)。
配置完成的报文包括:通道号CHANID、信息类型TYPE(值为2表示后续内容应答查询的信息)、查询子类型VALUE、合成数据校验checksum(根据CHANID、TYPE、LENGTH、VALUE的值按照字节进行异或计算得到的值)。对CAUTC001模块的CAN接口(位速率、波特率、过滤器)和UART接口(波特率)配置命令。从而达到不限定应用场景,使之更为通用,应用场景更宽泛的目的。
配置CAN接口参数的数据净荷,通过对CAN接口参数配置确定启用接收数据的CAN接口通道号。配置UART接口参数的数据净荷,波特率设置为与配置CAN接口参数数据净荷时的相同。
A.配置CAN接口参数的数据净荷:前四个字节配置位速率和波特率,后续四个字节为标识码(如当四字节值十六进制为0xffffffff时,启动所有CAN接口接收CAN网络中所有设备的数据报文。其他值假设为A,则只接受CAN网络中对应CAN接口ID为A的设备发送过来的数据报文)。位速率和波特率的字段定义如下表:
表1:位速率和波特率的字段定义
B.配置UART接口参数的数据净荷为:只包含四个字节,填入希望设置的波特率,波特率设置为与CPU的UART接口的波特率一致,比如需要设置CAUTC001的UART接口波特率为从115200bps(CPU和CAUTC001的UART波特率当前为115200bps)修改为9600bps,数据净荷填入9600。CAUTC001收到配置命令后就会修改CAUTC001的UART接口波特率为9600bps。此后CPU侧应自行修改本侧UART接口波特率为9600bps,使之和CAUTC001的UART接口波特率保持一直
如图3所示为数据发送流程示意图,CPU把需要发送的CAN数据,通过标准格式进行封装,标准格式包含CAN的通道号(如通道号可设置为值1-4,当设置值为1表示通过通道1CAN1接口发送数据)、信息类型、CAN数据净荷长度、数据净荷(即某通道CAN接口需要发送的数据,x为CAN通道号)、CRC校验和,通过UART传输数据,CAUTC001模块接收到数据进行数据校验后,按照封装数据中指定的通道号,从数据净荷中提取封装数据中规定长度的数据,在指定通道号的CAN接口通道发送数据。
CPU发起控制CAN通道发送报文发送流程,向CAUTC001模块通过UART发送控制CAUTC001的CAN接口发送数据的命令,CPU控制CAUTC001的CAN接口发送CAN报文进行命令校验,如校验通过,CAUTC001通过UART收到报文内容控制CAN发送数据到与该指定CAN接口相连接的CAN网络中,如果发送失败或命令校验错误,向CPU发起设备错误流程。其中,发送的控制命令包括:通道号CHANID、信息类型TYPE(如值为3表示后续内容是配置命令)、数据长度LENGTH(后续数据的长度为X,即发送内容长度为X)、需要发送的内容、CRC校验和checksum。发送的控制命令中的通道号CHANID,就是指定发送数据的CAN通道号,如果CHANID为1,代表通过第一路CAN接口CAN1发送数据。如控制命令中TYPE字段的值为预定值3,表示该字段后续的数据为在指定通道上需要发送的内容,CAUTC001模块对控制命令进行校验,可根据通道号、信息类型、发送内容数据长度、发送内容,按照字节进行异或计算得到的最终值为CHECKSUM。
CAUTC001的多个CAN接口同时接收到报文后,会查看接收缓存互斥锁,是否有其他通道占用该锁,如有其他通道占用该锁,产生一个小于通道数的随机数R,等到R+1个时钟周期,重新尝试占用该锁。
当CAN接口收到各个CAN接口外接的其他设备发送过来的数据报文,以下是CAN接收到数据后,通过CAUTC001模块将收到的CAN数据发送给CPU的示例,CAUTC001模块的任意一个CAN接口接收到CAN数据后,存入数据缓存,进行数据加工组合,合成数据包含CAN通道信息、数据类型、数据长度、CAN接收的数据、校验和,加工组合后的合成数据放入共享的接收队列中。在加入共享接收队列时,需要判断接收缓存互斥锁(以下简称缓存锁)是否有其他通道占用该锁。如果有其他通道占用缓存锁,产生一个0到CAN通道数之间的一个随机数R,等待R+1个时钟周期后,检查缓存锁是否还被占用,一直持续这个循环,在这个循环过程中,该通道不接收新的CAN数据。在缓存锁没有被占用的情况下,先占用该缓存锁,然后判断缓存队列剩余空间是否可以装下加工组合数据。如果不能装下加工组合数据,直接丢弃该数据,释放缓存锁,退出接收CAN通道数据流程。如果可以装下加工后的数据,依次填入数据,然后释放缓存锁,退出该流程。
如图4所示数据接收流程示意图,CAUTC001模块接收到任意通道第X路CAN接口的数据,进行数据合成,查看接收缓存互斥锁,是否有其他通道占用该接收缓存互斥锁,如有其他通道占用该接收缓存互斥锁,产生一个小于通道数的随机数R,等到R+1个时钟周期,重新尝试占用该接收缓存互斥锁。如果没有其他通道占用,占用接收缓存互斥锁,剩余接收缓存空间是否大于准备存入的数据,剩余接收缓存空间小于准备存入的数据,丢弃数据,释放接收缓存互斥锁,当剩余接收缓存空间大于准备存入的数据,数据依次存入缓存,释放接收缓存互斥锁。
其中,数据加工组合的数据包括:CAN通道号(设置为与CAUTC001模块的CAN接口数一致,本实施例设置值为1-4,如值为1,则代表是第一号CAN通道CAN1接口收到的数据)、信息类型TYPE(表示后续内容的类型是需要发送数据还是收到的数据,设置值为4表述后续内容是该通道收到的数据)、数据长度LENGTH(表示需要发送或接收数据的长度,不包含校验和)、CAN接收到的数据内容VALUE(即CAN通道号为x的接口收到的原始数据)、合成数据校验和CRC(CHANID、TYPE、LENGTH、VALUE数据通过CRC8技术的值)。
如图5所示为CAUTC001模块缓存发送流程示意图,每一毫秒轮询发送队列,如果发送队列里非空,就发送队列内容,直到发完为止。定时判断接收缓存空间是否为空,如果不为空,通过UART接口发送报文,CPU-UART接口接收报文,每发送一个字节都重新判断接收缓存是否为空。
图6为CPU数据接收处理流程示意图。CPU收到CAUTC001发送的数据后,进行解包,在获取到数据长度字段后,就知道了整个数据的总长度,根据数据包总长度接收数据,等待数据接收完毕。
CPU-UART接口接收报文,等待一个完整的数据报文,校验通道号是否超出定义范围,校验成功,检查报文类型是否超出定义范围,校验成功,检查报文长度是否超出定义范围,校验成功,检查报文校验和是否正确,校验成功,是否是设备错误流程,非设备错误流程,传递给处理程序处理,如果上述步骤校验失败或设备错误,CPU发起初始化流程。
A.校验通道号是否超出定义范围。该字段一个字节,以下为数据定义:
0:表示CAUTC001上的UART接口通道;255(0xff):保留,代表CAUTC001系统的通道号;1-4:为CAUTC001上的CAN通道号(该值随着CAUTC001上CAN通道数的变化而变化);其他:校验失败。
B.校验数据类型是否超出定义范围。该字段一个字节,以下为数据定义:0:表示CAUTC001初始化类型,对应数据长度为1;1:信息查询类型,CPU发送时长度为1,CAUTC001应答时长度可变;2:参数配置类型,CPU发送时长度可变,CAUTC001应答时长度为1;3:CAN发送数据类型,对应数据长度可变;4:CAN接收数据类型,对应数据长度可变。
C.校验数据长度是否超出定义范围,根据数据类型判断是否超出定义范围。
D.校验和是否正确。合成数据校验和即通道号字段、数据类型字段、数据长度字段、数据内容字段的数据通过校验码CRC8计算得到的值,与数据包中的校验码CRC字段进行比较,判断校验和是否正确。
以上校验正确后,系统对数据进行处理,根据CAN配置信息识别确定是哪一路CAN总线的数据。如果以上校验不正确,CPU就向CAUTC001系统发送初始化命令,重新初始化CAUTC001接收队列。
Claims (20)
1.一种基于一个UART实现多路CAN数据收发的系统,其特征在于,包括CPU、URAT和数据交互控制多路CAN模块CAUTC001, CPU通过一个URAT连接CAUTC001模块控制多路CAN接口,通过UART进行参数配置,CAUTC001模块控制CAN接口数据接收和发送,实现多路CAN接口收发数据全双工模式,CAUTC001模块包括:UART接口、数据缓存和多个CAN接口, CPU通过UART接口发送初始化命令、系统配置命令、配置完成报文、数据发送命令,当任意CAN接口接收到数据,根据系统配置命令对数据进行固定格式的封装后,填入数据缓存中,CAUTC001模块通过UART接口传输数据缓存中的数据给CPU;当需要从指定CAN通道发送数据,CAUTC001模块对数据进行校验并按照系统配置命令封装格式指定通道号,从配置完成报文的配置CAN接口参数的数据净荷中提取封装数据中规定长度的数据,从指定CAN接口通道发送数据。
2.根据权利要求1所述的系统,其特征在于,对UART进行初始化,CPU通过UART发送CAN接口配置命令,CAUTC001模块配置CAN接口参数;CPU通过UART发送控制命令,CAUTC001模块接收到数据后,通过固定格式解封装后,实现控制指定CAN接口发送数据,当任意CAN接口收到外部总线数据,按照配置命令要求的固定格式对数据进行打包封装,存入数据缓存,通过UART接收CAUTC001模块发过来的数据,按照固定格式解封装成CAN数据。
3.根据权利要求1所述的系统,其特征在于,所述配置CAN接口参数的数据净荷包括,通过对CAN接口参数配置确定启用接收数据的CAN接口通道号,配置UART接口参数的数据净荷,波特率设置为与配置CAN接口参数数据净荷的相同。
4.根据权利要求3所述的系统,其特征在于,CPU的UART接口和CAUTC001的UART接口初始化成相同的配置,设置波特率115200bps,全双工模式,1个停止位,偶校验,9个数据位。
5.根据权利要求1-4其中之一所述的系统,其特征在于,所述通过UART进行参数配置具体包括:CPU发送设置CAUTC001模块中UART和每一路CAN配置命令,通过修改CAUTC001内部寄存器值,实现设置UART和每一路CAN的配置,通过UART传输的数据,CAUTC001模块控制寄存器实现一个UART控制多路CAN接口,配置完成后,发送当前UART参数配置和每一路CAN的参数配置到CPU。
6.根据权利要求1-4其中之一所述的系统,其特征在于,CAN数据接收包括:CAUTC001模块的多路CAN接口接收到数据后,根据接收到数据的时间先后顺序,按照固定的格式存放到数据缓存,所有CAN接口通道共享一个数据缓存,CAUTC001模块定时轮询发送数据缓存,检测数据缓存中是否有数据,如果数据缓存里有数据就通过UART发送给CPU,CPU通过固定的格式解封装获取CAN接口收到的数据。
7.根据权利要求1-4其中之一所述的系统,其特征在于,CAN数据发送包括:CPU将待发送内容通过固定格式封装,通过UART发送给CAUTC001模块,CAUTC001模块采用固定格式解封装,确定发送数据的CAN接口通道号,以及发送数据的长度,CAUTC001启动对应的CAN接口发送数据。
8.根据权利要求1-4其中之一所述的系统,其特征在于,系统配置命令包括:通道号CHANID、信息类型TYPE、数据长度LENGTH、配置信息类型VALUE和合成数据校验checksum,其中,合成数据校验根据CHANID、TYPE、LENGTH和VALUE的值按照字节进行异或计算;配置完成报文包括:通道号CHANID、信息类型TYPE、查询子类型VALUE和合成数据校验checksum,其中,合成数据校验根据CHANID、TYPE、LENGTH和VALUE的值按照字节进行异或计算;对CAUTC001模块的CAN接口位速率、波特率、过滤器和UART接口波特率配置。
9.根据权利要求1-4其中之一所述的系统,其特征在于,CAUTC001模块的任意一个CAN接口通道接收到数据后,存入数据缓存,进行数据加工组合,判断接收缓存互斥锁是否有其他CAN接口通道占用,如果有其他通道占用缓存互斥锁,产生一个0到CAN接口数之间的随机数R,等待R+1个时钟周期后,如该缓存互斥锁还被占用,该CAN接口通道不再接收新的数据直至缓存互斥锁被释放;当缓存锁没有被占用,占用该缓存互斥锁,加工组合后的合成数据放入共享的接收队列中。
10.一种实现多路CAN数据收发的方法,其特征在于,CPU通过一个URAT连接CAUTC001模块控制多路CAN接口,通过UART参数配置, CAUTC001控制CAN接口数据接收和发送,实现多路CAN接口数据收发全双工模式,CPU通过UART接口发送初始化命令、系统配置命令和数据发送命,当任意CAN接口接收到数据,对数据进行固定格式的封装填入数据缓存中;CAUTC001模块通过UART接口传输数据缓存中的数据给CPU,CPU把需要发送的CAN数据,经过固定格式封装后通过UART接口把数据发送到CAUTC001模块,CAUTC001模块对接收数据进行校验并按照封装数据中指定的通道号,从数据净荷中提取封装数据中规定长度的数据,在指定通道号的CAN接口通道发送数据。
11.根据权利要求10所述的方法,其特征在于,对UART进行初始化,CPU通过UART发送CAN接口配置命令,CAUTC001模块配置CAN接口参数;CPU通过UART发送控制命令,CAUTC001模块接收到数据后,通过固定格式解封装后,实现控制指定CAN接口发送数据,当任意CAN接口收到外部总线数据,按照配置命令要求的固定格式对数据进行打包封装,存入数据缓存,通过UART接收CAUTC001模块发过来的数据,按照固定格式解封装成CAN数据。
12.根据权利要求10所述的方法,其特征在于,配置CAN接口参数的数据净荷,通过对CAN接口参数配置确定启用接收数据的CAN接口通道号,配置UART接口参数的数据净荷,波特率设置为与配置CAN接口参数数据净荷的相同。
13.根据权利要求12所述的方法,其特征在于,对UART进行初始化具体包括:CPU的UART接口和CAUTC001的UART接口初始化成相同的配置,设置波特率115200bps,全双工模式,1个停止位,偶校验,9个数据位。
14.根据权利要求10-13其中之一所述的方法,其特征在于,通过UART参数配置具体包括:CPU发送设置CAUTC001模块中UART和每一路CAN配置命令,通过修改CAUTC001模块内部寄存器值,实现设置UART和每一路CAN的配置,通过UART传输的数据,CAUTC001模块控制寄存器实现一个UART控制多路CAN接口,配置完成后,发送当前UART参数配置和每一路CAN的参数配置到CPU。
15.根据权利要求10-13其中之一所述的方法,其特征在于,CAN数据接收包括:CAUTC001模块的多路CAN接口接收到数据后,先放到数据缓存里,所有CAN接口通道共享一个数据缓存,根据接收到数据的时间先后顺序,按照固定的格式存放,CAUTC001模块定时轮询发送数据缓存,检测数据缓存中是否有数据,如果数据缓存里面有数据就通过UART发送给CPU,CPU通过固定的格式解封装获取CAN接口收到的数据。
16.根据权利要求10-13其中之一所述的方法,其特征在于,CAN数据发送包括:CPU将待发送内容通过固定格式封装,通过UART发送给CAUTC001模块,CAUTC001模块采用固定格式解封装,确定发送数据的CAN接口号,以及发送数据的长度,CAUTC001启动对应的CAN接口发送数据。
17.根据权利要求10-13其中之一所述的方法,其特征在于,系统配置命令包括:通道号CHANID、信息类型TYPE、数据长度LENGTH、配置信息类型VALUE和合成数据校验checksum,其中,合成数据校验根据CHANID、TYPE、LENGTH和VALUE的值按照字节进行异或计算;配置完成报文包括:通道号CHANID、信息类型TYPE、查询子类型VALUE、合成数据校验checksum,其中,合成数据校验根据CHANID、TYPE、LENGTH和VALUE的值按照字节进行异或计算;对CAUTC001模块的CAN接口位速率、波特率、过滤器和UART接口波特率配置。
18.根据权利要求10-13其中之一所述的方法,其特征在于,CAUTC001模块的任意一个CAN接口通道接收到数据后,存入数据缓存,进行数据加工组合,判断接收缓存互斥锁是否有其他CAN接口通道占用,如果有其他通道占用缓存互斥锁,产生一个0到CAN接口数之间的随机数R,等待R+1个时钟周期后,如该缓存互斥锁是否还被占用,该CAN接口通道不再接收新的数据直至缓存互斥锁被释放;当缓存锁没有被占用,占用该缓存互斥锁,加工组合后的合成数据放入共享的接收队列中。
19.一种控制设备,其特征在于,包括:处理器和存储器;其中,所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于实现如权利要求10至18任一项所述的实现多路CAN数据收发的方法。
20.一种计算机可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令能够被处理器加载和运行以执行如权利要求10至18任一项所述的实现多路CAN数据收发的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211048177.XA CN115460036B (zh) | 2022-08-30 | 2022-08-30 | 基于uart实现多路can数据收发的系统、方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211048177.XA CN115460036B (zh) | 2022-08-30 | 2022-08-30 | 基于uart实现多路can数据收发的系统、方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115460036A CN115460036A (zh) | 2022-12-09 |
CN115460036B true CN115460036B (zh) | 2023-07-25 |
Family
ID=84300221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211048177.XA Active CN115460036B (zh) | 2022-08-30 | 2022-08-30 | 基于uart实现多路can数据收发的系统、方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115460036B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116781450B (zh) * | 2023-08-23 | 2023-10-27 | 长沙普洛电气设备有限公司 | 基于can总线的通信方法及相关装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111327116A (zh) * | 2020-03-23 | 2020-06-23 | 浙江同济科技职业学院 | 一种微电网储能控制系统、方法、智能终端 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070252728A1 (en) * | 2006-05-01 | 2007-11-01 | Wherenet Corp, Corporation Of The State Of California | System and method for sensing and controlling the entry or exit of vehicles into or from a vehicle lot |
CN102202058B (zh) * | 2011-05-19 | 2013-11-06 | 中国兵器工业集团第二一四研究所苏州研发中心 | 多路uart总线与can总线之间协议转换控制器 |
CN103067240B (zh) * | 2013-01-04 | 2016-01-06 | 中国兵器工业集团第二一四研究所苏州研发中心 | 四路串行总线与四路can总线转换电路 |
CN204423250U (zh) * | 2015-01-26 | 2015-06-24 | 北京盛博协同科技有限责任公司 | 一种具有多路高速智能can的x86嵌入式cpu主板 |
CN111398988A (zh) * | 2020-02-20 | 2020-07-10 | 重庆邮电大学 | 一种集成化智能网联汽车自动驾驶域控制器系统 |
-
2022
- 2022-08-30 CN CN202211048177.XA patent/CN115460036B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111327116A (zh) * | 2020-03-23 | 2020-06-23 | 浙江同济科技职业学院 | 一种微电网储能控制系统、方法、智能终端 |
Also Published As
Publication number | Publication date |
---|---|
CN115460036A (zh) | 2022-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100239973B1 (ko) | 데이타 처리장치에서의 데이타교환 및/또는 신호처리의 동기를 위한 구조화 메시지방법 | |
US7584313B1 (en) | Method and system for connecting a wireless USB host and a wired USB device | |
US7149213B1 (en) | Wireless computer system with queue and scheduler | |
US8306004B2 (en) | Communication network system having high-ranking network and low-ranking networks, interchange terminal connecting high-ranking network and low-ranking network, microcomputer controlling connection between transmission line of low-ranking network and transmission line of high-ranking network, and communication transmitter-receiver connected with transmission line of low-ranking network and transmission line of high-ranking network | |
US7313104B1 (en) | Wireless computer system with latency masking | |
CN107819659B (zh) | 一种基于spi的智能级联通信网络 | |
CN115460036B (zh) | 基于uart实现多路can数据收发的系统、方法、设备及存储介质 | |
EP2972929A1 (en) | Systems and methods for serial communication | |
KR101559089B1 (ko) | 장치의 컴포넌트들 간에 메모리 자원들을 공유하기 위한 통신 프로토콜 | |
CN115766860A (zh) | 数据传输方法、tsn节点和计算机可读存储介质 | |
CN107078932B (zh) | 总线系统的用户站和用于校验消息的正确性的方法 | |
US20010034799A1 (en) | Packet transmission/reception processor | |
US20070217443A1 (en) | Communication apparatus, communication method, and computer program product | |
US20050141555A1 (en) | Method for generating commands for network controller modules of peripheral devices | |
KR101596540B1 (ko) | 반도체 집적 회로 장치 | |
US10904894B2 (en) | Devices, systems and methods for increasing data throughput in wireless device with shared medium | |
GB2557384B (en) | Packet data protocol | |
CN116684389B (zh) | 地址自动分配方法及具有其的主机、从机和通信设备 | |
US8427955B2 (en) | Method and apparatus for transferring data | |
CN114422614B (zh) | 控制多链路设备发送数据的方法、装置、设备及存储介质 | |
WO2023231788A1 (zh) | 一种感知方法、装置和系统 | |
WO2024021997A1 (zh) | 终端到终端中继场景下数据传输方法、装置、设备及介质 | |
EP4187984A1 (en) | Bluetooth low energy connection power consumption | |
US20220038387A1 (en) | In-vehicle communication system, relay device, and communication method | |
US10713198B2 (en) | Direct memory access control unit for a processing unit that includes a working memory |
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 |