串口波特率自适应方法、芯片及系统与流程

文档序号:32442048发布日期:2022-12-06 22:21阅读:476来源:国知局
串口波特率自适应方法、芯片及系统与流程

1.本发明涉及通信技术领域,具体的说,涉及了一种串口波特率自适应方法、芯片及系统。


背景技术:

2.串口通信(serial communication)是指主设备与外部设备间通过数据信号线、地线、控制线等,按位进行传输数据的通讯方式,这种通讯方式基于主设备与外部设备之间的波特率进行串口通讯,使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。
3.串口通信参数包括波特率、数据位、停止位和奇偶校验等,其中,波特率表示单位时间内传送的码元符号的个数,它是对符号传输速率的一种度量,波特率的单位是位/秒,记为bps。
4.为保证主设备与外部设备之间获取同样的数据,主设备和外部设备之间需要在同一波特率下进行数据通讯;但是,串口通讯的波特率通常受到主设备频率的影响,由于现实环境的差异,容易造成主设备和外部设备之间的波特率不一致,从而影响串口的传输。
5.为了实现主设备与外部设备之间稳定的串口数据传输,在通讯之前通常采用以下方式校正主设备与外部设备之间的波特率:由主设备向外部设备发送一定长度的预设信号,外部设备检测该预设信号,并依据外部设备检测的时钟信号数量来调整优化串口的波特率。但是,这种校正方式存在的问题为:主设备和外部设备需要同时进行调整,且每次都需要对外部设备进行调试才能使用。
6.为了解决以上存在的问题,人们一直在寻求一种理想的技术解决方案。


技术实现要素:

7.本发明的目的是针对现有技术的不足,从而提供一种串口波特率自适应方法、芯片及系统。
8.为了实现上述目的,本发明所采用的技术方案是:本发明第一方面提供一种串口波特率自适应方法,其包括以下步骤:步骤1,实时监测目标芯片的校对接口是否接收到来自主设备的开始校准指令,若是,则开始记录时钟数;其中,所述校对接口为目标芯片的物理接口;步骤2,实时监测目标芯片的校对接口是否接收到来自主设备的停止校准指令,若是,则停止记录时钟数,将时钟数记录值作为校准参数ⅰ,并提取出所述停止校准指令中的校准参数ⅱ;其中,所述校准参数ⅱ为时间参数;步骤3,根据所述校准参数ⅱ和所述校准参数ⅰ计算出新分频系数,基于所述新分频系数对目标芯片中存储分频系数的寄存器值进行更新;
步骤4,在串口通信时,通过寄存器中存储的新分频系数和外设总线频率计算出校准后的串口波特率,并基于校准后的串口波特率与其他设备进行串口通信。
9.本发明第二方面提供一种波特率自适应芯片,其特征在于:包括校准参数获取单元、调整值生成单元及波特率配置单元,其中,所述校准参数获取单元,用于实时监测目标芯片的校对接口是否接收到来自主设备的开始校准指令,若是,则开始记录时钟数;还用于实时监测目标芯片的校对接口是否接收到来自主设备的停止校准指令,若是,则停止记录时钟数,将时钟数记录值作为校准参数ⅰ,并提取出所述停止校准指令中的校准参数ⅱ;其中,所述校对接口为目标芯片的物理接口,所述校准参数ⅱ为时间参数;所述调整值生成单元,用于根据所述校准参数ⅱ和所述校准参数ⅰ计算出新分频系数,基于所述新分频系数对目标芯片中存储分频系数的寄存器值进行更新;所述波特率配置单元,用于通过寄存器中存储的新分频系数和外设总线频率计算出校准后的串口波特率,并基于校准后的串口波特率与其他设备进行串口通信。
10.本发明第三方面提供一种高精度串口波特率自适应系统,其包括主设备和目标芯片,所述目标芯片为上述的波特率自适应芯片;所述主设备与所述目标芯片之间通过校对接口和串口通信连接,在串口波特率调整时,执行以下操作:所述主设备通过所述校对接口对应的通信通道,向所述目标芯片发送开始校准指令;在延时预设时间后,主设备通过校对接口对应的通信通道,向所述目标芯片发送停止校准指令,使得所述目标芯片的串口波特率与所述主设备的串口波特率相匹配。
11.本发明相对现有技术具有突出的实质性特点和显著的进步,具体的说:1)本发明复用目标芯片的物理接口为校对接口,通过校对接口对应的通信通道及基于目标芯片的扩展指令实现开始校准指令及停止校准指令的传输,实现传递校准参数ⅰ和校准参数ⅱ的隐蔽传输,实用性强;目标芯片与主设备之间只需交互校准指令及停止校准指令,无需目标芯片和主设备同时调整,也无需对目标芯片进行调试,即可达到目标芯片的串口波特率自动调整的效果;2)本发明通过目标芯片内置cos及内部指令实现目标芯片的串口波特率自适应,无需在目标芯片上安装过于复杂的波特率调整程序文件,即可使得目标芯片的串口波特率自动与主设备的串口波特率匹配,计算量小,效率高;3)本发明通过目标芯片的校对接口来接收开始校准指令及停止校准指令,校对接口可以复用sd接口、usb接口、spi接口或者iic接口;即使某个接口暂时无法使用,也不影响目标芯片的串口波特率自适应;这些校对接口对应的通信通道的数据传输率高,能够有效缩短开始校准指令及停止校准指令的传递时间,降低校准指令传递过程对波特率校准精准度的影响;4)在校正主设备与目标芯片之间的串口波特率时,主设备只需一个逻辑即可实现目标芯片的校验,不需要修改程序。
附图说明
12.图1是本发明的串口波特率自适应方法的时序图;图2是本发明的串口波特率自适应方法的流程图;图3是本发明的高精度串口波特率自适应系统的结构示意图一;图4是本发明的高精度串口波特率自适应系统的结构示意图二;图5是本发明的高精度串口波特率自适应系统的结构示意图三。
具体实施方式
13.下面通过具体实施方式,对本发明的技术方案做进一步的详细描述。
14.串口通信输出波特率scibd:目标芯片串口输出引脚tx的通信波特率;主频mclk:指目标芯片主时钟频率;外设总线频率fbf(peripheral bus frequency):指目标芯片外设总线频率,一般是低速总线,通过主时钟频率分频得到;分频系数fdf(frequency division factor):指根据外设总线频率分频计算串口波特率的系数,包括整数部分和浮点部分;分频系数fdf的整数部分:记做:fdfi;分频系数fdf的浮点部分:记做:fdff;分频系数浮点寄存器fdffr:浮点部分在寄存器按64进制存储,取值范围1~63;分频系数整型寄存器fdfir:整数部分在寄存器直接存储,取值范围1~65535;开始校准指令:即开始时钟计数指令,是一条主设备mcu发送给目标芯片的apdu指令,用于通知目标芯片开始时钟计数;停止校准指令:即结束时钟计数指令,是一条主设备mcu发送给目标芯片的apdu指令,用于通知目标芯片停止时钟计数。
15.实施例1附图1示出了一种串口波特率自适应方法的时序图,所述串口波特率自适应方法包括以下步骤:步骤1,实时监测目标芯片的校对接口是否接收到来自主设备的开始校准指令,若是,则开始记录时钟数;其中,所述校对接口为目标芯片的物理接口;步骤2,实时监测目标芯片的校对接口是否接收到来自主设备的停止校准指令,若是,则停止记录时钟数,将时钟数记录值作为校准参数ⅰ,并提取出所述停止校准指令中的校准参数ⅱ;其中,所述停止校准指令包括校准参数ⅱ,所述校准参数ⅱ为时间参数,单位是秒;步骤3,根据所述校准参数ⅱ和所述校准参数ⅰ计算出新分频系数,基于所述新分频系数对目标芯片中存储分频系数的寄存器值进行更新;步骤4,在串口通信之前,通过寄存器中存储的新分频系数和外设总线频率计算出校准后的串口波特率,并在串口通信时(在目标芯片上下电后),基于校准后的串口波特率与其他设备进行串口通信。
16.需要说明的是,由于主设备有精确的时钟,而目标芯片没有,目标芯片的基准时钟可能会出现漂移、不准确的情况,但用户无法得知某些目标芯片(如安全芯片)的基准时钟偏移量,导致目标芯片的串口波特率校准困难;若基于非精准的内部时间进行校准,则难以保证精度;因此,本实施例中的校准参数ⅱ由主设备来指定和发送,从而保证精度。
17.需要说明的是,在串口波特率调整之前,所述目标芯片与所述主设备预先约定所述开始校准指令和所述停止校准指令的格式及操作码,所述开始校准指令对应的操作码为指定字符组成的操作码ⅰ,所述停止校准指令对应的操作码为指定字符组成的操作码ⅱ,所述操作码ⅱ包括校准参数ⅱ,所述校准参数ⅱ可以由主设备根据具体情况进行调整;在目标芯片的校对接口接收到来自主设备的数据时,目标芯片根据该数据的格式及内容判断该数据是否为开始校准指令或者停止校准指令:在该数据的格式为预先约定的格式、且该数据的内容包含操作码ⅰ时,判定目标芯片接收到开始校准指令;在该数据的格式为预先约定的格式、且该数据的内容包含操作码ⅱ时,判定目标芯片接收到停止校准指令。
18.在一种具体实施方式中,所述目标芯片与所述主设备预先约定所述操作码ⅱ的第m位至第m+n位表示校准参数ⅱ;相应地,在判定目标芯片接收到停止校准指令后,解析出所述停止校准指令的操作码ⅱ的第m位至第m+n位,以获取校准参数ⅱ;其中,m、n为大于等于1的自然数。
19.具体的,所述目标芯片可以为内置标准的cos(片上系统)的安全芯片或者其他芯片,这些芯片具备串口以及sd、usb、spi和iic接口等多个物理通讯接口中的多个或者一个。
20.进一步的,所述步骤3中,根据所述校准参数ⅱ和所述校准参数ⅰ计算出新分频系数,基于所述新分频系数对目标芯片中存储分频系数的寄存器值进行更新时,执行:步骤301,根据所述校准参数ⅰ和所述校准参数ⅱ的比值计算出目标芯片的实时主频,根据目标芯片的实时主频得到目标芯片的新分频系数;其中,所述校准参数ⅰ为时钟数记录值,所述校准参数ⅱ为时间参数;步骤302,提取出所述新分频系数的整数部分和浮点部分,并将寄存器值fdfir更新为所述新分频系数的整数部分,将寄存器值fdffr更新为所述新分频系数的浮点部分,作为校正后的串口波特率。
21.在一种具体实施方式中,目标芯片的串口(输出)波特率由外设总线频率分频得到;新分频系数=(目标芯片的实时主频mclk/n)/ (16
×
设定串口波特率scibd),目标芯片的实时主频=校准参数ⅰ/校准参数ⅱ;串口波特率scibd=外设总线频率fbf/(16
×
分频系数fdf),外设总线频率fbf=主频mclk/n,n为大于等于2的自然数;分频系数fdf= fdfi+ fdff,寄存器值fdfir=fdfi= abs(外设总线频率fbf / (16
×
串口波特率scibd)),寄存器值fdffr= abs(fdff
×
64+0.5),其中,函数abs(x)表示x的绝对值;通常设置到目标芯片寄存器的值有两个:寄存器值fdfir和寄存器值fdffr,寄存器值fdfir对应分频系数整型寄存器,分频系数整型寄存器存储的是分频系数fdf的整数部分,寄存器值fdffr对应分频系数浮点寄存器,分频系数浮点寄存器存储的是分频系数fdf的浮点部分;本实施例以设定串口波特率scibd=115200hz,固定主频mclk=200m,n=2为例,对串口波特率自适应方法进行说明:
分频系数fdf=外设总线频率fbf/(16
×
设定串口波特率scibd)=(主频mclk/n)/(16
×
设定串口波特率scibd)=(200m/2)/(16
×
115200)=54.25347,寄存器值fdfir为54(0x36),寄存器值fdffr为abs(0.25347*64+0.5)=17= 0x11;假设计算出的实时主频mclk=201m,则新分频系数fdf=(实时主频mclk/n) / (16
×
设定串口波特率scibd)= 100500000/(16
×
115200)=54.52474;基于新分频系数fdf 对寄存器值fdfir和寄存器值fdffr进行更新及校正;那么校准后的串口波特率=外设总线频率fbf/(16
×
新分频系数fdf)=100000000/(16
×
54.52474)=114626.86;需要说明的是,由于目标芯片是以主设备传递的校准参数ⅰ和校准参数ⅱ、以及主设备与目标芯片预先配置的设定串口波特率等为基准,进行串口波特率自调整的,因此,目标芯片校正后的串口波特率与主设备的实时串口波特率相匹配(相等,即使偏差也在可接受到范围内),能够确保主设备与目标芯片之间稳定的串口数据传输。
22.在一种具体实施方式中,所述校对接口预先被配置为复用目标芯片的sd接口、usb接口、spi接口或者iic接口,并预先与对应主设备进行约定;可以理解,二者约定使用sd接口、usb接口、spi接口或者iic接口进行开始校准指令及停止校准指令的传递,这些校对接口对应的通信通道的数据传输率高,能够有效缩短开始校准指令及停止校准指令的传递时间,降低校准指令传递过程对波特率校准精准度的影响;另外,使用校对接口对应的通信通道触发目标芯片的波特率校准,也可以避免串口通讯不稳定或者不通对波特率校准的影响。
23.在另一种具体实施方式中,检测所述目标芯片的sd接口、usb接口、spi接口和iic接口的连接状态及通讯状态,若sd接口、usb接口、spi接口或者iic接口与主设备处于已连接状态且处于通讯空闲状态,则将该接口配置为校对接口,并通知对应主设备,从而在不影响校准接口正常通信的基础上,实现本实施例中的串口波特率自适应方法。
24.实施例2本实施例与实施例1的区别在于:如附图2所示,若所述目标芯片的校对接口预先被配置为复用目标芯片的串口,则在所述步骤1之前,所述串口波特率自适应方法还包括以下步骤:实时监测目标芯片的串口是否接收到来自主设备的测试指令,所述测试指令采用设定串口波特率进行传输;若是,则向主设备发送响应指令,并转步骤1;否则,继续实时监测目标芯片的串口是否接收到主设备以动态波特率传输的测试指令,所述动态波特率为所述设定串口波特率与预设倍数之间的乘积。
25.可以理解,本实施例在主设备的计时器是准确的,且主设备串口输出波特率(准确的)在一定范围内是可调整的情况下,主设备尝试调整自身去“扫描目标芯片”;通过先对主设备串口输出波特率进行粗调,再采用实施例1中的方法步骤进行细调,使得目标芯片的串口波特率自动与主设备的串口波特率匹配。
26.其中,所述主设备发送的测试指令及目标芯片发送的响应指令,采用波特率调整之前预先预定的数据格式。
27.具体的,所述动态波特率=设定串口波特率
×
预设倍数,所述设定串口波特率为主
设备与目标芯片之间预先配置的串口波特率,所述预设倍数可以为90%、92.5%、95%、97.5%、102.5%、105%、107.5%或者110%;例如,主设备以设定串口波特率向目标芯片的串口传输测试指令;若目标芯片接收到所述测试指令,则向主设备发送响应指令;若等待一段时间(预设时间段)后,主设备未接收到响应指令,则将以90%
×
设定串口波特率向目标芯片的串口再次传输测试指令,重复上述过程,直至主设备接收到返回的响应指令,或者超过预置的尝试次数。
28.实施例3在实施例1和2的基础上,本实施例给出了一种波特率自适应芯片的具体实施方式;所述波特率自适应芯片包括校准参数获取单元、调整值生成单元及波特率配置单元,其中,所述校准参数获取单元,用于实时监测目标芯片的校对接口是否接收到来自主设备的开始校准指令,若是,则开始记录时钟数;还用于实时监测目标芯片的校对接口是否接收到来自主设备的停止校准指令,若是,则停止记录时钟数,将时钟数记录值作为校准参数ⅰ,并提取出所述停止校准指令中的校准参数ⅱ;其中,所述校对接口为目标芯片的物理接口,所述校准参数ⅱ为时间参数;所述调整值生成单元,用于根据所述校准参数ⅱ和所述校准参数ⅰ计算出新分频系数,基于所述新分频系数对目标芯片中存储分频系数的寄存器值进行更新;所述波特率配置单元,用于在串口通信时,通过寄存器中存储的新分频系数和外设总线频率计算出校准后的串口波特率,并在目标芯片上下电后,基于校准后的串口波特率与其他设备进行串口通信。
29.进一步的,所述调整值生成单元根据所述校准参数ⅱ和所述校准参数ⅰ计算出新分频系数,执行:根据所述校准参数ⅰ和所述校准参数ⅱ的比值计算出目标芯片的实时主频;其中,所述校准参数ⅱ为时间参数;根据目标芯片的实时主频得到目标芯片的新分频系数,提取出所述新分频系数的整数部分和浮点部分,并将寄存器值fdfir更新为所述新分频系数的整数部分,将寄存器值fdffr更新为所述新分频系数的浮点部分。
30.在一种具体实施方式中,所述波特率自适应芯片还包括第一接口复用单元,其用于将所述目标芯片的校对接口预先配置为串口;所述校准参数获取单元,还用于在实时监测目标芯片的校对接口是否接收到来自主设备的开始校准指令之前:实时监测目标芯片的串口是否接收到来自主设备的测试指令,所述测试指令采用设定串口波特率进行传输;在接收到来自主设备的测试指令时,向主设备发送响应指令;在未接收到来自主设备的测试指令时,继续实时监测目标芯片的串口是否接收到主设备以动态波特率传输的测试指令;其中,所述动态波特率为所述设定串口波特率与预设倍数之间的乘积。
31.在另一种具体实施方式中,所述波特率自适应芯片还包括第二接口复用单元,其
用于:预先与对应主设备进行约定,将所述校对接口配置为复用目标芯片的sd接口、usb接口、spi接口或者iic接口。
32.在另一种具体实施方式中,所述波特率自适应芯片还包括第三接口复用单元,其用于:检测所述目标芯片的sd(secure digital)接口、usb接口、spi(serial peripheral interface)接口和iic(inter-integrated circuit)接口的连接状态及通讯状态,若sd接口、usb接口、spi接口或者iic接口与主设备处于已连接状态且处于通讯空闲状态,则将该接口配置为校对接口,并通知对应主设备。
33.实施例4在上述实施例的基础上,本实施例给出了一种高精度串口波特率自适应系统的具体实施方式;所述高精度串口波特率自适应系统包括主设备和目标芯片,所述目标芯片为实施例3中的波特率自适应芯片;所述主设备与所述目标芯片之间通过校对接口和串口通信连接,在串口波特率调整时,执行以下操作:所述主设备通过所述校对接口对应的通信通道,向所述目标芯片发送开始校准指令;在延时预设时间后,主设备通过校对接口对应的通信通道,向所述目标芯片发送停止校准指令,所述目标芯片执行实施例1和2中的串口波特率自适应方法的步骤,使得所述目标芯片的串口波特率与所述主设备的串口波特率相匹配。
34.进一步的,所述主设备包括校准指令生成单元和校准指令发送单元,所述校准指令生成单元用于生成与对应目标芯片预先约定的开始校准指令和停止校准指令,通过所述校准指令发送单元经由所述主设备的校准接口发送至对应的目标芯片。
35.具体的,所述预设时间与所述停止校准指令中的校准参数ⅱ相等,所述开始校准指令和所述开始校准指令为自定义扩展指令,所述自定义扩展指令的格式及含义是所述主设备与所述目标芯片在串口波特率调整之前预先约定并协商一致的。
36.在一种具体实施方式中,所述高精度串口波特率自适应系统包括一个主设备和一个目标芯片,所述目标芯片为安全芯片,所述校对接口被配置为复用目标芯片的sd接口、usb接口、spi接口或者iic接口,如附图3所示。
37.在另一种具体实施方式中,所述高精度串口波特率自适应系统包括一个主设备和两个目标芯片,两个目标芯片为安全芯片,如附图4所示;可以理解,在主设备接口数量及类似允许的情况下,一个主设备可以和两个或者两个以上的目标芯片同时进行串口波特率自调整,在串口波特率自调整过程中各个目标芯片之间互不干涉。
38.在另一种具体实施方式中,所述高精度串口波特率自适应系统包括两个芯片,其中一个芯片为安全芯片,如附图5所示;由于芯片的物理差异性,安全芯片的实际主频mclk可能与固定主频mclk有偏差,如果不知道主频实际偏差范围,仍然按照已知的固定主频mclk带入公式计算,会导致外设总线频率fbf存在偏差,导致安全芯片的寄存器值fdfir和寄存器值fdffr计算有偏差;偏差过大,会导致串口不通;
本实施例配置安全芯片进行串口波特率自适应,对安全芯片的寄存器值fdfir和寄存器值fdffr进行动态调整,进而使得安全芯片的串口波特率与主设备(芯片)的串口波特率相匹配。
39.最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1