一种CAN控制器的波特率校准方法及校准电路与流程

文档序号:29618760发布日期:2022-04-13 12:38阅读:169来源:国知局
一种CAN控制器的波特率校准方法及校准电路与流程
一种can控制器的波特率校准方法及校准电路
技术领域
1.本发明涉及智能机器人领域,具体涉及一种can控制器的波特率校准方法及校准电路。


背景技术:

2.can 总线由于采用差分信号进行数据传输,有着极强的抗干扰能力,同时,由于它采用非破坏性的总线仲裁机制,使得即便同一时刻不同节点同时往 can 总线发送数据,也不会出现数据混乱和通信出错的情况,由于 can 总线的各种优点,can 总线控制系统广泛应用于各类自动化设备中。
3.在can总线网络中,各个节点的设备或传感器往往是多种多样的,若想要使can总线能正常稳定的通信的前提就是要保证各个节点之间的波特率的误差保持在can总线的接受范围。因此,can总线节点之间的波特率不能有过大的频差;而节点之间的波特率的精度取决于时钟源的精度,不同节点的时钟源精度不尽相同,如果时钟频差相差过大就会使can总线产生错误,目前很多的控制器可选外接晶振时钟或片内 rc振荡时钟,片内 rc振荡时钟省去了外部的晶振等元件,成本降低、电路板的体积也可以缩小,这对成本及体积敏感的应用很具优势。但选用片内 rc 振荡时,频率会随着外部因素温度等原因造成
±
3%左右的误差,频率的稳定性也比外接晶振要差,按理论计算值设置波特率参数,无法保证can可靠的通信。而由can控制器简单的做法是将can节点都设置成相同的波特率,但这样做灵活性不高,如果rc的误差过大,则可能使can节点无法正常工作。


技术实现要素:

