基于TC387芯片的CAN总线波特率自适应方法、装置及存储介质与流程

文档序号:26095580发布日期:2021-07-30 18:05阅读:1832来源:国知局
基于TC387芯片的CAN总线波特率自适应方法、装置及存储介质与流程

本发明涉及汽车总线技术领域,具体而言,涉及基于tc387芯片的can总线波特率自适应方法、装置及存储介质。



背景技术:

can是控制器局域网络(controllerareanetwork,can)的简称,can总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,can总线通信是一种高效的总线通信方式,被广泛应用于汽车及其他领域中。而英飞凌公司所生产的高性能单片机tc387芯片的can总线在传统总线的基础上集合博世m_can和时间触发can,形成了一种全新的mcmcan,其具有多种工作模式,能够适应不同的应用场景。

但can总线的波特率不是唯一的,can总线在不同的应用环境(主要是通信距离)会使用不同的波特率。通常情况下,can总线上的发送/接收设备数量能够达到十几个甚至几十个,使用同一条can总线通信的设备,所有设备的波特率必须一致,若其中一台设备的波特率与其他设备的不同,则该设备将无法正确接收和发送can数据,即无法进行正常通讯。

在现有技术中,波特率自动匹配方法主要是通过设置采样周期,连续记录两个can总线上电平跳变的时间,通过比对计算的方法得出总线上的最小位时间,进而得出can总线波特率,最后修改发送设备或接受设备波特率的设定值。采用上述现有技术中的波特率自动匹配方法,对于采样的要求较高,需要设备能够对can总线上电平跳变的时间进行精确的采样,同时无法排除总线上噪声和电磁干扰造成的电平跳变,故而自适应匹配的成功率低下。



技术实现要素:

本说明书提供基于tc387芯片的can总线波特率自适应方法、装置及存储介质,用以克服现有技术中存在的至少一个技术问题。

根据本发明的第一方面实施例的基于tc387芯片的can总线波特率自适应方法,所述can总线波特率自适应方法包括:

配置can总线的波特率匹配表;所述波特率匹配表包括第一优先级波特率匹配表、第二优先级波特率匹配表;

优先选取所述第一优先级波特率匹配表中的波特率,以所选取的波特率向所述can总线发送数据;

当数据发送成功时,产生发送成功中断,在发送成功中断中确定所述can总线上的波特率值;

当数据发送失败时,以相同的波特率继续向所述can总线发送数据;

错误计数器的错误计数累加1;

当所述错误计数的值达到计错阈值时,产生busoff中断,判断所述第一优先级波特率匹配表中所有合法的波特率是否均已匹配完毕;

若未匹配完毕,在所述busoff中断中清空can缓冲器中的数据;

选取所述第一优先级波特率匹配表中未被选取的波特率,将所选取的波特率修改为下一波特率;

消除busoff标志位,向所述can总线发送数据;

若已匹配完毕,则启用所述第二优先级波特率匹配表;

选取所述第二优先级波特率匹配表中的波特率,以所选取的波特率向所述can总线发送数据;其中,所述第二优先级波特率匹配表中的波特率降序排列,对所述第二优先级波特率匹配表中的波特率按照降序排列后的顺序依次进行选取;

当数据发送成功时,产生发送成功中断,在发送成功中断中确定所述can总线上的波特率值;

当数据发送失败时,以相同的波特率继续向所述can总线发送数据;

所述错误计数器的错误计数累加1;

当所述错误计数的值达到计错阈值时,产生busoff中断,判断所述第二优先级波特率匹配表中所有合法的波特率是否均已匹配完毕;

若未匹配完毕,在所述busoff中断中清空can缓冲器中的数据;

按照降序排列后的顺序依次选取所述第二优先级波特率匹配表中下一个未被选取的波特率,将所选取的波特率修改为下一波特率;

消除busoff标志位,向所述can总线发送数据;

