一种CAN总线波特率自适应设置方法技术

技术编号:21146002 阅读:52 留言:0更新日期:2019-05-18 06:38
本发明专利技术公开一种CAN总线波特率自适应设置方法。所述方法通过实时监测CAN总线上的所有数据帧,根据是否监测到数据帧判断CAN总线波特率设置是否成功,如果不成功,按步长逐渐降低波特率,直到监测到数据帧,实现了CAN总线波特率的自适应设置。本发明专利技术通过采用广播接收方式,不对任何CAN标识符数据帧进行过滤,监测CAN总线上的所有数据帧,大大提高了CAN总线波特率设置的效率;本发明专利技术还具有CAN控制器故障监测与自动复位功能,如果在设定的时间内没有监测到CAN总线上的数据帧,对CAN控制器进行复位后重新执行波特率自适应设置流程。

【技术实现步骤摘要】
一种CAN总线波特率自适应设置方法
本专利技术属于嵌入式计算机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校验码存入所述存储器中。因此,如果此次波特率设置之前还没有成本文档来自技高网...

【技术保护点】
1.一种CAN总线波特率自适应设置方法,其特征在于,包括以下步骤:步骤1,设置CAN总线的初始波特率;步骤2,对CAN总线上的所有数据帧进行实时监测;步骤3,如果在设定的第一时间阈值内监测到CAN总线上的数据帧,则波特率设置成功,自适应设置完毕;否则,转步骤4;步骤4,按照设定的步长降低波特率,转步骤2;步骤5,如果在设定的第二时间阈值内没有监测到CAN总线上的数据帧,对CAN控制器进行复位操作,转步骤1。

【技术特征摘要】
1.一种CAN总线波特率自适应设置方法,其特征在于,包括以下步骤:步骤1,设置CAN总线的初始波特率;步骤2,对CAN总线上的所有数据帧进行实时监测;步骤3,如果在设定的第一时间阈值内监测到CAN总线上的数据帧,则波特率设置成功,自适应设置完毕;否则,转步骤4;步骤4,按照设定的步长降低波特率,转步骤2;步骤5,如果在设定的第二时间阈值内没有监测到CAN总线上的数据帧,对CAN控制器进行复位操作,转步骤1。2.根据权利要求1所述的CAN总线波特率自适应设置方法,其特征在于,所述步骤1具体包括:读取存储器中的波特率和CRC16校验码,计算所述波特率对应的CRC16校验码,如果计算结果与读取的CRC16校验码相...

【专利技术属性】
技术研发人员:李永成龚攀卢铭卓明俞凌
申请(专利权)人:北京安控科技股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1