4.为解决上述问题,本发明提供了一种can控制器的波特率校准方法及校准电路,本技术通过波特率的变化来解决时钟精度偏差的问题,从而对波特率进行校准,使can总线系统的灵活性大大增加。本发明的具体技术方案如下:一种can控制器的波特率校准方法,该方法包括以下步骤:s1:启动校准程序,对can控制器的波特率校准电路的波特率进行配置,并在配置完成后,使波特率测试模块发送设定长度的数据帧给被测校准模块;s2:对被测校准模块接收的数据帧进行边沿检测,获取和统计数据帧的计数值,然后对获取和统计数据帧的计数值进行筛选,筛选出用于进行计算的计算计数值;s3:将选取的计算计数值与设定的计数值进行运算,来获取被测校准模块的当前时钟信号,然后根据被测校准模块的当前时钟信号和被测校准模块配置后的波特率来获取分频系数;s4:将分频系数保存到被测校准模块中,然后使被测校准模块与波特率测试模块之间进行数据发送或/和接收来确定can控制器的波特率是否校准成功。
5.进一步地,步骤s1中,启动校准程序,对can控制器的波特率校准电路进行配置,包括以下步骤:使波特率测试模块处于正常工作模式和使被测校准模块处于校准模式,且将波特率测试模块和被测试校准模块的波特率配置为相同波特率;其中,所述校准模式为被测校
准模块只执行接收数据帧的工作。
6.进一步地,步骤s2中,对被测校准模块接收的数据帧进行边沿检测,包括以下步骤:对被测校准模块接收的数据帧的上升沿进行检测,检测时,从上升沿开始到下降沿开始完成一次检测,并将检测到的高电平的测量值做为计数值;重复对数据帧的上升沿进行检测,至到检测到数据帧结束。
7.进一步地,步骤s2中,对获取和统计数据帧的计数值进行筛选,筛选出用于进行计算的计算计数值,包括以下步骤:统计数据帧的所有计数值的比特,将比特为单比特且高电平的测量值为众数的计数值设为计算计数值。
8.进一步地,步骤s3中,将选取的计算计数值与设定的计数值进行运算,来获取被测校准模块的当前时钟信号,包括以下步骤:选取计算计数值后,生成测量完成标志位,然后将测量完成标志位拉高;将计算计数值作为被除数,波特率测试模块配置后的波特率的高电平的单比特的测量值作为除数,进行除法运算;将所述被除数和除数的商与波特率测试模块的时钟信号进行相乘,得到被测校准模块的当前时钟信号。
9.进一步地,所述除法运算通过整数除法器进行运算,包括以下步骤:将被除数扩展为16位的数据,其中,16位的数据的高8位为0,低8位为被除数的值,将除数转换为8位的数据,将被除数的高8位数据与除数的8位数据进行比较运算;若被除数的高8位数据大于等于除数的8位数据,则将被除数的高8位与除数的8位数据的差值作为被除数的高8位数据,将被除数的低8位数据的最低位加1,得到比较运算后的被除数的16位数据,然后将比较运算后的被除数的16位数据左移一位后,将被除数的高8位数据继续与除数的8位数据进行比较运算;若被除数的高8位数据小于除数的8位数据,则将被除数的16位数据作为比较运算后的被除数的16位数据,然后将比较运算后的被除数的16位数据左移一位后,将被除数的高8位数据继续与除数的8位数据进行比较运算;将被除数的16位数据左移8次进行比较运算后,得到的比较运算后的被除数的16位数据的高8位为被除数和除数的余数,比较运算后的被除数的16位数据的低8位为被除数和除数的商。
10.进一步地,根据被测校准模块的当前时钟信号和被测校准模块配置后的波特率来获取分频系数,包括以下步骤:被测校准模块将获取的当前时钟信号进行保存,然后产生当前时钟信号计算完成中断标志位,然后通过公式得到分频系数:baud = hclk/[ 12*(2*brp+1)];其中,baud 为被测校准模块配置后的波特率,hclk为被测校准模块的当前时钟信号,brp为分频系数。
[0011]
进一步地,使被测校准模块与波特率测试模块之间进行数据发送或/和接收来确定can控制器的波特率是否校准成功,包括以下步骤:使波特率测试模块和被测校准模块均处于正常工作模式,使被测校准模块与波特率测试模块之间进行数据发送或/和接收,然后判断被测校准模块或/和波特率测试模块的缓冲器接收的数据是否正确,若数据接收正确,则can控制器的波特率校准成功。
[0012]
进一步地,若被测校准模块或/和波特率测试模块的缓冲器接收的数据不正确,则重复步骤s1至s4,直至 can控制器的波特率校准成功。
[0013]
一种can控制器的波特率校准电路,所述can控制器的波特率校准电路执行上述的can控制器的波特率校准方法,所述波特率校准电路包括波特率测试模块和被测校准模块,所述波特率测试模块包括缓冲器,所述被测校准模块包括边沿检测单元、电平统计单元、除
法器单元和缓冲器;所述波特率测试模块通过缓冲器与被测校准模块进行数据的发送和接收;所述边沿检测单元用于对缓冲器接收的数据帧的上升沿进行检测,并输出触发信号给电平统计单元;所述电平统计单元用于接收边沿检测单元发送的触发信号来对缓冲器接收的数据帧的高电平进行测量,获取和统计高电平的测量值和测量值的比特,并将筛选出的计算计数值发送给除法器单元;所述除法器单元用于将接收的计算计数值与设定的计数值进行运算来获取被测校准模块的当前时钟信号,然后将被测校准模块的当前时钟信号发送给被测校准模块的缓冲器;所述被测校准模块的缓冲器用于将接收的被测校准模块的当前时钟信号与被测校准模块配置后的波特率进行计算来获取分频系数。
[0014]
与现有的技术相比,本技术的技术方案提出了can控制器的波特率校准电路和方法,该电路校准过程中使用迭代和数据统计法对波特率进行测试值计算和使用硬件除法器进行波特率从分频系数的计算,提高can总线的灵活性,弥补时钟偏差带来的不稳定因素,提高波特率调节精度,计算过程自动完成不需要软件干预,计算速度快。
附图说明
[0015]
图1为本发明的一种实施例所述的can控制器的波特率校准方法流程图;图2为本发明的一种实施例所述的can控制器的波特率校准电路的结构示意图。
具体实施方式
[0016]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细描述。应当理解,下面所描述的具体实施例仅用于解释本发明,并不用于限定本发明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本技术。基于本技术提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
[0017]
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、操作或部件。在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
[0018]
can控制器是can局域网控制器的简称,can 是controller area network 的缩写(以下称为can),是iso国际标准化的串行通信协议。can控制器工作于多种方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且can协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得can总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。单片机或计算机在串口通信时的速率。指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240bd,比特率为10位*240个/秒=2400bps。又比如每秒钟传送240个二进制位,这时的波特率为240bd,比特率也是240bps。(但是一般调制速率大于波特率,比如曼彻斯特编码)。波特率,可以通俗的理解为一个设备在一秒钟内发送(或接
收)了多少码元的数据。它是对符号传输速率的一种度量,1波特即指每秒传输1个码元符号(通过不同的调制方式,可以在一个码元符号上负载多个bit位信息),1比特每秒是指每秒传输1比特(bit)。单位"波特"本身就已经是代表每秒的调制数,以"波特每秒"(baud per second)为单位是一种常见的错误。
[0019]
如图1所示,一种can控制器的波特率校准方法,通过直接测量法完成can控制器的波特率校准电路的校准,该电路中以稳定的can节点中的主控制器为波特率测试模块,从控制器为被测校准模块。校准时,波特率测试模块发出一特定的数据校准包,被测校准模块接收该数据包,并通过边沿检测单元对接收的信号边沿进行检测及统计,并通过计数器测量出典型的1bit位宽,根据测量出的位宽与标准位宽进行运算即可计算出需要调整的分频系数,并将调整后的分频系数进行数据接收发送验证,即可完成被测校准模块can总线上的波特率校准,该方法包括以下步骤:步骤s1:can控制器的波特率校准电路启动校准程序,对can控制器的波特率校准电路的波特率进行配置,并在配置完成后,使波特率测试模块发送设定长度的数据帧给被测校准模块。启动校准程序,对can控制器的波特率校准电路进行配置,包括以下步骤:使波特率测试模块处于正常工作模式和使被测校准模块处于校准模式,且将波特率测试模块和被测试校准模块的波特率配置为相同波特率;其中,所述校准模式为被测校准模块只执行接收数据帧的工作,不做采样、总线监听等其他功能。然后波特率测试模块发送一段标准的数据帧给被测校准模块。
[0020]
步骤s2:对被测校准模块接收的数据帧进行边沿检测,获取和统计数据帧的计数值,然后对获取和统计数据帧的计数值进行筛选,筛选出用于进行计算的计算计数值。步骤s2中,对被测校准模块接收的数据帧进行边沿检测,包括以下步骤:对被测校准模块接收的数据帧的上升沿进行检测,检测时,从上升沿开始到下降沿开始完成一次检测,并将检测到的高电平的测量值做为计数值;重复对数据帧的上升沿进行检测,至到检测到数据帧结束。对获取和统计数据帧的计数值进行筛选,筛选出用于进行计算的计算计数值,包括以下步骤:统计数据帧的所有计数值的比特,将比特为单比特且高电平的测量值为众数的计数值设为计算计数值。所述比特为bit。在进行筛选计算计数值时,先选取1bit宽度的计数值,然后从1bit宽度的计数值中选择计数值的众数作为计算计数值,若计数值的众数有多个,可以选择计数值的众数中最小值。
[0021]
步骤s3:将选取的计算计数值与设定的计数值进行运算,来获取被测校准模块的当前时钟信号,然后根据被测校准模块的当前时钟信号和被测校准模块配置后的波特率来获取分频系数。步骤s3中,将选取的计算计数值与设定的计数值进行运算,来获取被测校准模块的当前时钟信号,包括以下步骤:选取计算计数值后,生成测量完成标志位,然后将测量完成标志位拉高;将计算计数值作为被除数,波特率测试模块配置后的波特率的高电平的单比特的测量值作为除数,进行除法运算;将所述被除数和除数的商与波特率测试模块的时钟信号进行相乘,得到被测校准模块的当前时钟信号。即采用被测校准模块检测到的1bit宽度的波特率高电平的测量值与波特率测试模块配置后的1bit宽度的波特率高电平的测量值求商。比如,波特率测试单元的时钟信号aclk 是2mhz,配置后的1bit宽度的波特率为1m 波特率,1m 波特率时高电平的测量值是1000,而被测校准模块测量出的1bit宽度的波特率高电平的测量值为800,那么就表明被测校准模块的当前时钟信号hclk慢了,被测
校准模块的当前时钟信号应为 hclk= (800/1000) *aclk =1.6mhz。
[0022]
作为其中一种实施例,所述除法运算通过整数除法器进行运算,包括以下步骤:将被除数扩展为16位的数据,其中,16位的数据的高8位为0,低8位为被除数的值,将除数转换为8位的数据,将被除数的高8位数据与除数的8位数据进行比较运算;若被除数的高8位数据大于等于除数的8位数据,则将被除数的高8位与除数的8位数据的差值作为被除数的高8位数据,将被除数的低8位数据的最低位加1,得到比较运算后的被除数的16位数据,然后将比较运算后的被除数的16位数据左移一位后,将被除数的高8位数据继续与除数的8位数据进行比较运算;若被除数的高8位数据小于除数的8位数据,则将被除数的16位数据作为比较运算后的被除数的16位数据,然后将比较运算后的被除数的16位数据左移一位后,将被除数的高8位数据继续与除数的8位数据进行比较运算;将被除数的16位数据左移8次进行比较运算后,得到的比较运算后的被除数的16位数据的高8位为被除数和除数的余数,比较运算后的被除数的16位数据的低8位为被除数和除数的商。整数除法器为软件通过二进制数据进行除法技术的方式,例如,计算计算值为97,也就是被除数,扩展为 16位数据为00000000 01100001,除数为28,转换为二进制的数据为00011100,然后将被除数与除数进行比较运算,比较被除数的高8位数据和除数的8位数据,当被除数的高8位数据小于除数的8位数据时,将被除数的16位数据作为比较运算后的被除数的16位数据,即00000000 01100001,然后比较运算后的被除数左移一位,得到00000000 11000010,继续比较被除数的高8位数据和除数的8位数据。经多次左移和比较运算,在被除数进行7次左移后,被除数为00110000 10000000,这时,被除数的高8位数据大于等于除数的8位数据,将被除数的高8位与除数的8位数据的差值作为被除数的高8位数据00110000,将被除数的低8位数据10000000的最低位加1,得到比较运算后的被除数的16位数据00010100 10000001,然后将比较运算后的被除数的16位数据左移一位后,被除数00101001 00000001与除数00011100继续进行运算。这次左移为第8次左移,则在进行这次比较运算后,得到计算结果,这时的被除数的高8位大于除数的8位数据,根据上述方法得到比较运算后的被除数的16为数据00001101 00000011,其中16位数据的低8位除法运算的商,高8位为除法运算的余数。上述为本技术采用的其中一个方法,还可以根据实际情况,通过fpga来设置除法器。
[0023]
作为其中一种实施例,根据被测校准模块的当前时钟信号和被测校准模块配置后的波特率来获取分频系数,包括以下步骤:被测校准模块将获取的当前时钟信号进行保存,然后产生当前时钟信号计算完成中断标志位,然后通过公式得到分频系数:baud = hclk/[ 12*(2*brp+1)];其中,baud 为被测校准模块配置后的波特率,hclk为被测校准模块的当前时钟信号,brp为分频系数。
[0024]
步骤s4:将分频系数保存到被测校准模块中,然后使被测校准模块与波特率测试模块之间进行数据发送或/和接收来确定can控制器的波特率是否校准成功。步骤s4中,使被测校准模块与波特率测试模块之间进行数据发送或/和接收来确定can控制器的波特率是否校准成功,包括以下步骤:使波特率测试模块和被测校准模块均处于正常工作模式,使被测校准模块与波特率测试模块之间进行数据发送或/和接收,然后判断被测校准模块或/和波特率测试模块的缓冲器接收的数据是否正确,若数据接收正确,则can控制器的波特率校准成功。若被测校准模块或/和波特率测试模块的缓冲器接收的数据不正确,则重复步骤s1至s4,直至 can控制器的波特率校准成功。
[0025]
如图2所示,一种can控制器的波特率校准电路,所述can控制器的波特率校准电路执行上述的can控制器的波特率校准方法,所述波特率校准电路包括波特率测试模块和被测校准模块,所述波特率测试模块包括缓冲器,所述被测校准模块包括边沿检测单元、电平统计单元、除法器单元和缓冲器。所述波特率测试模块和被测校准模块为纯芯片组成的电路功能模块,所述边沿检测单元、电平统计单元、除法器单元和缓冲器是芯片中具有的各个功能单元。所述除法器为硬件除法器。缓冲器(buffer)为缓冲寄存器,多用在总线上,提高驱动能力、隔离前后级,缓冲器多半有三态输出功能。当负载不具有非选通输出为高阻特性时,将起到隔离作用;当总线的驱动能力不够驱动负载时,将起到驱动作用。由于缓冲器接在数据总线上,故必须具有三态输出功能。工作时,所述波特率测试模块处于正常工作模式,然后通过缓冲器发送一段标准数据帧给被测校准模块的缓冲器,被测校准模块通过缓冲器接收数据帧后,通过所述边沿检测单元对缓冲器接收的数据帧的上升沿进行检测,从上升沿开始到下降开始完成一次检测,并输出相应触发信号给电平统计单元。所述电平统计单元接收边沿检测单元发送的触发信号后,对缓冲器接收的数据帧的高电平进行测量,获取和统计高电平的测量值和测量值的比特,并根据设定的条件将筛选出的计算计数值发送给除法器单元。所述除法器单元将接收的计算计数值与设定的计数值进行除法运算,来获取被测校准模块的当前时钟信号,然后将被测校准模块的当前时钟信号发送给被测校准模块的缓冲器。所述被测校准模块的缓冲器用于将接收的被测校准模块的当前时钟信号与被测校准模块配置后的波特率进行计算来获取分频系数,然后被测校准模块将分频系数保存在自身的缓冲器中。所述波特率测试模块与被测校准模块处于正常工作模块,这时被测校准模块会执行采样、总线监听等功能,然后所述波特率测试模块通过缓冲器与被测校准模块进行数据的发送和接收,并根据两者的缓冲器接收和发送的数据是否正确来判断波特率是否校准成功。
[0026]
与现有的技术相比,本技术的技术方案提出了can控制器的波特率校准电路和方法,该电路校准过程中使用迭代和数据统计法对波特率进行测试值计算和使用硬件除法器进行波特率从分频系数的计算,提高can总线的灵活性,弥补时钟偏差带来的不稳定因素,提高波特率调节精度,计算过程自动完成不需要软件干预,计算速度快。
[0027]
显然,上述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,各个实施例之间的技术方案可以相互结合。此外,如果实施例中出现“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等术语,其指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位或以特定的方位构造和操作,因此不能理解为对本发明的限制。如果实施例中出现“第一”、“第二”、“第三”等术语,是为了便于相关特征的区分,不能理解为指示或暗示其相对重要性、次序的先后或者技术特征的数量。
[0028]
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。这些程序可以存储于计算机可读取存储介质(比如rom、ram、磁碟或者光盘等各种可以存储程序代码的介质)中。该程序在执行时,执行包括上述各方法实施例的步骤。
[0029]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依
然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1