若已匹配完毕,则生成can总线错误信号,进行错误提示。

可选的,所述can总线波特率自适应方法还包括:

当所述错误计数的值达到计错阈值时,产生总线错误busoff,禁止发送设备继续向所述can总线发送数据。

可选的,所述第一优先级波特率匹配表中的波特率设置为250kbps、500kbps、1000kbps。

进一步可选的,所述第一优先级波特率匹配表中的波特率升序排列,对所述第一优先级波特率匹配表中的波特率按照升序排列后的顺序依次进行选取。

可选的,所述生成can总线错误信号,进行错误提示包括:

生成can总线错误信号;

根据所述can总线错误信号生成can总线波特率设置不合法信息,以进行错误提示。

可选的,所述生成can总线错误信号,进行错误提示包括:

生成can总线错误信号;

根据所述can总线错误信号生成can总线物理连接错误信息,以进行错误提示。

根据本发明的第二方面实施例的基于tc387芯片的can总线波特率自适应装置,所述can总线波特率自适应装置包括存储器、处理器以及存储在所述存储器并可在所述处理器上执行的can总线波特率自适应程序,所述can总线波特率自适应程序被所述处理器执行时实现如上述第一方面实施例中的基于tc387芯片的can总线波特率自适应方法的各个步骤。

根据本发明的第三方面实施例的存储介质,所述存储介质存储有can总线波特率自适应程序,所述can总线波特率自适应程序被处理器执行时实现如上述第一方面实施例中的基于tc387芯片的can总线波特率自适应方法的各个步骤。

根据本发明实施例的基于tc387芯片的can总线波特率自适应方法、装置及存储介质,至少具有如下有益效果:

采用软件自动匹配合法波特率的方式,快速、高效地自适应总线波特率,解决了现有技术中电磁干扰对于电平跳变采样的影响,真正实现当can总线波特率未知时自适应波特率的目的,使得发送设备自适应接收设备的波特率,无论接收设备使用何种波特率,发送设备均能自动适应,实现发送设备与不同波特率的接收设备之间的连接,更简洁高效,且不存在噪声干扰等影响因素,自适应速度更快,成功率更高。

本说明书实施例的创新点包括:

1、本实施例中,采用软件自动匹配合法波特率的方式,快速、高效地自适应总线波特率,解决了现有技术中电磁干扰对于电平跳变采样的影响,真正实现当can总线波特率未知时自适应波特率的目的,是本说明书实施例的创新点之一。

2、本实施例中,使得发送设备自适应接收设备的波特率,无论接收设备使用何种波特率,发送设备均能自动适应,实现发送设备与不同波特率的接收设备之间的连接,是本说明书实施例的创新点之一。

3、本实施例中,相比于硬件手段检测总线上的电平变化的方式,更简洁高效,且不存在噪声干扰等影响因素,自适应速度更快,成功率更高,是本说明书实施例的创新点之一。

附图说明

为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本说明书实施例一提供的基于tc387芯片的can总线波特率自适应方法的流程示意图;

图2为本说明书实施例二提供的基于tc387芯片的can总线波特率自适应方法的流程示意图。

具体实施方式

下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,本说明书实施例及附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例一

本发明实施例一公开了一种基于tc387芯片的can总线波特率自适应方法。在本发明实施例一中,该can总线波特率自适应方法可以应用于汽车控制器、电子通信中,适用于tc387芯片,但并不仅仅限制于tc387芯片,也可适用于其他芯片。以下分别进行详细说明。

图1是示出了根据本说明书实施例一提供的一种基于tc387芯片的can总线波特率自适应方法。结合图1所示,本can总线波特率自适应方法包括以下步骤:

步骤101,配置can总线的波特率匹配表。

具体的,波特率匹配表包括第一优先级波特率匹配表、第二优先级波特率匹配表。

