自适应速率的数据读写方法及设备与流程

文档序号:29036903发布日期:2022-02-25 19:12阅读:99来源:国知局
自适应速率的数据读写方法及设备与流程

1.本发明涉及一种自适应速率的数据读写方法及设备,属于计算机技术领域。


背景技术:

2.名称为“一种多模块多波特率自适应的高速串行异步通信解决方法”的第201910317377.2号中国专利申请,公开了多模块多波特率自适应的高速串行异步通信解决方法,主机模块和从机模块通过高速串行异步通信模块相连;采用一问一答的主从半双工高速串行异步通信模式,所述主机模块的波特率预定义,从机模块通过波特率自适应算法检测不同主机模块的波特率,并切换为所检测到的波特率以实现与相应主机模块之间的通信,以使一个从机模块可以适用于不同的主机模块。
3.主机模块和从机模块之间建立数据交互的通道,主机模块定时将数据发送给从机模块,从机模块接收到数据后,对接收数据进行校验和解析,并将数据反馈回去,从而实现主从模块间一问一答的半双工通信;主机模块采用预定义的波特率,不同类型的主机模块定义不同的波特率,在帧头信号中带有波特率信息,该波特率信息通过帧头信号中的低电平宽度来表示。从机模块通过检测低电平的宽度来识别不同主机模块的波特率,因此从机模块实时动态地检测每一帧数据的帧头信号,从而实现在从机模块在不断电的前提下对主机模块的更换。
4.由于该方法利用帧头信号中的低电平的宽度来判断主机模块发送信号的波特率,如果发送帧头时,受到干扰,则会导致低电平的宽度改变,会影响波特率的判断。因此该方法可靠性较低。而且,该方法对主机模块要求较高,只有特定性能的主机模块才能发出精准的低电平脉宽。例如32mbps速率需要主机发送48ns低电平,8mbps需要发送140ns低电平。另外,若用于确定通信波特率的低电平受到干扰(毛刺),会导致从机模块根据该低电平信号识别的波特率不准,因而该方法抗干扰能力较差。
5.并且,主机模块发送帧头宽度与波特率是有固定的对应关系的,从机模块只能通过固定的对应关系中包括的多个波特率中的一种与主机模块通信,自适应速率通信的灵活性较差。


技术实现要素:

