CN109768907A - 一种can总线波特率自适应设置方法 - Google Patents
一种can总线波特率自适应设置方法 Download PDFInfo
- Publication number
- CN109768907A CN109768907A CN201910017580.8A CN201910017580A CN109768907A CN 109768907 A CN109768907 A CN 109768907A CN 201910017580 A CN201910017580 A CN 201910017580A CN 109768907 A CN109768907 A CN 109768907A
- Authority
- CN
- China
- Prior art keywords
- baud rate
- bus
- setting
- monitoring
- data frame
- 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.)
- Pending
Links
Landscapes
- Small-Scale Networks (AREA)
Abstract
本发明公开一种CAN总线波特率自适应设置方法。所述方法通过实时监测CAN总线上的所有数据帧,根据是否监测到数据帧判断CAN总线波特率设置是否成功,如果不成功,按步长逐渐降低波特率,直到监测到数据帧,实现了CAN总线波特率的自适应设置。本发明通过采用广播接收方式,不对任何CAN标识符数据帧进行过滤,监测CAN总线上的所有数据帧,大大提高了CAN总线波特率设置的效率;本发明还具有CAN控制器故障监测与自动复位功能,如果在设定的时间内没有监测到CAN总线上的数据帧,对CAN控制器进行复位后重新执行波特率自适应设置流程。
Description
技术领域
本发明属于嵌入式计算机CAN总线技术领域,具体涉及一种CAN总线波特率自适应设置方法。
背景技术
在工业应用现场,各种嵌入式计算机实现互联互通是大势所趋。在各种现场总线的使用过程中,由于CAN总线具有抗干扰性强、传输距离远以及维护成本低等优点,在各种工业现场已广为应用。根据实际的工业现场使用场景,当CAN控制器节点数少时,可以设置CAN总线的波特率为1Mbit/s来提高传输速率;而当CAN控制器节点数目较多时,1Mbit/s的波特率无法满足使用的要求,会出现严重的丢帧现象,因此需要降低CAN总线的波特率,如500Kbit/s或者250Kbit/s等。
目前,基于CAN总线的波特率自适应控制器产品已开始应用于工业控制现场,但技术并不成熟。例如,当某个控制器节点出现异常时,可能会导致一直复位现象发生。这种现象能够对CAN总线造成严重干扰,轻则使CAN总线丢帧,重则可能导致CAN总线瘫痪。
发明内容
为了解决现有技术中存在的上述问题,本发明提出一种CAN总线波特率自适应设置方法。
为实现上述目的,本发明采用如下技术方案:
一种CAN总线波特率自适应设置方法,包括以下步骤:
步骤1,设置CAN总线的初始波特率;
步骤2,对CAN总线上的所有数据帧进行实时监测;
步骤3,如果在设定的第一时间阈值内监测到CAN总线上的数据帧,则波特率设置成功,自适应设置完毕;否则,转步骤4;
步骤4,按照设定的步长降低波特率,转步骤2;
步骤5,如果在设定的第二时间阈值内没有监测到CAN总线上的数据帧,对CAN控制器进行复位操作,转步骤1。
与现有技术相比,本发明具有以下有益效果:
本发明通过实时监测CAN总线上的所有数据帧,根据是否监测到数据帧判断CAN总线波特率设置是否成功,如果不成功,按步长逐渐降低波特率,直到监测到数据帧,实现了CAN总线波特率的自适应设置。本发明通过采用广播接收方式,不对任何CAN标识符数据帧进行过滤,监测CAN总线上的所有数据帧,大大提高了CAN总线波特率设置的效率;本发明还具有CAN控制器故障监测与自动复位功能,如果在设定的时间(第二时间阈值)内没有监测到CAN总线上的数据帧,对CAN控制器进行复位后重新执行波特率自适应设置流程。
附图说明
图1为本发明实施例一种CAN总线波特率自适应设置方法的流程图。
具体实施方式
下面结合附图对本发明作进一步详细说明。
本发明实施例一种CAN总线波特率自适应设置方法的流程图如图1所示,所述方法包括:
S101、设置CAN总线的初始波特率;
S102、对CAN总线上的所有数据帧进行实时监测;
S103、如果在设定的第一时间阈值内监测到CAN总线上的数据帧,则波特率设置成功,自适应设置完毕;否则,转S104;
S104、按照设定的步长降低波特率,转S102;
S105、如果在设定的第二时间阈值内没有监测到CAN总线上的数据帧,对CAN控制器进行复位操作,转S101。
在本实施例中,步骤S101用于设置CAN总线的初始波特率。初始波特率一般设置得较高,如1Mbit/s。如果设置不成功,再逐步降低波特率,直到设置成功。CAN总线波特率的设置一般通过设置波特率设置寄存器实现。例如,对于AT91SAM7X256型嵌入式微处理器,CPU主频为48MHz,可通过将CAN_BR寄存器的值设置为0x00173255,将波特率设置为250Kbit/s;通过将CAN_BR寄存器的值设置为0x00050301,将波特率设置为1Mbit/s。
在本实施例中,步骤S102用于对CAN总线上的所有数据帧进行实时监测,根据是否监测到数据帧判断波特率设置是否成功。对CAN总线上的所有数据帧进行实时监测,也就是采取广播接收方式,不对任何CAN标识符数据帧进行过滤,可以接收CAN总线上的所有数据帧。例如,如果一条CAN总线上挂有多个控制器节点,当CAN总线上有一条数据帧传输时,所有的控制器节点均能接收到此数据帧。只要接收到数据帧就认为CAN波特率设置成功,波特率设置成功之后,再根据各个节点控制器的实际地址进行CAN标识符接收屏蔽过滤设置。这样处理可大大提高CAN总线波特率自适应设置的效率。
在本实施例中,步骤S103主要用于判断波特率设置是否成功。判断方法是:设置第一时间阈值,根据在第一时间阈值内是否监测到CAN总线上的数据帧进行判断,如果接收到数据帧,就认为波特率设置成功,自适应设置结束;如果没有接收到数据帧,就认为当前的波特率不匹配,即设置失败。第一时间阈值取值过大,将使波特率的自适应设置耗时过长;取值过小,可能会出现误判,有可能将本来可以匹配的波特率因等待时间太短判为不匹配。第一时间阈值的大小一般根据经验或反复试验确定。第一时间阈值可利用定时器获得。例如,如果第一时间阈值为200ms,可配置一个10ms的定时器,每10ms中断一次,对中断次数进行计数,如果当计数值为20(20×10ms=200ms)时,依然没有监听到CAN总线上的任何数据帧,则说明设置的波特率与CAN总线上的波特率不匹配,波特率设置失败。
在本实施例中,步骤S104主要用于当波特率设置失败时重新设置波特率,重新设置的波特率比当前设置失败的波特率低一个步长。每次重新设置采用的步长可以相等,也可以不等。步长尽量不要过大,步长过大很难使自适应设置的波特率达到或接近最大值;当然,步长也不要太小,步长太小会使波特率自适应设置次数明显增加,从而增加自适应设置的耗时。
在本实施例中,步骤S105主要用于实现CAN控制器的故障监测与自动复位功能。当CAN控制器发生故障时,可能出现这样的现象:不管将波特率设置多低都无法监测到CAN总线上的数据帧。为了解决上述问题,本实施例采取如下技术方案:如果在设定的第二时间阈值内没有监测到CAN总线上的数据帧,对CAN控制器进行复位操作后转步骤S101,重新执行波特率自适应设置流程。CAN控制器复位主要包括关闭CAN总线时钟、配置CAN管脚使能、开启CAN管脚时钟、开启CAN总线时钟等。第二时间阈值明显大于第一时间阈值,第二时间阈值的大小同样根据经验或反复试验确定。
作为一种可选实施例,所述S101具体包括:读取存储器中的波特率和CRC16校验码,计算所述波特率对应的CRC16校验码,如果计算结果与读取的CRC16校验码相等,按照读取的波特率设置CAN总线的波特率;否则,按照预定的初始波特率设置CAN总线的波特率;所述S103还包括:如果在设定的第一时间阈值内监测到CAN总线上的数据帧,将设置的波特率及其对应的CRC16校验码保存至所述存储器。
本实施例给出了设置CAN总线初始波特率的一种改进方法。在设置初始波特率之前,先判断在此次波特率设置之前是否已经成功地设置过波特率,如果是,采用成功设置过的波特率;如果不是,将波特率设置为预定的初始波特率。判断方法是:读取存储器中的波特率和CRC16校验码,计算所述波特率对应的CRC16校验码,如果计算结果与读取的CRC16校验码相等,表明在此次波特率设置之前已经成功地设置过波特率,因为所述存储器是专门用于保存设置成功的波特率及其对应的CRC16校验码的,步骤S103在波特率设置成功后,将该波特率及其对应的CRC16校验码存入所述存储器中。因此,如果此次波特率设置之前还没有成功地设置过波特率,从所述存储器中读出的两个数据将不可能恰好一个数据是另一个数据的CRC16校验码。
根据CAN总线协议,CAN控制器具有主动错误(主动报错)和被动错误(主动报错)功能,当一条CAN总线上某个节点的CAN波特率与其它节点的波特率不匹配时,该节点在监测总线数据时,会导致总线错误。当主动报错节点检测到一个总线错误时,这个节点将产生一个主动错误标志来中断当前的报文发送。主动错误标志由6个连续的显性位构成,这种位序列主动打破了位填充规则,所有其它节点在识别到所生成的位填充错误后,会自行产生错误帧,称为错误反射标志。例如,当前CAN总线的正常通讯波特率为500Kbit/s,由于某个节点控制器存在故障,一直不停地复位,并且每次上电初始的波特率为125Kbit/s,必定对CAN总线造成严重的干扰,使CAN通讯丢帧严重。而本实施例通过上电后从存储器中读取上一次波特率设置成功后保存的波特率值,并以该值作为初始波特率,即使某个节点控制器存在故障,由于波特率始终与总线的波特率一致,也不会导致CAN总线错误以及使CAN总线上产生错误反射标志,从而增强了CAN总线工作的稳定性。
作为一种可选实施例,所述S102通过设置CAN控制器的接收消息邮箱的信息帧接收掩码为0,实现对CAN总线上的所有数据帧进行实时监测。
本实施例给出了实现对CAN总线上的所有数据帧进行实时监测的一种技术方案。CAN控制器具有接收屏蔽过滤功能,将CAN控制器的接收消息邮箱的信息帧接收掩码设置为0(例如,将CAN_MAMx寄存器的值设置为0),即可不对任何CAN标识符数据帧进行过滤,从而监测CAN总线上的所有数据帧。CAN接收邮箱是CAN控制器里面的一个缓存区,用于接收指定地址消息的数据。
优选地,所述第一时间阈值为0.2秒。
优选地,所述第二时间阈值为10秒。
上述仅对本发明中的几种具体实施例加以说明,但并不能作为本发明的保护范围,凡是依据本发明中的设计精神所做出的等效变化或修饰或等比例放大或缩小等,均应认为落入本发明的保护范围。
Claims (5)
1.一种CAN总线波特率自适应设置方法,其特征在于,包括以下步骤:
步骤1,设置CAN总线的初始波特率;
步骤2,对CAN总线上的所有数据帧进行实时监测;
步骤3,如果在设定的第一时间阈值内监测到CAN总线上的数据帧,则波特率设置成功,自适应设置完毕;否则,转步骤4;
步骤4,按照设定的步长降低波特率,转步骤2;
步骤5,如果在设定的第二时间阈值内没有监测到CAN总线上的数据帧,对CAN控制器进行复位操作,转步骤1。
2.根据权利要求1所述的CAN总线波特率自适应设置方法,其特征在于,
所述步骤1具体包括:读取存储器中的波特率和CRC16校验码,计算所述波特率对应的CRC16校验码,如果计算结果与读取的CRC16校验码相等,按照读取的波特率设置CAN总线的波特率;否则,按照预定的初始波特率设置CAN总线的波特率;
所述步骤3还包括:如果在设定的第一时间阈值内监测到CAN总线上的数据帧,将设置的波特率及其对应的CRC16校验码保存至所述存储器。
3.根据权利要求1所述的CAN总线波特率自适应设置方法,其特征在于,所述步骤2通过设置CAN控制器的接收消息邮箱的信息帧接收掩码为0,实现对CAN总线上的所有数据帧进行实时监测。
4.根据权利要求1~3任意一项所述的CAN总线波特率自适应设置方法,其特征在于,所述第一时间阈值为0.2秒。
5.根据权利要求1~3任意一项所述的CAN总线波特率自适应设置方法,其特征在于,所述第二时间阈值为10秒。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910017580.8A CN109768907A (zh) | 2019-01-09 | 2019-01-09 | 一种can总线波特率自适应设置方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910017580.8A CN109768907A (zh) | 2019-01-09 | 2019-01-09 | 一种can总线波特率自适应设置方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109768907A true CN109768907A (zh) | 2019-05-17 |
Family
ID=66452781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910017580.8A Pending CN109768907A (zh) | 2019-01-09 | 2019-01-09 | 一种can总线波特率自适应设置方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109768907A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110430109A (zh) * | 2019-08-11 | 2019-11-08 | 南京中消安全技术有限公司 | 一种基于二总线的消防设备的通讯方法及系统 |
CN111277455A (zh) * | 2020-01-15 | 2020-06-12 | 深圳市元征科技股份有限公司 | Can网络波特率识别方法、装置、设备和存储介质 |
CN111459727A (zh) * | 2019-12-25 | 2020-07-28 | 山东有人信息技术有限公司 | 串口波特率最大无错容忍范围的智能自动化测试系统及测试方法 |
CN112835343A (zh) * | 2021-01-04 | 2021-05-25 | 东风汽车股份有限公司 | 整车can总线错误帧快速排查方法 |
CN114172760A (zh) * | 2021-11-15 | 2022-03-11 | 广州极飞科技股份有限公司 | 通信控制方法、装置、无人车、存储介质及电子设备 |
CN114979058A (zh) * | 2022-06-30 | 2022-08-30 | 东风电驱动系统有限公司 | 一种can多邮箱复用处理方法及系统 |
CN115643129A (zh) * | 2022-10-26 | 2023-01-24 | 中国船舶重工集团公司第七一九研究所 | 船舶柴油发电机组监控星型can总线的波特率调控结构和方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103516571A (zh) * | 2013-07-22 | 2014-01-15 | 浙江中控研究院有限公司 | 一种双can总线保证数据通信可靠性的系统架构及其方法 |
CN103777576A (zh) * | 2012-10-18 | 2014-05-07 | 重庆工业自动化仪表研究所 | 自适应can总线波特率转换器 |
CN105141489A (zh) * | 2014-05-29 | 2015-12-09 | 中国人民解放军93199部队飞行仿真技术研究所 | 一种用于仿真器的实时数据采集系统 |
CN106411641A (zh) * | 2016-09-20 | 2017-02-15 | 宁波中车时代传感技术有限公司 | 一种自动检测can总线波特率的方法 |
CN108072779A (zh) * | 2017-12-20 | 2018-05-25 | 福建利利普光电科技有限公司 | 一种数字示波器can总线波特率自动识别方法 |
CN207560000U (zh) * | 2017-10-30 | 2018-06-29 | 深圳市三旺通信技术有限公司 | 波特率自适应的控制器局域网光纤转换器 |
-
2019
- 2019-01-09 CN CN201910017580.8A patent/CN109768907A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103777576A (zh) * | 2012-10-18 | 2014-05-07 | 重庆工业自动化仪表研究所 | 自适应can总线波特率转换器 |
CN103516571A (zh) * | 2013-07-22 | 2014-01-15 | 浙江中控研究院有限公司 | 一种双can总线保证数据通信可靠性的系统架构及其方法 |
CN105141489A (zh) * | 2014-05-29 | 2015-12-09 | 中国人民解放军93199部队飞行仿真技术研究所 | 一种用于仿真器的实时数据采集系统 |
CN106411641A (zh) * | 2016-09-20 | 2017-02-15 | 宁波中车时代传感技术有限公司 | 一种自动检测can总线波特率的方法 |
CN207560000U (zh) * | 2017-10-30 | 2018-06-29 | 深圳市三旺通信技术有限公司 | 波特率自适应的控制器局域网光纤转换器 |
CN108072779A (zh) * | 2017-12-20 | 2018-05-25 | 福建利利普光电科技有限公司 | 一种数字示波器can总线波特率自动识别方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110430109A (zh) * | 2019-08-11 | 2019-11-08 | 南京中消安全技术有限公司 | 一种基于二总线的消防设备的通讯方法及系统 |
CN111459727A (zh) * | 2019-12-25 | 2020-07-28 | 山东有人信息技术有限公司 | 串口波特率最大无错容忍范围的智能自动化测试系统及测试方法 |
CN111459727B (zh) * | 2019-12-25 | 2023-07-14 | 山东有人物联网股份有限公司 | 串口波特率最大无错容忍范围的智能自动化测试系统及测试方法 |
CN111277455A (zh) * | 2020-01-15 | 2020-06-12 | 深圳市元征科技股份有限公司 | Can网络波特率识别方法、装置、设备和存储介质 |
CN112835343A (zh) * | 2021-01-04 | 2021-05-25 | 东风汽车股份有限公司 | 整车can总线错误帧快速排查方法 |
CN114172760A (zh) * | 2021-11-15 | 2022-03-11 | 广州极飞科技股份有限公司 | 通信控制方法、装置、无人车、存储介质及电子设备 |
CN114979058A (zh) * | 2022-06-30 | 2022-08-30 | 东风电驱动系统有限公司 | 一种can多邮箱复用处理方法及系统 |
CN114979058B (zh) * | 2022-06-30 | 2023-10-03 | 东风电驱动系统有限公司 | 一种can多邮箱复用处理方法及系统 |
CN115643129A (zh) * | 2022-10-26 | 2023-01-24 | 中国船舶重工集团公司第七一九研究所 | 船舶柴油发电机组监控星型can总线的波特率调控结构和方法 |
CN115643129B (zh) * | 2022-10-26 | 2024-04-09 | 中国船舶重工集团公司第七一九研究所 | 船舶柴油发电机组监控星型can总线的波特率调控结构和方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109768907A (zh) | 一种can总线波特率自适应设置方法 | |
US10348616B2 (en) | Packet transmission method and apparatus, and interconnect interface | |
US9009523B2 (en) | Method and apparatus for isolating a fault in a controller area network | |
CN105700967A (zh) | 一种外设部件内部互联PCIe设备及其检测方法 | |
CN104081797A (zh) | 被配置为用于在数据模式期间对前向纠错进行解析的网络系统 | |
CN103560898A (zh) | 一种端口状态设置方法、端口优先级的选择方法及装置 | |
US9331922B2 (en) | Automatic recover after loss of signal event in a network device | |
CN110601945A (zh) | 一种双冗余can总线通信系统和通信方法 | |
EP3952441A1 (en) | Cell connection failure processing method, terminal device, and network-side device | |
JP2021513781A (ja) | 閾値ペアの変更を管理するための方法、装置およびデバイス | |
CN104104542B (zh) | 一种基于rs485的实时智能排障方法 | |
CN102148724A (zh) | 链路检测方法及网络接入设备 | |
WO2024007995A1 (zh) | 网络故障恢复方法、装置、设备及存储介质 | |
CN104639358A (zh) | 批量网络端口切换方法及切换系统 | |
CN105634894B (zh) | 一种增强型can总线数据重发方法和装置 | |
CN102843274A (zh) | 一种多链路故障检测的方法及装置 | |
WO2014039032A1 (en) | Method and apparatus for isolating a fault-active controller in a controller area network | |
US20230189394A1 (en) | Method and rlc entity for timer management in wireless communication system | |
CN105323130B (zh) | 一种can总线无应答处理方法及装置 | |
CN115904772A (zh) | PCIe链路的错误确定方法、装置、设备及存储介质 | |
CN113965466A (zh) | 一种自适应网络带宽的数据传输系统 | |
CN104486787A (zh) | 一种无线链路故障检测方法及装置 | |
US9596139B1 (en) | Network system and method for detection and correction of duplex mismatch including duplex mode determination | |
CN109495384B (zh) | 一种提高网络路由可靠性的方法和装置 | |
CN107547315A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190517 |
|
RJ01 | Rejection of invention patent application after publication |