在一个具体的实施例中,将can总线上所有可能出现的波特率以常用度分为第一优先级波特率匹配表、第二优先级波特率匹配表,优先选取第一优先级波特率匹配表中的波特率。当在第一优先级波特率匹配表中未匹配到正确的波特率时,再启用第二优先级波特率匹配表。

其中,第一优先级波特率匹配表中的波特率可设置为250kbps、500kbps、1000kbps,并将第一优先级波特率匹配表中的波特率升序排列,对第一优先级波特率匹配表中的波特率按照升序排列后的顺序依次进行选取。

第二优先级波特率匹配表中的波特率可设置为800kbps、400kbps、200kbps、125kbps、100kbps、80kbps、62.5kbps、50kbps、40kbps、25kbps、20kbps、10kbps、5kbps,并将第二优先级波特率匹配表中的波特率降序排列,对第二优先级波特率匹配表中的波特率按照降序排列后的顺序依次进行选取。

需要注意并理解的是,第一优先级波特率匹配表、第二优先级波特率匹配表中波特率值并不限制于此,还可根据实际应用过程中的具体需求进行调整设置其他波特率值,且第一优先级波特率匹配表、第二优先级波特率匹配表中波特率的排列顺序也可按照实际应用过程中波特率的常用度进行重新排列。

步骤102,选取波特率匹配表中的波特率。

在一个具体的实施例中,按照步骤101中第一优先级波特率匹配表、第二优先级波特率匹配表的波特率排列顺序,依次选取波特率。即首先选取常用度较高的第一优先级波特率匹配表中的250kbps,再依次选取500kbps、1000kbps,当启用第二优先级波特率匹配表时,先优选800kbps,最后选取5kbps,按照波特率的常用度进行选取,尽可能地提高波特率匹配成功率,以节约匹配时间,提高自适应速度。

步骤103,以所选取的波特率向can总线发送数据。

在一个具体的实施例中,发送设备以步骤102中所选取的波特率向can总线发送数据,以检测在该波特率值下本发送设备与接收设备之间的连接状况。

步骤104,判断数据是否发送成功。

在一个具体的实施例中,检测本发送设备以步骤102中所选取的波特率所发送的数据是否能被接收设备接收,根据数据能否发送成功,判断当前所选取的波特率是否匹配。

当数据发送成功时,则说明匹配成功,从步骤104进入步骤105;当数据发送失败时,则说明匹配失败,从步骤104进入步骤106。

当数据发送成功时:

步骤105,产生发送成功中断,在发送成功中断中确定can总线上的波特率值。

在一个具体的实施例中,当数据发送成功时,则说明匹配到正确的波特率,tc387芯片的mcmcan触发发送成功中断,在发送成功中断的中断函数中监控到can总线上的波特率值。

当数据发送失败时:

步骤106,判断波特率匹配表中所有合法的波特率是否均已匹配完毕。

在一个具体的实施例中,当数据发送失败时,则说明未匹配到正确的波特率,需进一步检测波特率匹配表中其他波特率的匹配度,于是,先要判断波特率匹配表中所有合法的波特率是否均已匹配完毕,若已匹配完毕,则从步骤106进入步骤107;若未匹配完毕,则从步骤106进入步骤108。

若已匹配完毕:

步骤107,生成can总线错误信号,进行错误提示。

在一个具体的实施例中,若从第一优先级波特率匹配表中的250kbps波特率一直到第二优先级波特率匹配表中的5kbps波特率都未能成功连接到can总线,则可认为当前的can总线波特率设置不合法或者can总线物理连接错误,生成can总线错误信号。在一个实施例中,根据can总线错误信号生成can总线波特率设置不合法信息进行错误提示;在另一个实施例中,根据can总线错误信号生成can总线物理连接错误信息进行错误提示。例如,can总线物理连接错误信息可显示为“终端电阻连接错误”,进行错误提醒。

若未匹配完毕:

步骤108,选取波特率匹配表中未被选取的波特率为下一波特率。

