CN116996340B - 一种can收发方法和can收发系统 - Google Patents
一种can收发方法和can收发系统 Download PDFInfo
- Publication number
- CN116996340B CN116996340B CN202311238674.0A CN202311238674A CN116996340B CN 116996340 B CN116996340 B CN 116996340B CN 202311238674 A CN202311238674 A CN 202311238674A CN 116996340 B CN116996340 B CN 116996340B
- Authority
- CN
- China
- Prior art keywords
- serial port
- controller
- module
- information
- receiving
- 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
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000004891 communication Methods 0.000 claims abstract description 29
- 230000005540 biological transmission Effects 0.000 claims abstract description 24
- 238000005070 sampling Methods 0.000 claims description 30
- 238000004458 analytical method Methods 0.000 claims description 15
- QWCRAEMEVRGPNT-UHFFFAOYSA-N buspirone Chemical compound C1C(=O)N(CCCCN2CCN(CC2)C=2N=CC=CN=2)C(=O)CC21CCCC2 QWCRAEMEVRGPNT-UHFFFAOYSA-N 0.000 claims description 7
- 238000012937 correction Methods 0.000 claims description 6
- 238000001914 filtration Methods 0.000 claims description 6
- 230000001360 synchronised effect Effects 0.000 claims description 6
- 230000006870 function Effects 0.000 description 16
- 238000013461 design Methods 0.000 description 6
- 230000006978 adaptation Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000005094 computer simulation Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
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
-
- 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明适用于数字信息传输技术领域,提供了一种CAN收发方法和CAN收发系统,所述CAN收发系统包括顶层模块、串口发送模块、串口接收模块、串口解析模块、多个CAN控制器以及多个fifo模块,所述fifo模块的数量与所述CAN控制器的数量相同;所述串口发送模块、所述串口接收模块、所述串口解析模块、多个所述CAN控制器以及多个所述fifo模块分别连接至所述顶层模块;所述串口接收模块还分别连接至所述串口发送模块以及所述串口解析模块;每个所述fifo模块还分别连接至一个所述CAN控制器。本发明中的CAN收发系统性能稳定,可以实现多路CAN通信,并降低误码率。
Description
技术领域
本发明属于数字信息传输技术领域,尤其涉及一种CAN收发方法和CAN收发系统。
背景技术
收发器是指用于进行信号转换的一种装置, 通常指的是光纤收发器,即用于实现光信号和电信号之间的相互转换,以确保数据包在两个网络之间能顺畅传输。
现有技术中常用的收发器为CAN(控制器局域网络)收发器,其主要是基于ARM(RISC微处理器)和FPGA的microblaze(RISC处理器软核)或者ZYNQ(可扩展处理平台Zynq系列)来实现,上述方案存在的缺陷是:
(1)目前常见的CAN收发器都是单通道的收发,只能够实现一对一的通信,或者是多个设备挂在一条总线上,带宽速率有限制。
(2)FPGA的microblaze需要使用大量的FPGA硬件资源,模拟成ARM进行工作,其性能仅仅只能和低端ARM相比,采用的是C语言编码,其运行方式是串行运行,如果有其他程序拥塞,就会导致CAN收发系统拥塞,从而性能不稳定。
因此,基于现有技术实现的CAN收发器,由于其处理模块的自身性能限制,导致了CAN收发器的性能不稳定,且无法实现多路CAN通信。
发明内容
本发明实施例提供了一种CAN收发系统,旨在解决现有技术中CAN收发系统的性能不稳定,且无法实现多路CAN通信的问题。
本发明实施例提供了一种CAN收发方法,应用于CAN收发系统;所述CAN收发系统包括现场可编程门阵列的顶层模块、串口发送模块、串口接收模块、串口解析模块、多个CAN控制器以及多个fifo模块,所述fifo模块的数量与所述CAN控制器的数量相同;所述串口发送模块、所述串口接收模块、所述串口解析模块、多个所述CAN控制器以及多个所述fifo模块分别连接至所述顶层模块;所述串口接收模块还分别连接至所述串口发送模块以及所述串口解析模块;每个所述fifo模块还分别一一对应地连接至一个所述CAN控制器;所述顶层模块为现场可编程门阵列的PL端;所述方法,包括如下步骤:
通过串口接收模块将接收到的串口信息转化为字节流,并将所述字节流传输至所述串口解析模块;
通过所述串口解析模块解析所述字节流形成的串口命令,并根据所述串口命令配置对应的标识符场、CAN总线的分组信息以及波特率;
通过现场可编程门阵列的顶层模块中的BRAM总线引脚将所述标识符场、所述分组信息以及所述波特率写入所述现场可编程门阵列中的BRAM;
通过串口发送模块根据所述串口命令读出所述BRAM中的所述标识符场、所述分组信息以及所述波特率并进行打印。
优选地,所述方法还包括:
串口接收模块检测每个CAN控制器的帧起始,根据每个CAN控制器的帧起始调整当前位的同步段,以在每个CAN控制器的发送频率有所偏差时,能够正常识别数据。
优选地,所述串口接收模块检测每个CAN控制器的帧起始,根据每个CAN控制器的帧起始调整当前位的同步段的步骤,包括:
串口接收模块获取每个CAN控制器的波特率;
根据CAN控制器的波特率,计算每个CAN控制器的数据发送时长;
根据每个CAN控制器的数据发送时长,和每个CAN控制器的帧起始,确定每个CAN控制器的数据中段采样时间;
在每个CAN控制器的数据中段采样时间,对CAN控制器进行数据采样。
优选地,所述数据中段采样时间的计算公式如下:
;
;
其中,为第i个CAN控制器的波特率,/>,I为CAN控制器的数量;/>为第i个CAN控制器的数据发送时长;/>为第i个CAN控制器在第j个数据帧的帧起始时间,;/>为第i个CAN控制器在第j个数据帧的数据中段采样时间;/>为第i个CAN控制器的设定采样偏移常数;
在发送第1个数据帧时,为初始值,等于0;
在发送第2个数据帧开始,根据各个CAN控制器的数据中段采样时间偏差校正,校正方式参照如下公式:
;
k为第k个数据帧,;/>为第i个CAN控制器在第k个数据帧的帧起始时间,/>为第i个CAN控制器在第k-1个数据帧的帧起始时间。
优选地,所述通过串口接收模块将接收到的串口信息转化为字节流的步骤,包括:
通过所述串口接收模块接收各所述CAN控制器发出的串口信息,所述串口信息包括发送串口信息的CAN控制器对应的标识符、CAN控制器的波特率,以及CAN控制器的配置信息,所述配置信息包括CAN总线的分组信息、串口信息的目标接收CAN控制器,以及过滤信息;
通过所述串口接收模块将接收到的串口信息转化为字节流。
优选地,所述方法,还包括:
在所述串口解析模块中配置寄存器;
通过寄存器获取CAN总线的分组信息,并获取分组转发调整指令,以根据所述分组转发调整指令,修改所述CAN总线的分组信息;
通过寄存器获取发送串口信息的CAN控制器的波特率,并获取串口信息的目标接收CAN控制器的波特率,以进行波特率动态适配。
优选地,所述方法还包括:
在CAN控制器设置过滤器;
根据用户的设定,形成CAN总线的分组信息;
通过所述CAN控制器根据发送串口信息的CAN控制器、CAN总线的分组信息、以及串口信息的目标接收CAN控制器,对串口信息进行转发或过滤。
优选地,所述方法,还包括:
获取发送串口信息的CAN控制器和目标接收CAN控制器的目标通信协议;
所述寄存器根据目标通信协议,调整当前通信协议类型。
为实现上述目的,本发明还提出一种CAN收发系统,应用所述CAN收发方法;所述CAN收发系统包括现场可编程门阵列的顶层模块、串口发送模块、串口接收模块、串口解析模块、多个CAN控制器以及多个fifo模块,所述fifo模块的数量与所述CAN控制器的数量相同;所述串口发送模块、所述串口接收模块、所述串口解析模块、多个所述CAN控制器以及多个所述fifo模块分别连接至所述顶层模块;所述串口接收模块还分别连接至所述串口发送模块以及所述串口解析模块;每个所述fifo模块还分别一一对应地连接至一个所述CAN控制器;所述顶层模块为现场可编程门阵列的PL端。
优选地,所述串口发送模块连接至所述顶层模块的RS232串口发送引脚;所述串口接收模块连接至所述顶层模块的RS232串口接收引脚;所述串口解析模块分别连接至所述顶层模块的BRAM总线引脚以及所述顶层模块的CAN配置信息引脚;每个所述CAN控制器分别连接至所述顶层模块的一个CAN串口发送引脚和一个CAN串口接收引脚。
本发明所达到的有益效果:通过采用现场可编程门阵列的顶层模块实现CAN收发系统的收发功能,本发明中的顶层模块使用FPGA的纯PL端实现,直接使用硬件资源实现CAN收发器的功能,而不是模拟成ARM再去实现CAN收发器的功能,从而CAN收发系统中程序按并行运行,其他的程序不会影响CAN收发系统的功能。因此,可以使CAN收发系统的性能更稳定。进一步的,本发明设计多个CAN控制器以及多个verilog(一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模)的fifo模块,每个所述fifo模块还分别一一对应地连接至一个所述CAN控制器,因此,本发明中的多路CAN总线都能挂设备,且之间能够实现任意路互相转发、通信,每个通道都是独立的,实现了多路CAN通信。
附图说明
图1是本发明实施例提供的一种CAN收发系统的框架连接示意图;
图2是本发明实施例提供的一种CAN收发系统的信号传输示意图;
图3是本发明实施例提供的一种CAN收发方法在第一实施例中的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
需要说明的是,当一个元件被认为是“连接”另一个元件时,它可以是直接连接到另一个元件,或者通过居中元件连接另一个元件。以下实施例中的“连接”,如果被连接的电路、模块、单元等相互之间具有电信号或数据的传递,则应理解为“电连接”、“通信连接”等。
在此使用时,单数形式的“一”、“一个”和“所述/该”也可以包括复数形式,除非上下文清楚指出另外的方式。还应当理解的是,术语“包括/包含”或“具有”等指定所陈述的特征、整体、步骤、操作、组件、部分或它们的组合的存在,但是不排除存在或添加一个或更多个其他特征、整体、步骤、操作、组件、部分或它们的组合的可能性。同时,在本说明书中使用的术语包括相关所列项目的任何及所有组合。
本发明提出了一种CAN收发方法和CAN收发系统。
请参照图1至图3,本发明的CAN收发方法的第一实施例中,CAN收发方法应用于CAN收发系统;所述CAN收发系统包括现场可编程门阵列的顶层模块(FPGA_TOP模块)、串口发送模块(uart_tx模块)、串口接收模块(uart_rx模块)、串口解析模块(uart_cmd模块)、多个CAN控制器(can_controller模块)以及多个fifo模块(can_data_fifo模块)(fifo全称First In First Out,先进先出,是数据的一种处理方式,本发明中的fifo模块可以理解为缓存模块),所述fifo模块的数量与所述CAN控制器的数量相同。其中,所述串口发送模块、所述串口接收模块、所述串口解析模块、多个所述CAN控制器以及多个所述fifo模块分别连接至所述顶层模块;所述串口接收模块还分别连接至所述串口发送模块以及所述串口解析模块;每个所述fifo模块还分别一一对应地连接至一个所述CAN控制器;所述顶层模块为现场可编程门阵列的PL端;
所述方法,包括如下步骤:
步骤S10,通过串口接收模块将接收到的串口信息转化为字节流,并将所述字节流传输至所述串口解析模块;
步骤S20,通过所述串口解析模块解析所述字节流形成的串口命令,并根据所述串口命令配置对应的标识符场、CAN总线的分组信息以及波特率;
步骤S30,通过现场可编程门阵列的顶层模块中的BRAM(Block Random AccessMemory,相当于对FPGA的块RAM,属于硬件的存储空间,RAM是随机存取存储器)总线引脚将所述标识符场、所述分组信息以及所述波特率写入所述现场可编程门阵列中的BRAM;
步骤S40,通过串口发送模块根据所述串口命令读出所述BRAM中的所述标识符场、所述分组信息以及所述波特率并进行打印。
其中,打印的目的是为了查看目前CAN收发系统的工作状态。
本发明所达到的有益效果:通过采用现场可编程门阵列的顶层模块实现CAN收发系统的收发功能,本发明中的顶层模块使用FPGA的纯PL端实现,直接使用硬件资源实现CAN收发器的功能,而不是模拟成ARM再去实现CAN收发器的功能,从而CAN收发系统中程序按并行运行,其他的程序不会影响CAN收发系统的功能。因此,可以使CAN收发系统的性能更稳定。进一步的,本发明设计多个CAN控制器以及多个Verilog(一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模)的fifo模块,每个所述fifo模块还分别一一对应地连接至一个所述CAN控制器,因此,本发明中的多路CAN总线都能挂设备,且之间能够实现任意路互相转发、通信,每个通道都是独立的,实现了多路CAN通信。
具体的,每个所述fifo模块一一对应地连接至一个所述CAN控制器。请参照图1,例如,can0_controller模块对应can_data_fifo_0模块,can1_controller模块对应can_data_fifo_1模块。
基于本发明的CAN收发方法的第一实施例,本发明的CAN收发方法的第二实施例中,所述方法还包括:
步骤S50,串口接收模块检测每个CAN控制器的帧起始,根据每个CAN控制器的帧起始调整当前位的同步段,以在每个CAN控制器的发送频率有所偏差时,能够正常识别数据。
具体的,本发明支持CAN总线的同步对齐,具有抗频率偏移的特性,误码率低。在CAN总线数据识别时,在软件上实现了数据硬同步,会根据检测出帧起始(SOF位)时,调整当前位的同步段,调整宽度不限,从而,在发送频率有所偏差时,也能够正常识别数据。
基于本发明的CAN收发方法的第二实施例,本发明的CAN收发方法的第三实施例中,所述步骤S50中的所述串口接收模块检测每个CAN控制器的帧起始,根据每个CAN控制器的帧起始调整当前位的同步段的步骤,包括:
步骤S51,串口接收模块获取每个CAN控制器的波特率;
步骤S52,根据CAN控制器的波特率,计算每个CAN控制器的数据发送时长;
步骤S53,根据每个CAN控制器的数据发送时长,和每个CAN控制器的帧起始,确定每个CAN控制器的数据中段采样时间;
步骤S54,在每个CAN控制器的数据中段采样时间,对CAN控制器进行数据采样。
本发明中,根据每个CAN控制器的波特率,计算每个CAN控制器的数据发送时长,然后根据数据发送时长,和每个CAN控制器的帧起始,在数据中段进行采样,例如,如果数据发送时间是在0-100ms,则数据中段采样时间可以为50ms,本发明在50ms就采样到这个数据是0还是1,避免采错样,从而就能避免在数据发送时间0-100ms后的时间点来采样。并且,本发明由于在中段采样,所以不会采错数据,从而可以降低误码率。进一步的,在本发明的这种数据中段采样的方式下,若因为频率偏移导致数据发送时长变成了0-99ms,由于我们是中段采样(例如,采样时间为50ms),不是在数据两端采样,所以这种偏移对本方案的采样也不会造成影响。
具体的,所述数据中段采样时间的计算公式如下:
;
;
其中,为第i个CAN控制器的波特率,/>,I为CAN控制器的数量;/>为第i个CAN控制器的数据发送时长;/>为第i个CAN控制器在第j个数据帧的帧起始时间,;/>为第i个CAN控制器在第j个数据帧的数据中段采样时间;/>为第i个CAN控制器的设定采样偏移常数;
在发送第1个数据帧时,为初始值,等于0;
在发送第2个数据帧开始,根据各个CAN控制器的数据中段采样时间偏差校正,校正方式参照如下公式:
;
k为第k个数据帧,;/>为第i个CAN控制器在第k个数据帧的帧起始时间,/>为第i个CAN控制器在第k-1个数据帧的帧起始时间。
基于本发明的CAN收发方法的第一实施例至第三实施例,本发明的CAN收发方法的第四实施例中,所述步骤S10中的所述通过串口接收模块将接收到的串口信息转化为字节流的步骤,包括:
步骤S11,通过所述串口接收模块接收各所述CAN控制器发出的串口信息,所述串口信息包括发送串口信息的CAN控制器对应的标识符、CAN控制器的波特率,以及CAN控制器的配置信息,所述配置信息包括CAN总线的分组信息、串口信息的目标接收CAN控制器,以及过滤信息;CAN控制器对应的标识符即CAN控制器的ID信息。
步骤S12,通过所述串口接收模块将接收到的串口信息转化为字节流。
其中,CAN总线的分组信息能实现CAN总线的一对多和多对一功能。
例如:模块将接收到的串口信息转化为字节流。
例如,CAN总线的分组信息包括CAN 控制器1对CAN控制器2、CAN 控制器3、CAN 控制器4时,则表明在CAN总线的分组功能下,CAN 控制器1的信息可以发送至CAN控制器2、CAN控制器3、CAN 控制器4,从而,CAN 控制器1的信息若想发送至CAN控制器5,则由于不符合分组信息而会被过滤掉。
再如:CAN总线的分组信息包括CAN控制器4、CAN 控制器5、CAN 控制器6对CAN控制器8时,表明在CAN总线的分组功能下,CAN 控制器4、CAN 控制器5、CAN 控制器6的信息可以发送至CAN控制器8,若CAN控制器2向CAN控制器8发送信息,则由于不符合分组信息而会被过滤掉。
一对多,多对一的优点是:1个IP可以同时挂载多个设备,即挂载多个CAN控制器。
基于本发明的CAN收发方法的第四实施例,本发明的CAN收发方法的第五实施例中,所述方法,还包括:
步骤S60,在所述串口解析模块中配置寄存器;
步骤S70,通过寄存器获取CAN总线的分组信息,并获取分组转发调整指令,以根据所述分组转发调整指令,修改所述CAN总线的分组信息;
步骤S80,通过寄存器获取发送串口信息的CAN控制器的波特率,并获取串口信息的目标接收CAN控制器的波特率,以进行波特率动态适配。
进一步的,在本发明中,通过串口解析模块中配置的寄存器,可以修改CAN总线的分组信息,并修改发送和接收CAN控制器的波特率。
作为本实施例的进一步扩展,还可以检测发送串口信息的CAN控制器与串口信息的目标接收CAN控制器的对应关系是否符合CAN总线的分组信息,在不符合CAN总线的分组信息时,记录该对应关系,并记录该对应关系的出现频次。按照出现频次从多到少的顺序,将对应关系进行排序。判断对应关系出现的频次是否超出设定次数,若超过设定次数,触发分组转发调整指令,以根据所述分组转发调整指令,将对应关系增加至所述CAN总线的分组信息中。
作为另一扩展,波特率动态适配可以为:侦测发送串口信息的CAN控制器的波特率,与串口信息的目标接收CAN控制器的波特率,当发送串口信息的CAN控制器与串口信息的目标接收CAN控制器的对应关系符合CAN总线的分组信息时,根据发送串口信息的CAN控制器的波特率,与串口信息的目标接收CAN控制器的波特率中的其中一者校正另一者。例如,当发送串口信息的CAN控制器的波特率为500波特,而串口信息的目标接收CAN控制器的波特率为1000波特时,将后者的波特率调整为500波特,或将前者的波特率调整为1000波特,使两者通讯时的波特率一致,从而实现了波特率动态适配。
配置寄存器的功能是通过串口解析模块实现,其串口接收模块和串口解析模块接收和发送数据;配置寄存器的方式为:
通过串口发送命令:,前两个/>为写入地址,后两个/>为写入寄存器值,修改分组转发和波特率只需要写入对应寄存器的值即可;
通过串口发送命令:,前两个/>为读取地址,后两个/>为读取的长度,会将对应寄存器的值打印到串口上查看。
通过配置寄存器方式,可以动态修改各通道的通信的对端通道,同时可以动态修改波特率,使CAN总线按另一协议通信,能够支持不同波特率的CAN总线通信,比如一端是500K,另一端是1M的速率,一样能够通信。
基于本发明的CAN收发方法的第四实施例或第五实施例,本发明的CAN收发方法的第六实施例中,所述方法还包括:
步骤S90,在CAN控制器设置过滤器;
步骤S100,根据用户的设定,形成CAN总线的分组信息;
步骤S110,通过所述CAN控制器根据发送串口信息的CAN控制器、CAN总线的分组信息、以及串口信息的目标接收CAN控制器,对串口信息进行转发或过滤。
基于本发明的CAN收发方法的第五实施例,本发明的CAN收发方法的第七实施例中,所述方法,还包括:
步骤S120,获取发送串口信息的CAN控制器和目标接收CAN控制器的目标通信协议;
步骤S130,所述寄存器根据目标通信协议,调整当前通信协议类型。
具体的,本发明能同时支持CAN 2.0a以及CAN 2.0b的通信协议,CAN 2.0a 和CAN2.0b的通信协议的数据内容不一样,现有技术中一般CAN设备只使用一种,本发明的方案可以兼容两种协议,需要哪种,就使用哪种,具体通过配寄存器的方式,可以实时切换目前使用的协议。
请参照图2,在本发明的CAN收发方法中:
顶层模块传输至串口发送模块的内容为串口发送的数据以及发送使能;顶层模块传输至串口接收模块的内容为串口的波特率配置以及串口收向连线;顶层模块与串口解析模块的传输内容包括:can_id(为顶层模块传输的寄存器值),其他BRAM访问总线,以实现存储器的读写;顶层模块向外传输内容为BRAM访问总线,以实现存储器的读写,即顶层模块只是向外传输;串口接收模块传输至串口解析模块的内容为串口接收到的数据以及有效标志;串口解析模块发送至CAN控制器的内容包括:CAN过滤器配置信息以及CAN_grp分组信息、can_baud以及波特率信息;串口发送模块传输至外部的内容为串口发向连线。
为实现上述目的,本发明还提供了一种CAN收发系统,结合图1所示,其包括现场可编程门阵列的顶层模块(FPGA_TOP模块)、串口发送模块(uart_tx模块)、串口接收模块(uart_rx模块)、串口解析模块(uart_cmd模块)、多个CAN控制器(can_controller模块)以及多个fifo模块(can_data_fifo模块),所述fifo模块的数量与所述CAN控制器的数量相同。
其中,所述串口发送模块、所述串口接收模块、所述串口解析模块、多个所述CAN控制器以及多个所述fifo模块分别连接至所述顶层模块;所述串口接收模块还分别连接至所述串口发送模块以及所述串口解析模块;每个所述fifo模块还分别一一对应地连接至一个所述CAN控制器;所述顶层模块为现场可编程门阵列的PL端。
本实施例中,所述串口发送模块连接至所述顶层模块的RS232串口发送引脚(RS232_TX)。
本实施例中,所述串口接收模块连接至所述顶层模块的RS232串口接收引脚(RS232_RX)。
本实施例中,所述串口解析模块分别连接至所述顶层模块的BRAM总线引脚(BRAM总线)以及所述顶层模块的CAN配置信息引脚(CAN配置信息)。
本实施例中,每个所述CAN控制器分别连接至所述顶层模块的一个CAN串口发送引脚(CAN_TX)和一个CAN串口接收引脚(CAN_RX)。
本实施例中,所述CAN收发系统通过串口发送命令的方式在线修改CAN控制器的配置,即串口命令下发后,将配置信息传递给所述顶层模块,再写入到顶层模块的BRAM,同时所述顶层模块将配置信息写入到闪存(flash)中,以实现掉电保存功能,上电后,再将配置信息从闪存中读取。
本实施例中,所述现场可编程门阵列的顶层模块负责分组、仲裁、转发所述fifo模块中的数据,并根据分组信息将数据发送至对应的所述CAN控制器,所述CAN控制器再将数据通过所述顶层模块的BRAM总线引脚发送出去,在软件上实现的方式是:将数据先存入缓存中,然后根据配置信息,将数据转发到对应通道,先进先出的方式实现仲裁,多路数据可以同时进行;所述CAN控制器为轻量级CAN控制器,其具备CAN总线数据解析、发送以及数据同步等功能,且还可以动态变化can_id(标识符场)以及波特率等;所述fifo模块用于存储所述CAN控制器收到的数据。
如图2所示,所述CAN收发系统分为两个部分,即CAN总线控制器部分以及串口配置部分;配置流程为串口下发配置信息的相关命令,对每路CAN总线设置波特率、can_id以及转发的数据来自哪路CAN总线及分组信息,然后该路CAN总线即可按照对应的模式进行工作;在串口配置部分,通过串口发送对应格式的命令,将配置信息写入到BRAM中,所述CAN控制器则实时读取BRAM中的配置信息,并修改CAN的配置信息。
串口配置部分包括:串口接收模块、串口发送模块和串口解析模块。
所述串口接收模块将接收到的串口信息转化为字节流并传输给所述串口解析模块;所述串口解析模块解析收到的串口命令,配置相应的can_id、分组信息以及波特率等,同时通过BRAM总线以及所述BRAM总线引脚写入到BRAM;所述串口发送模块模块根据收到的命令,可以打印can_id、分组信息以及波特率等信息;所述顶层模块仅传递配置信息。
本实施例中的CAN收发系统通过采用现场可编程门阵列的顶层模块实现CAN收发系统的收发功能,且设计多个CAN控制器以及多个Verilog的fifo模块,并设计串口发送模块、串口接收模块以及串口解析模块,从而可以使CAN收发系统的性能更稳定,并使其支持CAN总线的同步对齐,具备抗频率偏移的特性,以降低误码率,同时使其实现多路CAN通信。另外,还能支持CAN 2.0a以及CAN 2.0b的通信协议,支持多路CAN转发和通信,支持一对多、多对一的通信方式,支持实时配置波特率,而 采用纯Verilog编写,无ip,还可以在Altera和Xilinx 等各种FPGA上运行,即可以在任意平台使用,同时 CAN ID可固定配置为任意11bit短ID或29bit长ID, 支持收发帧过滤,还可针对短ID和长ID独立设置过滤器,只接收和过滤器匹配的数据帧,采用配置寄存器的方式修改分组转发功能以及波特率等参数。
具体的,所述fifo模块与所述CAN控制器的数量可以分别为16,以实现一种基于FPGA、支持16路CAN、实现分组、仲裁,转发的CAN-HUB收发器。
CAN收发系统是纯Verilog 编写,移植其他厂家时,只需要复制代码,不涉及IP,不需要做厂家适配。
短ID对应的是CAN 2.0a通信协议,长ID对应的是 CAN 2.0b 的通信协议,即可以兼容两种协议;过滤器也属于CAN控制器,如果CAN总线上挂有多个设备,发送数据时,都会给主设备应答,设置过滤器,则可以实现对其他的、非所需ID的帧的不应答。
以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种CAN收发方法,其特征在于,应用于CAN收发系统;所述CAN收发系统包括现场可编程门阵列的顶层模块、串口发送模块、串口接收模块、串口解析模块、多个CAN控制器以及多个fifo模块,所述fifo模块的数量与所述CAN控制器的数量相同;所述串口发送模块、所述串口接收模块、所述串口解析模块、多个所述CAN控制器以及多个所述fifo模块分别连接至所述顶层模块;所述串口接收模块还分别连接至所述串口发送模块以及所述串口解析模块;每个所述fifo模块还分别一一对应地连接至一个所述CAN控制器;所述顶层模块为现场可编程门阵列的PL端;所述方法,包括如下步骤:
通过串口接收模块将接收到的串口信息转化为字节流,并将所述字节流传输至所述串口解析模块;
通过所述串口解析模块解析所述字节流形成的串口命令,并根据所述串口命令配置对应的标识符场、CAN总线的分组信息以及波特率;
通过现场可编程门阵列的顶层模块中的BRAM总线引脚将所述标识符场、所述分组信息以及所述波特率写入所述现场可编程门阵列中的BRAM;
通过串口发送模块根据所述串口命令读出所述BRAM中的所述标识符场、所述分组信息以及所述波特率并进行打印。
2.如权利要求1所述的CAN收发方法,其特征在于,所述方法还包括:
串口接收模块检测每个CAN控制器的帧起始,根据每个CAN控制器的帧起始调整当前位的同步段,以在每个CAN控制器的发送频率有所偏差时,能够正常识别数据。
3.如权利要求2所述的CAN收发方法,其特征在于,所述串口接收模块检测每个CAN控制器的帧起始,根据每个CAN控制器的帧起始调整当前位的同步段的步骤,包括:
串口接收模块获取每个CAN控制器的波特率;
根据CAN控制器的波特率,计算每个CAN控制器的数据发送时长;
根据每个CAN控制器的数据发送时长,和每个CAN控制器的帧起始,确定每个CAN控制器的数据中段采样时间;
在每个CAN控制器的数据中段采样时间,对CAN控制器进行数据采样。
4.如权利要求3所述的CAN收发方法,其特征在于,所述数据中段采样时间的计算公式如下:
;
;
其中,为第i个CAN控制器的波特率,/>,I为CAN控制器的数量;/>为第i个CAN控制器的数据发送时长;/>为第i个CAN控制器在第j个数据帧的帧起始时间,/>;/>为第i个CAN控制器在第j个数据帧的数据中段采样时间;/>为第i个CAN控制器的设定采样偏移常数;
在发送第1个数据帧时,为初始值,等于0;
在发送第2个数据帧开始,根据各个CAN控制器的数据中段采样时间偏差校正,校正方式参照如下公式:
;
k为第k个数据帧,;/>为第i个CAN控制器在第k个数据帧的帧起始时间,为第i个CAN控制器在第k-1个数据帧的帧起始时间。
5.如权利要求1所述的CAN收发方法,其特征在于,所述通过串口接收模块将接收到的串口信息转化为字节流的步骤,包括:
通过所述串口接收模块接收各所述CAN控制器发出的串口信息,所述串口信息包括发送串口信息的CAN控制器对应的标识符、CAN控制器的波特率,以及CAN控制器的配置信息,所述配置信息包括CAN总线的分组信息、串口信息的目标接收CAN控制器,以及过滤信息;
通过所述串口接收模块将接收到的串口信息转化为字节流。
6.如权利要求5所述的CAN收发方法,其特征在于,所述方法,还包括:
在所述串口解析模块中配置寄存器;
通过寄存器获取CAN总线的分组信息,并获取分组转发调整指令,以根据所述分组转发调整指令,修改所述CAN总线的分组信息;
通过寄存器获取发送串口信息的CAN控制器的波特率,并获取串口信息的目标接收CAN控制器的波特率,以进行波特率动态适配。
7.如权利要求5所述的CAN收发方法,其特征在于,所述方法还包括:
在CAN控制器设置过滤器;
根据用户的设定,形成CAN总线的分组信息;
通过所述CAN控制器根据发送串口信息的CAN控制器、CAN总线的分组信息、以及串口信息的目标接收CAN控制器,对串口信息进行转发或过滤。
8.如权利要求6所述的CAN收发方法,其特征在于,所述方法,还包括:
获取发送串口信息的CAN控制器和目标接收CAN控制器的目标通信协议;
所述寄存器根据目标通信协议,调整当前通信协议类型。
9.一种CAN收发系统,其特征在于,应用如权利要求1至8中任一项所述的CAN收发方法;所述CAN收发系统包括现场可编程门阵列的顶层模块、串口发送模块、串口接收模块、串口解析模块、多个CAN控制器以及多个fifo模块,所述fifo模块的数量与所述CAN控制器的数量相同;所述串口发送模块、所述串口接收模块、所述串口解析模块、多个所述CAN控制器以及多个所述fifo模块分别连接至所述顶层模块;所述串口接收模块还分别连接至所述串口发送模块以及所述串口解析模块;每个所述fifo模块还分别一一对应地连接至一个所述CAN控制器;所述顶层模块为现场可编程门阵列的PL端。
10.如权利要求9所述的CAN收发系统,其特征在于,所述串口发送模块连接至所述顶层模块的RS232串口发送引脚;所述串口接收模块连接至所述顶层模块的RS232串口接收引脚;所述串口解析模块分别连接至所述顶层模块的BRAM总线引脚以及所述顶层模块的CAN配置信息引脚;每个所述CAN控制器分别连接至所述顶层模块的一个CAN串口发送引脚和一个CAN串口接收引脚。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311238674.0A CN116996340B (zh) | 2023-09-25 | 2023-09-25 | 一种can收发方法和can收发系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311238674.0A CN116996340B (zh) | 2023-09-25 | 2023-09-25 | 一种can收发方法和can收发系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116996340A CN116996340A (zh) | 2023-11-03 |
CN116996340B true CN116996340B (zh) | 2023-12-01 |
Family
ID=88525083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311238674.0A Active CN116996340B (zh) | 2023-09-25 | 2023-09-25 | 一种can收发方法和can收发系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116996340B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104749987A (zh) * | 2013-12-29 | 2015-07-01 | 哈尔滨理大晟源科技开发有限公司 | 基于fpga的can总线控制器 |
CN105426562A (zh) * | 2015-08-18 | 2016-03-23 | 杭州优稳自动化系统有限公司 | 一种多io模块与多通讯模块之间的uart通讯方法及装置 |
CN208656793U (zh) * | 2018-05-02 | 2019-03-26 | 山东浪潮人工智能研究院有限公司 | 基于Microblaze核的CAN交换模块和系统 |
CN112379658A (zh) * | 2020-11-10 | 2021-02-19 | 华东师范大学 | 一种片上can控制器调试系统 |
CN113709010A (zh) * | 2021-07-16 | 2021-11-26 | 电子科技大学 | 一种不限帧长的Modbus通信协议系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7142557B2 (en) * | 2001-12-03 | 2006-11-28 | Xilinx, Inc. | Programmable logic device for wireless local area network |
-
2023
- 2023-09-25 CN CN202311238674.0A patent/CN116996340B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104749987A (zh) * | 2013-12-29 | 2015-07-01 | 哈尔滨理大晟源科技开发有限公司 | 基于fpga的can总线控制器 |
CN105426562A (zh) * | 2015-08-18 | 2016-03-23 | 杭州优稳自动化系统有限公司 | 一种多io模块与多通讯模块之间的uart通讯方法及装置 |
CN208656793U (zh) * | 2018-05-02 | 2019-03-26 | 山东浪潮人工智能研究院有限公司 | 基于Microblaze核的CAN交换模块和系统 |
CN112379658A (zh) * | 2020-11-10 | 2021-02-19 | 华东师范大学 | 一种片上can控制器调试系统 |
CN113709010A (zh) * | 2021-07-16 | 2021-11-26 | 电子科技大学 | 一种不限帧长的Modbus通信协议系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116996340A (zh) | 2023-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107483370B (zh) | 一种在fc网络上传输ip和can业务的方法 | |
US20100188980A1 (en) | Explicit Flow Control in a Gigabit/10 Gigabit Ethernet System | |
US20020078249A1 (en) | Programmable multi-standard MAC architecture | |
US20120327950A1 (en) | Method for Transmitting Data Packets | |
EP0685951A2 (en) | Line interface devices for fast-packet networks | |
WO2003069440A2 (en) | Network processor with high-speed transceiver | |
WO2022222370A1 (zh) | Fc交换机的控制方法、装置、fc交换机和存储介质 | |
CN109218154A (zh) | 一种基于fpga的千兆以太网到slip的转换系统 | |
CN210958404U (zh) | 支持时间敏感网络功能的以太网交换机 | |
WO2003034206B1 (en) | Host network interface device and drive network interface device | |
US8576734B2 (en) | Information processing apparatus, control method thereof and program | |
EP1987631B1 (en) | Method and device to transmit a busy medium signal to another device | |
CN110995507B (zh) | 一种网络加速控制器及方法 | |
CN116996340B (zh) | 一种can收发方法和can收发系统 | |
CN107957971A (zh) | 一种基于fpga的多处理器之间的通信系统及通信方法 | |
CN103220193B (zh) | 一种直放站中的以太网接入传输装置及方法 | |
CN111147175B (zh) | 时间触发以太网数据帧捕获、存储装置及方法 | |
US10826635B2 (en) | Synchronization of adaptive filter switching and channel equalization in full duplex (FDX) cable modems | |
CN117176666A (zh) | 网络流量控制方法、装置、交换机、电子设备和存储介质 | |
US8625619B2 (en) | Domain gateway control system and method thereof | |
CN112073333B (zh) | 一种基于SONiC开发的智能容器化流量风暴控制方法与系统 | |
CN102611615B (zh) | 一种基于fpga的一体化系统 | |
KR20010003431A (ko) | 이더넷 스위치에서 오버플로우 발생 방지를 위한 데이터전송속도 자동 조정장치 및 방법 | |
CN111245658B (zh) | 一种基于most150的网络带宽动态调整方法 | |
JP3843923B2 (ja) | プリアンブルを利用したデータ交換装置及びスイッチングハブ並びにメディアコンバータ |
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 |