6.本发明所要解决的一个技术问题在于提供一种自适应速率的数据读写方法。
7.本发明所要解决的另一个技术问题在于提供一种自适应速率的数据读写装置。
8.为实现上述技术目的,本发明采用以下技术方案:
9.一种自适应速率的数据读写方法,包括以下步骤:
10.s 1:从设备上电后,验证来自主设备的波特率识别帧的起始位是否满足最小时长的要求,计算起始位的波特率;
11.s2:从设备接收到波特率识别帧的数据位,判断波特率识别帧的有效性;
12.s3:从设备计算波特率识别帧的数据位的平均波特率,并将平均波特率存储起来;
13.s4:从设备根据平均波特率生成波特率时钟;
14.s5:主设备向从设备发送读写命令帧,从设备获取读写命令帧,并判断主设备要进行读或写动作;
15.s6:从设备配合主设备完成读取或写入动作。
16.其中较优地,所述波特率识别帧的数据位位于所述波特率识别帧的起始位之后;
17.从设备根据所述波特率识别帧的数据位,验证波特率识别帧的有效性。
18.其中较优地,所述从设备,通过比较所述波特率识别帧的数据位的波特率和所述波特率识别帧的起始位的波特率,来验证所述波特率识别帧的波特率有效性。
19.其中较优地,所述从设备中依次获取波特率识别帧中每位数据位的波特率,并与所述波特率识别帧的起始位的波特率进行比较,若每位数据位的波特率是所述起始位的波特率的0.5~1.5倍,则判断所述波特率识别帧的波特率有效。
20.其中较优地,所述从设备,判断所述波特率识别帧的数值是否等于预定值,来验证所述波特率识别帧的数值有效性。
21.其中较优地,所述从设备在上电后自动读取所述预定值。
22.其中较优地,所述预定值是使波特率识别帧每位数据都不相同,并且第一位与起始位不同的值。
23.其中较优地,起始位为低电平脉冲,并且发送所述波特率识别帧的顺序为由数据的高位发送到低位,则所述预定值为0xaa或0xaaaa;起始位为低电平脉冲,并且由数据的低位发送到高位,则所述预定值为0x55或0x5555;
24.起始位为高电平脉冲,并且发送所述波特率识别帧的顺序为由数据的高位发送到低位,则波特率识别帧为0x55或0x5555;起始位为高电平脉冲,并且发送所述波特率识别帧的顺序为由数据的低位发送到高位,则所述预定值为0xaa或0xaaaa。
25.其中较优地,所述从设备自收到所述起始位后启动计数,在每个从设备的时钟周期,计数值+1,直到起始位结束,则判断计数器的计数结果是否大于预设值。
26.一种自适应速率的数据读写方法的设备,其包括处理器和存储器,其中所述处理器读取存储器中的计算机程序,用于执行前述的自适应速率的数据读写方法。
27.本发明具有以下技术效果:1)通过验证,使波特率识别帧的起始位满足最小时长的要求,因而能够滤除信号线上的毛刺;2)利用波特率识别帧的起始位的波特率来验证用于生成自适应速率时钟的数据位的波特率的正确性,而且结合起始位检测,以保证通信速率的自适应调整;3)利用特定的预定值来验证数据位的数值,进一步保持波特率的正确性;4)由从设备自适应主设备,用于检测波特率的电平不需要固定的时间,对主设备没有限制,也不需要对主设备进行配置,因此适用于多种主设备,适用范围广而且操作方便;5)利用起始位检查超时机制,避免主设备不规范导致从设备出现的异常。
附图说明
28.图1为本发明的第一实施例的波特率识别帧的帧结构示意图;
29.图2为本发明的第一实施例的主设备工作流程示意图;
30.图3为本发明的第一实施例的从设备工作流程示意图;
31.图4为本发明的第二实施例的从设备工作流程示意图;
32.图5为本发明的实施例的从设备的结构示意图。
具体实施方式
33.下面结合附图和具体实施例对本发明的技术内容进行详细具体的说明。
34.本发明的方法用于主设备和从设备单线通信,单线通信的优点是节省io资源。主设备和从设备可通过一个io引脚连接。主设备和从设备都为控制器芯片,例如单片机。主设备是主动发起通信动作的设备,通过单线对从设备进行读写。从设备是根据主设备发送的数据完成对从设备的存储器读取或写入动作的设备。
35.本发明的方法,从设备利用主设备发送的一帧预定内容的数据,生成自适应速率的时钟,理论上从设备的这种时钟与主设备通信发送和接收数据的波特率相等,因而能够根据这种时钟与主设备完成通信。本发明的优点在于对用于生成时钟的这帧数据的稳定性进行双重验证,因而生成的用于通信的时钟较为准确,设备能够更好地适配主设备读写数据的速率。
36.《第一实施例》
37.如图1-图3所示,主设备向从设备读写数据分为以下步骤:
38.1.从设备上电后,根据来自主设备的波特率识别帧的起始位,计算起始位的波特率。
39.从设备以前没有跟主设备通信过(例如从设备刚刚复位,此时从设备中未存有用于生成用于通信的时钟的波特率),在发送读写命令之前,需要控制主设备向从设备发送波特率识别帧,以使从设备根据波特率识别帧的波特率生成时钟,利用时钟配合主设备的读写动作。
40.主设备向从设备发送的波特率识别帧的格式与在通信过程中发送的其它数据类型的帧的格式相同,例如与uart(universal asynchronous receiver/transmitter,通用异步收发传输器)帧格式相同,每帧数据的第一位是起始位,每帧数据的最后一位是停止位。
41.图1为本发明的帧格式的示意图。如图1所示,波特率识别帧的起始位的作用与其他类型的帧的起始位不同,从设备能够用来判断波特率识别帧的每位数据的波特率是否正确。从设备中有用于检测收到信号的波特率的波特率检测器。
42.如果主设备和从设备用于通信的数据线的默认状态是高电平,则将波特率识别帧的起始位(与其他类型的数据帧相同)设定为低电平脉冲;反之,如果主设备和从设备用于通信的数据线的默认状态是低电平,则将波特率识别帧的起始位设定为高电平脉冲。换言之,将波特率识别帧的起始位的电平设定为与主设备和从设备之间的数据通信默认使用的电平相反。
43.2.从设备接收到波特率识别帧的数据位,判断波特率识别帧的有效性。
44.主设备在发出波特率识别帧的起始位之后,紧接着向从设备发送波特率识别帧的数据位。
45.从设备根据接收到的波特率识别帧的数据位,验证波特率识别帧的有效性,包括以下两方面的验证:
46.(1)从设备验证波特率识别帧的波特率有效性
47.从设备中的波特率检测器能够依次获取波特率识别帧中每位数据的波特率,并与上一步中获取的起始位的波特率进行比较,以判断波特率识别帧中每位数据的波特率是否有效,以及波特率识别帧的数据是否是正确的。
48.波特率识别帧每位数据与起始位的波特率相比不得过大,也不得过小。若每位数据的波特率是起始位的波特率的0.5~1.5倍(说明主设备能够以较稳定的波特率传输数据),则确定波特率识别帧的波特率有效。若其中任何一位不满足上述条件,则从设备丢弃从主设备收到的数据。
49.(2)从设备验证波特率识别帧的数值有效性。
50.从设备验证波特率识别帧的数值是否等于的预定值。从设备上电后通过自动运行的程序,自动读取存储在该寄存器中的预定值。
51.有效的波特率识别帧可以为8位数据或16位等(与通信每帧数据的位数相等,若通信每帧数据的位数为16位,波特率识别帧为16位)。波特率识别帧的位数越多,得到的主设备发送数据的波特率越准确。
52.起始位为低电平脉冲,并且发送所述波特率识别帧的顺序为由数据的高位发送到低位,则所述预定值为0xaa(波特率识别帧为8位)或0xaaaa(波特率识别帧为16位);起始位为低电平脉冲,并且由数据的低位发送到高位,则所述预定值为0x55(波特率识别帧为8位)或0x5555(波特率识别帧为16位)。
53.起始位为高电平脉冲,并且发送所述波特率识别帧的顺序为由数据的高位发送到低位,则波特率识别帧为0x55或0x5555;起始位为高电平脉冲,并且发送所述波特率识别帧的顺序为由数据的高位发送到低位,则波特率识别帧为0xaa或0xaaaa。
54.这样设计的目的是使得波特率识别帧每位数据都不相同,区分开每位数据,并且发送波特率识别帧的第一位数据与起始位的数据是不同的,以便区分出起始位。
55.3.从设备计算波特率识别帧的数据位的平均波特率,并将平均波特率存储起来。
56.从设备将波特率识别帧每位数据的波特率求和,再计算平均值,获得平均波特率,并且保存到寄存器中作为预定值。只要主设备向从设备成功发送过波特率识别帧,两者之间实现了通信,即从设备中已存有波特率识别帧的预定值,主设备就不再需要向从设备发送波特率识别帧,除非从设备断电或复位。存储起来的平均波特率可以反复利用,作为下一次生成波特率时钟的依据。
57.4.从设备根据平均波特率生成波特率时钟。
58.从设备中具有波特率时钟发生器,用于根据平均波特率生成波特率时钟,波特率时钟能够保证主设备和从设备读写动作的同步性。
59.从设备可以在每一次收到主设备发送的每帧数据的起始位时,根据平均波特率生成波特率时钟。
60.这样做的好处是,若从设备根据平均波特率一次性生成波特率时钟,以后再不对波特率时钟进行更改,由于波特率时钟和主设备发送数据的波特率存在误差,波特率时钟运行时间越长,则与主设备发送数据的波特率的误差越大,因而每当收到起始位,重置一次时钟,可以清除以前的误差,防止误差不断累积。
61.5.从设备获取读写命令帧,并判断主设备要进行读或写动作。
62.主设备向从设备发送读写命令帧,从设备获取读写命令帧,并判断主设备要进行
读或写动作。
63.从设备按照波特率时钟的波特率获取主设备发送的读写命令帧,获取的读写命令帧的第1位数据(例如高电平写,低电平读)判断主设备要向从设备写入数据还是读取数据。若判断为要写入数据,则读写命令帧第1位数据后面所有位数据为要写入数据的地址;若判断要读取数据,则配置从设备用于通信的这个i/o的模式为发送模式,则读写命令帧第1位数据后面所有位数据为要读取数据的地址。读写命令帧可以为8位数据。
64.6.从设备配合主设备完成读取或写入动作。
65.若根据读写命令帧,为要读取数据,则从设备将读写命令帧对应地址的数据从从设备的存储器中读取出来,按照波特率时钟的波特率发送给主设备,在从设备发出从设备发出读取数据帧的停止位后,配置从设备用于通信的这个i/o的模式为接收模式。
66.若根据读写命令帧,为要写入数据,则从设备按照波特率时钟的波特率从主设备获取要写入的数据,并写入到从设备的存储器中。
67.根据本发明的方法,主设备和从设备能够利用一根数据线通信,在i/o资源紧缺的情况下,使用更加灵活,且从设备能够根据主设备发出的信号的波特率生成自适应波特率的时钟,保证了主设备和从设备相配合完成读写操作的同步性,并且在完成读写操作前,用特定的数据来验证是发送数据是否正常,是否受到干扰,保证能够更稳定的通过一根数据线接收或发送数据。
68.《第二实施例》
69.如图1、图2和图4所示,与第一实施例相比,本实施例中还增加主设备与从设备之间对起始位进行验证的步骤。即,从设备验证来自主设备的波特率识别帧的起始位是否满足最小时长的要求。这样做的好处是,能够滤除信号线因受到干扰产生的短时间的毛刺。最小时长通常是从设备时钟周期的8倍或16倍等。
70.具体实现方式是,上电后,接收波特率识别帧的起始位。此时,从设备启动计数器,计数器在从设备收到起始位后启动,计数器在每个从设备的时钟周期,计数值+1,起始位结束,则判断计数器的计数结果是否大于预设值。该预设值大于等于最小时长,并且是最小时长的倍数。如果大于预设值则进入下一步,判断波特率识别帧的有效性(参考第一实施例中的步骤2)。
71.上电后,接收波特率识别帧的起始位的同时,利用计数器的计数结果可以计算出起始位维持的总时间,进而能够获得起始位的波特率,用于判断波特率识别帧的有效性。
72.实际应用中,起始位的时间长度不宜过长,这样是为了防止计数超过从设备所支持的计数器能够计数的最大值,例如,从设备内置一个15位计数器,从设备利用计数器和从设备的时钟对起始位的时间长度计数不能大于32767个系统时钟周期,因而起始位的时间长度不能超过从设备的时钟周期的32767倍。
73.由此可见,本发明具有以下优势:1)通过验证,使波特率识别帧的起始位满足最小时长的要求,因而能够滤除信号线上的毛刺;2)利用波特率识别帧的起始位的波特率来验证用于生成自适应速率时钟的数据位的波特率的正确性,而且结合起始位检测,以保证通信速率的自适应调整;3)利用特定的预定值来验证数据位的数值,进一步保持波特率的正确性;4)由从设备自适应主设备,用于检测波特率的电平不需要固定的时间,对主设备没有限制,也不需要对主设备进行配置,因此适用于多种主设备,适用范围广而且操作方便;5)
利用起始位检查超时机制,避免主设备不规范导致从设备出现的异常。
74.上面对本发明写入、读取数据的方法和接口进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质内容的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。
当前第1页1 2 
网友询问留言 已有1条留言
  • 132729... 来自[中国] 2023年04月24日 09:30
    很实用的技术,学习研究
    0
1