在一个具体的实施例中,当波特率匹配表中的波特率尚未匹配完毕时,按照波特率匹配表的排列顺序选取下一波特率,并从步骤108进入步骤103,重新进行数据发送检测,直至中途匹配到正确的波特率退出循环,若一直未能匹配到正确的波特率则进入步骤107,跳出循环,结束检测。

本发明实施例一还提供了一种基于tc387芯片的can总线波特率自适应装置,can总线波特率自适应装置包括存储器、处理器以及存储在存储器并可在处理器上执行的can总线波特率自适应程序,can总线波特率自适应程序被处理器执行时实现如上述实施例一所述的基于tc387芯片的can总线波特率自适应方法的各个步骤。

本发明实施例一还提供了一种存储介质,存储介质存储有can总线波特率自适应程序,can总线波特率自适应程序被处理器执行时实现如上述实施例一所述的基于tc387芯片的can总线波特率自适应方法的各个步骤。

实施例二

本发明实施例二公开了一种基于tc387芯片的can总线波特率自适应方法。在本发明实施例二中,该can总线波特率自适应方法可以应用于汽车控制器、电子通信中,适用于tc387芯片,但并不仅仅限制于tc387芯片,也可适用于其他芯片。以下分别进行详细说明。

图2是示出了根据本说明书实施例二提供的一种基于tc387芯片的can总线波特率自适应方法。结合图2所示,本can总线波特率自适应方法包括以下步骤:

步骤201,配置can总线的波特率匹配表。

具体的,波特率匹配表包括第一优先级波特率匹配表、第二优先级波特率匹配表。

在一个具体的实施例中,将can总线上所有可能出现的波特率以常用度分为第一优先级波特率匹配表、第二优先级波特率匹配表,优先选取第一优先级波特率匹配表中的波特率。当在第一优先级波特率匹配表中未匹配到正确的波特率时,再启用第二优先级波特率匹配表。

其中,第一优先级波特率匹配表中的波特率可设置为250kbps、500kbps、1000kbps,并将第一优先级波特率匹配表中的波特率升序排列,对第一优先级波特率匹配表中的波特率按照升序排列后的顺序依次进行选取。

第二优先级波特率匹配表中的波特率可设置为800kbps、400kbps、200kbps、125kbps、100kbps、80kbps、62.5kbps、50kbps、40kbps、25kbps、20kbps、10kbps、5kbps,并将第二优先级波特率匹配表中的波特率降序排列,对第二优先级波特率匹配表中的波特率按照降序排列后的顺序依次进行选取。

需要注意并理解的是,第一优先级波特率匹配表、第二优先级波特率匹配表中波特率值并不限制于此,还可根据实际应用过程中的具体需求进行调整设置其他波特率值,且第一优先级波特率匹配表、第二优先级波特率匹配表中波特率的排列顺序也可按照实际应用过程中波特率的常用度进行重新排列。

步骤202,选取波特率匹配表中的波特率。

在一个具体的实施例中,按照步骤201中第一优先级波特率匹配表、第二优先级波特率匹配表的波特率排列顺序,依次选取波特率。即首先选取常用度较高的第一优先级波特率匹配表中的250kbps,再依次选取500kbps、1000kbps,当启用第二优先级波特率匹配表时,先优选800kbps,最后选取5kbps,按照波特率的常用度进行选取,尽可能地提高波特率匹配成功率,以节约匹配时间,提高自适应速度。

步骤203,以所选取的波特率向can总线发送数据。

在一个具体的实施例中,发送设备以步骤202中所选取的波特率向can总线发送数据,以检测在该波特率值下本发送设备与接收设备之间的连接状况。

步骤204,判断数据是否发送成功。

在一个具体的实施例中,检测本发送设备以步骤202中所选取的波特率所发送的数据是否能被接收设备接收,根据数据能否发送成功,判断当前所选取的波特率是否匹配。

当数据发送成功时,则说明匹配成功,从步骤204进入步骤205;当数据发送失败时,则说明匹配失败,从步骤204进入步骤206。

当数据发送成功时:

步骤205,产生发送成功中断,在发送成功中断中确定can总线上的波特率值。

在一个具体的实施例中,当数据发送成功时,则说明匹配到正确的波特率,tc387芯片的mcmcan触发发送成功中断,在发送成功中断的中断函数中监控到can总线上的波特率值。

当数据发送失败时:

步骤206,以相同的波特率继续向can总线发送数据。

在一个具体的实施例中,本发送设备以步骤202中所选取的波特率第一次发送数据不成功时,mcmcan不会立即停止发送,而是以相同的波特率继续发送。

步骤207,错误计数器的错误计数累加1。

在一个具体的实施例中,步骤206中以相同的波特率继续向can总线发送数据的同时,相应的,错误计数器产生错误计数,每次发送数据不成功时,累计加1,并存储当前的错误计数。

步骤208,当错误计数的值达到计错阈值时,产生总线错误busoff,禁止发送设备继续向can总线发送数据。

在一个具体的实施例中,当步骤207中错误计数器的错误计数值达到设定的计错阈值时,产生总线错误busoff,总线错误busoff的产生会禁止本发送设备继续向can总线发送数据。

步骤209,产生busoff中断。

在一个具体的实施例中,在产生总线错误busoff的同时,产生busoff中断,确定当前波特率不是正确的波特率,中断当前的检测。

步骤210,判断波特率匹配表中所有合法的波特率是否均已匹配完毕。

在一个具体的实施例中,当busoff中断产生之后,需进一步检测波特率匹配表中其他波特率的匹配度,于是,先要判断波特率匹配表中所有合法的波特率是否均已匹配完毕,若已匹配完毕,则从步骤210进入步骤211;若未匹配完毕,则从步骤210进入步骤212。

若已匹配完毕:

步骤211,生成can总线错误信号,进行错误提示。

在一个具体的实施例中,若从第一优先级波特率匹配表中的250kbps波特率一直到第二优先级波特率匹配表中的5kbps波特率都未能成功连接到can总线,则可认为当前的can总线波特率设置不合法或者can总线物理连接错误,生成can总线错误信号。在一个实施例中,根据can总线错误信号生成can总线波特率设置不合法信息进行错误提示;在另一个实施例中,根据can总线错误信号生成can总线物理连接错误信息进行错误提示。例如,can总线物理连接错误信息可显示为“终端电阻连接错误”,进行错误提醒。

若未匹配完毕:

步骤212,在busoff中断中清空can缓冲器中的数据。

在一个具体的实施例中,当波特率匹配表中的波特率尚未匹配完毕时,首先在busoff中断中清空can缓冲器中的数据,重置错误计数器的错误计数。

步骤213,选取波特率匹配表中未被选取的波特率,将所选取的波特率修改为下一波特率。

在一个具体的实施例中,按照波特率匹配表的排列顺序选取下一波特率,作为下一次发送数据的波特率。

步骤214,消除busoff标志位。

在一个具体的实施例中,重新进行数据发送检测之前,消除busoff标志位,解除本设备禁止向can总线发送数据的指令,允许本设备发送数据。之后,从步骤214进入步骤203,重新进行数据发送检测,直至中途匹配到正确的波特率退出循环,若一直未能匹配到正确的波特率则进入步骤211,跳出循环,结束检测。

以上是对本实施例二中的各个步骤进行了介绍,下面结合图2,对基于tc387芯片的can总线波特率自适应方法的完整步骤进行详述。

在本实施例二中,将发送设备和接收设备连接到can总线上。首先,分别检测发送设备以250kbps的波特率、500kbps的波特率、1000kbps的波特率向can总线上发送数据。若发送成功,则tc387芯片的mcmcan触发发送成功中断,即可在中断函数中监控到can总线上的波特率值,确定正确的波特率。若第一次发送不成功,mcmcan也不会立即停止发送,而是会以相同的波特率继续发送,同时错误计数器会产生错误计数,当错误计数器计数超过一定范围时会产生总线错误busoff,busoff的产生会禁止本发送设备继续向can总线发送数据,同时产生busoff中断,在busoff中断中清空can缓冲器中的数据,修改波特率为下一个波特率,同时消除busoff标志位,继续发送数据。以此反复循环,直至匹配到正确的波特率为止。

如果在250kbps、500kbps、1000kbps中都没有匹配到正确的波特率,则在1000kbps的busoff中断函数中启用第二优选级波特率匹配表,从800kbps的波特率开始,以上述检测发送设备向can总线上发送数据的测试方式对第二优选级波特率匹配表中的波特率依次进行测试,如果中途匹配到正确的波特率,则退出循环,如果一直到5kbps都未能成功连接到can总线,则认为总线波特率设置不合法或者can总线物理连接错误,如终端电阻连接错误。

实施例三

本发明实施例三公开了一种基于tc387芯片的can总线波特率自适应方法。在本发明实施例三中,该can总线波特率自适应方法可以应用于汽车控制器、电子通信中,适用于tc387芯片,但并不仅仅限制于tc387芯片,也可适用于其他芯片。以下分别进行详细说明。

本发明实施例三中的can总线波特率自适应方法具体包括以下步骤:

步骤301,配置can总线的波特率匹配表。

具体的,波特率匹配表包括第一优先级波特率匹配表、第二优先级波特率匹配表。

将can总线上所有可能出现的波特率以常用度分为第一优先级波特率匹配表、第二优先级波特率匹配表。其中,第一优先级波特率匹配表中的波特率可设置为250kbps、500kbps、1000kbps,并将第一优先级波特率匹配表中的波特率升序排列,对第一优先级波特率匹配表中的波特率按照升序排列后的顺序依次进行选取。第二优先级波特率匹配表中的波特率可设置为800kbps、400kbps、200kbps、125kbps、100kbps、80kbps、62.5kbps、50kbps、40kbps、25kbps、20kbps、10kbps、5kbps,并将第二优先级波特率匹配表中的波特率降序排列,对第二优先级波特率匹配表中的波特率按照降序排列后的顺序依次进行选取。

需要注意并理解的是,第一优先级波特率匹配表、第二优先级波特率匹配表中波特率值并不限制于此,还可根据实际应用过程中的具体需求进行调整设置其他波特率值,且第一优先级波特率匹配表、第二优先级波特率匹配表中波特率的排列顺序也可按照实际应用过程中波特率的常用度进行重新排列。

步骤302,优先选取第一优先级波特率匹配表中的波特率,以所选取的波特率向can总线发送数据。

按照步骤301中的选取规则,第一优先级波特率匹配表中的波特率升序排列,对第一优先级波特率匹配表中的波特率按照升序排列后的顺序依次进行选取,即首先选取常用度较高的第一优先级波特率匹配表中的250kbps,再依次选取500kbps、1000kbps,按照波特率的常用度进行选取,尽可能地提高波特率匹配成功率,以节约匹配时间,提高自适应速度。

发送设备以所选取的波特率向can总线发送数据,以检测在该波特率值下本发送设备与接收设备之间的连接状况。

步骤303,判断数据是否发送成功。

在一个具体的实施例中,检测本发送设备以步骤302中所选取的波特率所发送的数据是否能被接收设备接收,根据数据能否发送成功,判断当前所选取的波特率是否匹配。

当数据发送成功时,则说明匹配成功,从步骤303进入步骤304;当数据发送失败时,则说明匹配失败,从步骤303进入步骤305。

当数据发送成功时:

步骤304,产生发送成功中断,在发送成功中断中确定can总线上的波特率值。

在一个具体的实施例中,当数据发送成功时,则说明在第一优先级波特率匹配表中匹配到了正确的波特率,tc387芯片的mcmcan触发发送成功中断,在发送成功中断的中断函数中监控到can总线上的波特率值。

当数据发送失败时:

步骤305,以相同的波特率继续向can总线发送数据。

在一个具体的实施例中,本发送设备以步骤302中所选取的波特率第一次发送数据不成功时,mcmcan不会立即停止发送,而是以相同的波特率继续发送。

步骤306,错误计数器的错误计数累加1。

以步骤305中相同的波特率继续向can总线发送数据的同时,相应的,错误计数器产生错误计数,每次发送数据不成功时,累计加1,并存储当前的错误计数。

步骤307,当错误计数的值达到计错阈值时,产生总线错误busoff,禁止发送设备继续向can总线发送数据。

当步骤306中错误计数器的错误计数值达到设定的计错阈值时,产生总线错误busoff,总线错误busoff的产生会禁止本发送设备继续向can总线发送数据。

步骤308,产生busoff中断。

在产生总线错误busoff的同时,产生busoff中断,确定当前波特率不是正确的波特率,中断当前的检测。

步骤309,判断第一优先级波特率匹配表中所有合法的波特率是否均已匹配完毕。

当busoff中断产生之后,需进一步检测第一优先级波特率匹配表中其他波特率的匹配度,于是,先要判断第一优先级波特率匹配表中所有合法的波特率是否均已匹配完毕,若已匹配完毕,则从步骤309进入步骤313;若未匹配完毕,则从步骤309进入步骤310。

若未匹配完毕:

步骤310,在busoff中断中清空can缓冲器中的数据。

当第一优先级波特率匹配表中的波特率尚未匹配完毕时,首先在busoff中断中清空can缓冲器中的数据,重置错误计数器的错误计数。

步骤311,选取第一优先级波特率匹配表中未被选取的波特率,将所选取的波特率修改为下一波特率。

按照第一优先级波特率匹配表的排列顺序选取下一波特率,作为下一次发送数据的波特率。

步骤312,消除busoff标志位,向can总线发送数据。

重新进行数据发送检测之前,消除busoff标志位,解除本设备禁止向can总线发送数据的指令,允许本设备发送数据。之后,从步骤312进入步骤303,重新进行数据发送检测,直至中途匹配到正确的波特率退出循环,若一直未能匹配到正确的波特率则进入步骤313,检测第二优先级波特率匹配表中的波特率。

若已匹配完毕:

步骤313,启用第二优先级波特率匹配表。

当在第一优先级波特率匹配表中未匹配到正确的波特率时,再启用第二优先级波特率匹配表。

步骤314,选取第二优先级波特率匹配表中的波特率,以所选取的波特率向can总线发送数据。

其中,第二优先级波特率匹配表中的波特率降序排列,对第二优先级波特率匹配表中的波特率按照降序排列后的顺序依次进行选取。发送设备以所选取的第二优先级波特率匹配表中的波特率向can总线发送数据,以检测在该波特率值下本发送设备与接收设备之间的连接状况。

步骤315,判断数据是否发送成功。

检测本发送设备以步骤314中所选取的波特率所发送的数据是否能被接收设备接收,根据数据能否发送成功,判断当前所选取的波特率是否匹配。

当数据发送成功时,则说明匹配成功,从步骤315进入步骤316;当数据发送失败时,则说明匹配失败,从步骤315进入步骤317。

当数据发送成功时:

步骤316,产生发送成功中断,在发送成功中断中确定can总线上的波特率值。

当数据发送成功时,则说明在第二优先级波特率匹配表中匹配到了正确的波特率,tc387芯片的mcmcan触发发送成功中断,在发送成功中断的中断函数中监控到can总线上的波特率值。

当数据发送失败时:

步骤317,以相同的波特率继续向can总线发送数据。

本发送设备以步骤314中所选取的波特率第一次发送数据不成功时,mcmcan不会立即停止发送,而是以相同的波特率继续发送。

步骤318,错误计数器的错误计数累加1。

以步骤317中相同的波特率继续向can总线发送数据的同时,相应的,错误计数器产生错误计数,每次发送数据不成功时,累计加1,并存储当前的错误计数。

步骤319,当错误计数的值达到计错阈值时,产生总线错误busoff,禁止发送设备继续向can总线发送数据。

当步骤318中错误计数器的错误计数值达到设定的计错阈值时,产生总线错误busoff,总线错误busoff的产生会禁止本发送设备继续向can总线发送数据。

步骤320,产生busoff中断。

在产生总线错误busoff的同时,产生busoff中断,确定当前波特率不是正确的波特率,中断当前的检测。

步骤321,判断第二优先级波特率匹配表中所有合法的波特率是否均已匹配完毕。

当busoff中断产生之后,需进一步检测第二优先级波特率匹配表中其他波特率的匹配度,于是,先要判断第二优先级波特率匹配表中所有合法的波特率是否均已匹配完毕,若已匹配完毕,则从步骤321进入步骤322;若未匹配完毕,则从步骤321进入步骤323。

若已匹配完毕:

步骤322,生成can总线错误信号,进行错误提示。

若从第一优先级波特率匹配表中的250kbps波特率一直到第二优先级波特率匹配表中的5kbps波特率都未能成功连接到can总线,则可认为当前的can总线波特率设置不合法或者can总线物理连接错误,生成can总线错误信号。在一个实施例中,根据can总线错误信号生成can总线波特率设置不合法信息进行错误提示;在另一个实施例中,根据can总线错误信号生成can总线物理连接错误信息进行错误提示。例如,can总线物理连接错误信息可显示为“终端电阻连接错误”,进行错误提醒。

若未匹配完毕:

步骤323,在busoff中断中清空can缓冲器中的数据。

当第二优先级波特率匹配表中的波特率尚未匹配完毕时,首先在busoff中断中清空can缓冲器中的数据,重置错误计数器的错误计数。

步骤324,按照降序排列后的顺序依次选取第二优先级波特率匹配表中下一个未被选取的波特率,将所选取的波特率修改为下一波特率。

步骤325,消除busoff标志位,向can总线发送数据。

重新进行数据发送检测之前,消除busoff标志位,解除本设备禁止向can总线发送数据的指令,允许本设备发送数据。之后,从步骤325进入步骤315,重新进行数据发送检测,直至中途匹配到正确的波特率退出循环,若一直未能匹配到正确的波特率则进入步骤322,跳出循环,结束检测。

本发明实施例三还提供了一种基于tc387芯片的can总线波特率自适应装置,can总线波特率自适应装置包括存储器、处理器以及存储在存储器并可在处理器上执行的can总线波特率自适应程序,can总线波特率自适应程序被处理器执行时实现如上述实施例三所述的基于tc387芯片的can总线波特率自适应方法的各个步骤。

本发明实施例三还提供了一种存储介质,存储介质存储有can总线波特率自适应程序,can总线波特率自适应程序被处理器执行时实现如上述实施例三所述的基于tc387芯片的can总线波特率自适应方法的各个步骤。

综上所述,本说明书公开一种基于tc387芯片的can总线波特率自适应方法、装置及存储介质,采用软件自动匹配合法波特率的方式,快速、高效地自适应总线波特率,解决了现有技术中电磁干扰对于电平跳变采样的影响,真正实现当can总线波特率未知时自适应波特率的目的,使得发送设备自适应接收设备的波特率,无论接收设备使用何种波特率,发送设备均能自动适应,实现发送设备与不同波特率的接收设备之间的连接,更简洁高效,且不存在噪声干扰等影响因素,自适应速度更快,成功率更高。

本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1