串行通信方法、装置、计算机设备和存储介质转让专利

申请号 : CN201910340606.2

文献号 : CN110098897B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 何春茂尚波翟亚飞王长恺

申请人 : 珠海格力电器股份有限公司

摘要 :

本申请涉及一种串行通信方法、装置、计算机设备和存储介质。所述方法包括:接收端获取滤波器输出的当前滤波数据;当检测到当前滤波数据中的预设状态时,获取当前滤波数据中预设状态之后的有效数据;当有效数据接收完毕后等待接收延迟时长,接收端获取滤波器输出的下一滤波数据;将下一滤波数据作为当前滤波数据,进入当检测到当前滤波数据中的预设状态时,获取当前滤波数据中预设状态之后的有效数据。通过滤波器对数据进行滤波处理,接收端只需要捕获到滤波器输出的当前滤波数据,当检测到当前滤波数据中的预设状态时,即可获取到其中的有效数据,并延长接收端接收数据的时长,即延时接收,从而可以确保接收端接收到的数据的准确性。

权利要求 :

1.一种串行通信方法,其特征在于,所述方法包括:

接收端获取滤波器输出的当前滤波数据;

当检测到所述当前滤波数据中的预设状态时,获取所述当前滤波数据中所述预设状态之后的有效数据,所述预设状态为下降沿状态;

当所述有效数据接收完毕后等待接收延迟时长,所述接收端获取所述滤波器输出的下一滤波数据;

将所述下一滤波数据作为所述当前滤波数据;

其中,所述接收端获取滤波器输出的当前滤波数据,包括:

所述接收端获取波特率设为预设倍数的滤波器对当前滤波数据的IO状态进行采集并通过计数器计数的方式进行过滤后,输出的当前滤波数据;

当所述计数器小于或等于所述预设倍数且所述IO状态为高电平状态时,计数器的数值增加预设特定数值;

当所述计数器大于0且所述IO状态为低电平状态时,计数器的数值减少所述预设特定数值;

当所述计数器的数值小于预设阈值时,所述滤波器输出信号为第一状态信号;

当所述计数器的数值大于所述预设倍数与所述预设阈值的差值时,所述滤波器输出信号为第二状态信号。

2.根据权利要求1所述的方法,其特征在于,在所述接收端获取滤波器输出的当前滤波数据之前,还包括:发送端发送当前待滤波数据,所述滤波器对所述当前待滤波数据进行滤波后得到所述当前滤波数据;

当所述当前待滤波数据发送完毕并等待发送延迟时长后,所述发送端发送下一待滤波数据。

3.根据权利要求2所述的方法,其特征在于,所述发送延迟时长与所述接收延迟时长均大于任意一帧数据的时长,且所述发送延迟时长大于所述接收延迟时长。

4.一种串行通信装置,其特征在于,所述装置包括接收端,所述接收端包括:滤波模块,用于获取滤波器输出的当前滤波数据;

数据接收模块,用于当检测到所述当前滤波数据中的预设状态时,获取所述当前滤波数据中所述预设状态之后的有效数据,所述预设状态为下降沿状态;当所述有效数据接收完毕后等待接收延迟时长,所述接收端获取所述滤波器输出的下一滤波数据;将所述下一滤波数据作为所述当前滤波数据;

其中,所述滤波模块具体用于获取波特率设为预设倍数的滤波器对当前滤波数据的IO状态进行采集并通过计数器计数的方式进行过滤后,输出的当前滤波数据,当所述计数器小于或等于所述预设倍数且所述IO状态为高电平状态时,计数器的数值增加预设特定数值,当所述计数器大于0且所述IO状态为低电平状态时,计数器的数值减少所述预设特定数值;

所述滤波模块具体还用于当所述计数器的数值小于预设阈值时,所述滤波器输出信号为第一状态信号,当所述计数器的数值大于所述预设倍数与所述预设阈值的差值时,所述滤波器输出信号为第二状态信号。

5.根据权利要求4所述的装置,其特征在于,所述装置还包括发送端,所述发送端包括:数据发送模块,用于发送当前待滤波数据,所述滤波器对所述当前待滤波数据进行滤波后得到所述当前滤波数据,当所述当前待滤波数据发送完毕并等待发送延迟时长后,所述发送端发送下一待滤波数据。

6.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至3中任一项所述方法的步骤。

7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至3中任一项所述的方法的步骤。

说明书 :

串行通信方法、装置、计算机设备和存储介质

技术领域

[0001] 本申请涉及通信技术领域,特别是涉及一种串行通信方法、装置、计算机设备和存储介质。

背景技术

[0002] 在工业领域,串行通信使用非常广泛,常用的串行通信方式有RS232、RS485、RS422、CAN等通信方式。而串行通信用的主控芯片有单片机、ARM、DSP、FPGA等。单片机、ARM和DSP一般内部包含有硬核串行处理模块,硬核串行处理模块接收数据后通知CPU接收,或CPU把数据发送到串行处理模块后,串行处理模块会负责把数据按顺序发送出去。而FPGA一般不带有这种串行硬核处理模块,需要用户自己编写程序实现串行接收、发送模块功能。串行数据一般包含一个起始位、5至8位数据、1、1.5或2位停止位。如图1所示。
[0003] 通常情况下,FPGA捕获起始位的下降沿后,开始计算,每隔一个波特率周期,采集一位数据,直到停止位后,停止采集,并等待下一帧数据。通常情况下,FPGA能正常采集到起始位的下降沿,但由于串行通信是异步的,在发送端先发送,接收端有可有在数据区开始捕获,捕获到数据段的下降沿,这样会收到错误的数据,并有可能一直保持错误的接收,同理,当有干扰的情况下,也可能误触发下降沿的捕获,导致错误产生。

发明内容

[0004] 基于此,有必要针对上述技术问题,提供一种串行通信方法、装置、计算机设备和存储介质。
[0005] 一种串行通信方法,所述方法包括:
[0006] 接收端获取滤波器输出的当前滤波数据;
[0007] 当检测到所述当前滤波数据中的预设状态时,获取所述当前滤波数据中所述预设状态之后的有效数据,所述预设状态为下降沿状态;
[0008] 当所述有效数据接收完毕后等待接收延迟时长,所述接收端获取所述滤波器输出的下一滤波数据;
[0009] 将所述下一滤波数据作为所述当前滤波数据;
[0010] 其中,所述接收端获取滤波器输出的当前滤波数据,包括:
[0011] 所述接收端获取波特率设为预设倍数的滤波器对当前滤波数据的IO状态进行采集并通过计数器计数的方式进行过滤后,输出的当前滤波数据;
[0012] 当所述计数器小于或等于所述预设倍数且所述IO口状态为高电平状态时,计数器的数值增加预设特定数值;
[0013] 当所述计数器大于0且所述IO口状态为低电平状态时,计数器的数值减少所述预设特定数值;
[0014] 当所述计数器的数值小于预设阈值时,所述滤波器输出信号为第一状态信号;
[0015] 当所述计数器的数值大于所述预设倍数与所述预设阈值的差值时,所述滤波器输出信号为第二状态信号。
[0016] 一种串行通信装置,装置包括接收端,接收端包括:
[0017] 滤波模块,用于获取滤波器输出的当前滤波数据;
[0018] 数据接收模块,用于当检测到所述当前滤波数据中的预设状态时,获取所述当前滤波数据中所述预设状态之后的有效数据,所述预设状态为下降沿状态;当所述有效数据接收完毕后等待接收延迟时长,所述接收端获取所述滤波器输出的下一滤波数据;将所述下一滤波数据作为所述当前滤波数据;
[0019] 其中,所述滤波模块具体用于获取波特率设为预设倍数的滤波器对当前滤波数据的IO状态进行采集并通过计数器计数的方式进行过滤后,输出的当前滤波数据,当所述计数器小于或等于所述预设倍数且所述IO口状态为高电平状态时,计数器的数值增加预设特定数值,当所述计数器大于0且所述IO口状态为低电平状态时,计数器的数值减少所述预设特定数值;
[0020] 所述滤波模块具体还用于当所述计数器的数值小于预设阈值时,所述滤波器输出信号为第一状态信号,当所述计数器的数值大于所述预设倍数与所述预设阈值的差值时,所述滤波器输出信号为第二状态信号。
[0021] 一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
[0022] 接收端获取滤波器输出的当前滤波数据;
[0023] 当检测到所述当前滤波数据中的预设状态时,获取所述当前滤波数据中所述预设状态之后的有效数据,所述预设状态为下降沿状态;
[0024] 当所述有效数据接收完毕后等待接收延迟时长,所述接收端获取所述滤波器输出的下一滤波数据;
[0025] 将所述下一滤波数据作为所述当前滤波数据;
[0026] 其中,所述接收端获取滤波器输出的当前滤波数据,包括:
[0027] 所述接收端获取波特率设为预设倍数的滤波器对当前滤波数据的IO状态进行采集并通过计数器计数的方式进行过滤后,输出的当前滤波数据;
[0028] 当所述计数器小于或等于所述预设倍数且所述IO口状态为高电平状态时,计数器的数值增加预设特定数值;
[0029] 当所述计数器大于0且所述IO口状态为低电平状态时,计数器的数值减少所述预设特定数值;
[0030] 当所述计数器的数值小于预设阈值时,所述滤波器输出信号为第一状态信号;
[0031] 当所述计数器的数值大于所述预设倍数与所述预设阈值的差值时,所述滤波器输出信号为第二状态信号。
[0032] 一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0033] 接收端获取滤波器输出的当前滤波数据;
[0034] 当检测到所述当前滤波数据中的预设状态时,获取所述当前滤波数据中所述预设状态之后的有效数据,所述预设状态为下降沿状态;
[0035] 当所述有效数据接收完毕后等待接收延迟时长,所述接收端获取所述滤波器输出的下一滤波数据;
[0036] 将所述下一滤波数据作为所述当前滤波数据;
[0037] 其中,所述接收端获取滤波器输出的当前滤波数据,包括:
[0038] 所述接收端获取波特率设为预设倍数的滤波器对当前滤波数据的IO状态进行采集并通过计数器计数的方式进行过滤后,输出的当前滤波数据;
[0039] 当所述计数器小于或等于所述预设倍数且所述IO口状态为高电平状态时,计数器的数值增加预设特定数值;
[0040] 当所述计数器大于0且所述IO口状态为低电平状态时,计数器的数值减少所述预设特定数值;
[0041] 当所述计数器的数值小于预设阈值时,所述滤波器输出信号为第一状态信号;
[0042] 当所述计数器的数值大于所述预设倍数与所述预设阈值的差值时,所述滤波器输出信号为第二状态信号。
[0043] 上述串行通信方法、装置、计算机设备和存储介质。所述方法包括:接收端获取滤波器输出的当前滤波数据;当检测到所述当前滤波数据中的预设状态时,获取所述当前滤波数据中所述预设状态之后的有效数据;当所述有效数据接收完毕后等待接收延迟时长,所述接收端获取所述滤波器输出的下一滤波数据;将所述下一滤波数据作为所述当前滤波数据,进入当检测到所述当前滤波数据中的预设状态时,获取所述当前滤波数据中所述预设状态之后的有效数据。通过滤波器对数据进行滤波处理,接收端只需要捕获到滤波器输出的当前滤波数据,当检测到当前滤波数据中的预设状态时,即可获取到其中的有效数据,并延长接收端接收数据的时长,即延时接收,当接收端和发送端不同步的情况下,即使接收端接收到的第一帧数据错误,也可以通过延迟接收的方式保证接收端下一帧数据的正确接收,从而可以确保接收端接收到的数据的准确性。

附图说明

[0044] 图1为一个实施例中传统技术中串行通信方法的示意图;
[0045] 图2为一个实施例中串行通信方法的应用环境图;
[0046] 图3为一个实施例中串行通信方法的流程示意图;
[0047] 图4为一个实施例中发送端发送数据的流程示意图;
[0048] 图5为一个实施例中接收端接收数据的流程示意图;
[0049] 图6为一个实施例中串行通信装置的结构框图;
[0050] 图7为一个实施例中计算机设备的内部结构图。

具体实施方式

[0051] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0052] 本申请提供的串行通信方法,可以应用于如图2所示的应用环境中。其中,发送端202与接收端204进行通信。其中,发送端202可以将待发送的数据发送至接收端204,接收端
204中的滤波器可以接收发送端202发送的数据并进行滤波处理,将滤波过的数据输出至接收端204,接收端204则依次接收发送端202发送的数据。
[0053] 在一个实施例中,如图3所示,提供了一种串行通信方法,包括以下步骤:
[0054] 步骤301,接收端获取滤波器输出的当前滤波数据。
[0055] 发送端可以将数据进行发送,当滤波器获取到发送端发送的数据后,滤波器可以对发送端发送的数据进行滤波处理。
[0056] 在一个实施例中,接收端获取滤波器输出的当前滤波数据,包括:接收端获取波特率设为预设倍数的滤波器对当前滤波数据的IO状态进行采集并通过计数器计数的方式进行过滤后,输出的当前滤波数据。
[0057] 预先设计的数字滤波器输入信号有IO口状态信号,高频率时钟输出有滤波后的IO信号。波特率表示每秒钟传送的码元符号的个数,是衡量数据传送速率的指标,它用单位时间内载波调制状态改变的次数来表示,可以将滤波器的波特率设为预设倍数N,通过波特率为N倍的高频率对发送端发送的数据的IO状态进行采集并可以通过计数器进行计数。
[0058] 在一个实施例中,上述串行通信方法还包括:当计数器小于或等于预设倍数且IO口状态为高电平状态时,计数器的数值增加预设特定数值;当计数器大于0且IO口状态为低电平状态时,计数器的数值减少预设特定数值。
[0059] 在通过波特率为预设倍数N的滤波器对发送端发送的数据进行滤波处理时,滤波器还会对发送端发送的数据的IO状态进行采集,并进行计数,通过计数的方式进行滤波处理。具体的,当计数器小于或等于预设倍数且IO口状态为高电平状态时,计数器的数值增加预设特定数值,而当计数器大于0且IO口状态为低电平状态时,计数器的数值减少预设特定数值。假设预设倍数N为256,预设特定数值为1,计数器的数值为num,那么当num小于或等于N,且采集到输入IO口为高电平状态时,可以将num的数值加一,当num大于0且IO口状态为低电平状态时,可以将num的数值减一。
[0060] 在一个实施例中,上述串行通信方法还包括:当计数器的数值小于预设阈值时,滤波器输出信号为第一状态信号;当计数器的数值大于预设倍数与预设阈值的差值时,滤波器输出信号为第二状态信号。
[0061] 通过当计数器小于或等于预设倍数且IO口状态为高电平状态时,计数器的数值增加预设特定数值;当计数器大于0且IO口状态为低电平状态时,计数器的数值减少预设特定数值的这种方式确定计数器的数值后,可以通过数值与预设阈值的大小关系,以确定输出信号为第一状态信号或第二状态信号,其中第一状态信号为0,第二状态信号为1。预设阈值为n,当计数器的数值num小于n时,滤波器输出信号为0,当num大于(N-n)时,滤波器输入信号为1,以此方式对发送端发送的数据进行滤波处理,以排除干扰信号。
[0062] 步骤302,当检测到当前滤波数据中的预设状态时,获取当前滤波数据中预设状态之后的有效数据。
[0063] 步骤303,当有效数据接收完毕后等待接收延迟时长,接收端获取滤波器输出的下一滤波数据。
[0064] 步骤304,将下一滤波数据作为当前滤波数据,进入当检测到当前滤波数据中的预设状态时,获取当前滤波数据中预设状态之后的有效数据。
[0065] 当通过滤波器对发送端发送的数据进行滤波处理后,可排除出会对发送端发送的数据进行干扰的信号,从而可以提高串行通信的抗干扰能力。接收端可以获取到滤波器滤波后的当前滤波数据,当检测到当前滤波数据中的预设状态时,接收端可以获取当前滤波数据中预设状态之后的有效数据。预设状态可以是下降沿状态,即当接收端检测到当前滤波数据中的下降沿后,可以开始接收当前滤波数据。有效数据是指检测到下降沿之后的一段时长内的数据。
[0066] 当接收端对有效数据接收完毕后,接收端可以等待接收延迟时长再获取滤波器输出的下一滤波数据,可以将下一滤波数据作为当前滤波数据,进入当检测到当前滤波数据中的预设状态时,获取当前滤波数据中预设状态之后的有效数据的步骤,以此方式循环接收数据。
[0067] 在一个实施例中,在接收端获取滤波器输出的当前滤波数据之前,还包括:发送端发送当前待滤波数据,滤波器对当前待滤波数据进行滤波后得到当前滤波数据,当当前待滤波完毕等待发送延迟时长后,发送端发送下一待滤波数据。
[0068] 发送端在发送的数据时,会依次对待传输的数据进行发送,比如,发送端可以一帧一帧的发送数据。在一帧数据发送完毕后,发送端在等待发送延迟时长之后,再发送第二帧数据,发送完毕后,再发送第三帧数据,以此方式,直至发送端将需要发送的数据全部发送完毕。发送延迟时长是技术人员预先设置的时长,可根据实际需要进行相应的改变。即,每次都可以将当前发送的数据作为第一帧数据,将第一帧数据的下一帧数据作为第二帧数据,那么每次在进行数据发送时,都是先发送第一帧数据,等待发送延迟时长后,再发送第二帧数据,直至全部的数据发送完毕。因此,滤波器在接收数据时,也会先获取到发送端发送的第一帧数据,在获取完第一帧数据完毕后,等待发送延迟时长后,再获取发送端发送的下一帧数据。发送端延迟发送,滤波器延迟接收,也将导致接收端延迟接收,从而达到发送端和接收端同步的效果。
[0069] 在一个实施例中,上述方法还包括:当接收端捕获到下降沿时,接收端接收第一帧数据;接收端接收完毕后等待接收延迟时长,接收第二帧数据。
[0070] 在发送端发送完第一帧数据后,接收端可以开始准备对数据进行接收。当接收端捕获到下降沿时,表示开始有数据传输过来,接收端可以开始准备接收数据,当接收端接收到发送端发送的第一帧数据后,接收端会先等待接收延迟时长,再开始准备接收第二帧数据,即接收端每次接收一次数据后都会先等待接收延迟时长后,再进行下一次数据的接收。接收延迟时长与发送延迟时长一样,均属于技术人员预设设置的时长,可根据实际需要进行设置。
[0071] 这样做的好处是,当发送设备和接收设备上电不同时间或初始化的时间不相同时,发送端和接收接不同步,捕获到的下降沿未必是起始位。通过延时发送和延时接收,达到发送端和接收端同步的效果。
[0072] 在一个实施例中,发送延迟时长与接收延迟时长大于任意一帧数据的时长,且发送延迟时长大于接收延迟时长。
[0073] 发送端延迟发送时为了接收端能够正确接收,可以通过控制计时控制发送端需要的延迟时间,因此接收端的延迟时长应设置为大于一帧数据的时长,即接收延迟时长大于当前发送的第一帧数据的时长,若是当前发送的数据为第二帧数据,则接收延迟时长应大于第二帧数据的时长。同样的,发送端也应大于一帧数据的时长,即发送延迟时长大于当前发送的第一帧数据的时长,若是当前发送的数据为第二帧数据,则发送延迟时长应大于第二帧数据的时长。另外,发送端可以设置为比接收端的延迟大一个时钟周期,时钟周期是指接收端由延迟状态转为数据接收状态的时长。因此,实际上发送延迟时长大于接收延迟时长。
[0074] 在一个实施例中,在发送端发送数据之前,还包括:发送端连接电源,进行初始化操作,进入数据准备发送阶段。
[0075] 在发送端开始发送数据之前,可以将发送端连接电源,即对发送端的设备上电,对发送端进行初始化操作,初始化完毕后发送端即进入了数据准备发送阶段,可以准备开始数据的发送。
[0076] 在一个实施例中,在当接收端捕获到下降沿时,接收端接收第一帧数据之前,还包括:接收端连接电源,进行初始化操作,进入数据准备接收阶段。
[0077] 在接收端开始接收数据之前,可以将接收端连接电源,即对接收端的设备上电,对接收端进行初始化操作,初始化完毕后接收端即进入了数据准备接收阶段,可以准备开始数据的接收。
[0078] 上述串行通信方法中,通过滤波器对数据进行滤波处理,接收端只需要捕获到滤波器输出的当前滤波数据,当检测到当前滤波数据中的预设状态时,即可获取到其中的有效数据,并延长接收端接收数据的时长,即延时接收,当接收端和发送端不同步的情况下,即使接收端接收到的第一帧数据错误,也可以通过延迟接收的方式保证接收端下一帧数据的正确接收,从而可以确保接收端接收到的数据的准确性。
[0079] 在一个实施例中,串行通信方法包括对数据的发送、滤波处理和接收。首先,发送端可以对数据进行发送。如图4所示,可以先对发送端的设备上电并进行初始化操作,初始化完毕后发送端可以开始准备发送数据。发送起始为低电平,当发送端发送完第一帧数据后,延时等待发送延迟时长,将第一帧数据的下一帧数据作为第二帧数据,发送端发送第二帧数据,第二帧数据为高电平,如此循环,直至数据全部发送完毕。
[0080] 滤波器可以获取到发送端发送的数据,并进行滤波处理。可以通过设计简易数字滤波模块对发送端发送的数据进行滤波数据。具体的,简易滤波模块输入信号有IO口状态信号,高频率时钟,输出有滤波后IO信号。因串行通信的波特率远小于FPGA的IO口捕获的最高频率和内部执行频率,因此可通过波特率为预设倍数N倍的高频率对发送端发送的数据的IO状态进行采集并计数。假设N为256,即采集时钟为串行通信波特率的256倍,计数器的数值为num,当num在不大于N并采集到输入IO口为高电平状态时,num+1;当num大于0并采集到IO口为低电平时,num-1。还可以设置预设阈值。假设预设阈值为n,则当num(256-n)时,滤波器输出信号为‘1’。
[0081] 预设阈值在设定时,是根据采集的频率与通信的波特率之间的比值而设定的,这样设定可以使得不同的滤波有不同的效果,类似于大电容和小电容的关系。这一滤波模块的设计期望达到的就是平均滤波的效果,如果一直是高电平,就能加到输出高电平的阈值,当然输出高电平,如果有抖动,原本为高电平时若是突然一个抖动,则会出现低电平,假设num由原来数值220变成了219,而高电平输出的阈值是200,219还是大于200,则输出高电平,也不会影响输出高电平,即把抖动滤掉了,即可以去除干扰的抖动,达到平均滤波的效果。
[0082] 经过滤波模块对发送端发送的数据进行滤波后,接收端可以获取到滤波器的输出信号。如图5所示,可以对接收端的设备上电并进行初始化操作,初始化完毕后接收端进入准备接收状态,即代表接收端可以开始准备接收数据。当接收端捕获到下降沿后,表示开始有数据来了,接收端可以开始接收数据。接收端在每一次接收数据时,都会先捕获下降沿,当捕获到下降沿后,即可进入数据准备接收阶段。如果是8位数据,就在8位数据传输时间内采集完成。是用计数器,计到8位后,就是接收完成。当接收完一帧数据后接收端进入等待状态,等待接收延迟时长后,再进入准备接收状态,如此循环。当发送设备和接收设备上电不同时间或初始化的时间不相同时,发送端和接收接不同步,捕获到的下降沿未必是起始位。因此可通过延时发送和延时接收,达到发送端和接收端同步的效果。
[0083] 发送端延时是为了接收端正确接收,通过控制计时来控制发送端需要延长的时间。接收端的延时应大于一帧数据的时长,然后再对数据进行接收。发送也应大于一帧数据的时长,发送端应比接收端的延迟时长大一个时钟周期以上,时钟周期是指接收端由延时状态转为接收状态的时长。同步是从第一个低电平计数器开始进行计数起,因为按照传统的通信方式,当发送端发送第一个低电平的时候,接收端也基本上可以同时接收到第一个低电平。但若是这样处理,可能导致接收端接收到的第一个数据并不是发送端发送的第一个数据,所以本方案中通过发送端与接收端的延时,复位,可以保证接收端在接收到第一个数据时,一定是发送端发送的第一个数据,以此保证数据接收的准确性。
[0084] 因此,采用上述的串行通信方法,当接收和发送端不同步的情况下,即使收到第一帧数据错误,也可以确保下一帧数据正确的接收,且利用FPGA高速的IO口及内部并行处理能力,通过设计简单的数字滤波器,还可以提高串行通信的抗干扰能力,进一步地确保了接收数据的准确性。这一串行通信方式还可以应用在机床控制领域,干扰大,各板块之间不同步运行,因此可使用上述FPGA完成的串行通信方案,还可以在全电注塑机控制系统关键技术研究项目中应用。
[0085] 应该理解的是,虽然图3-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0086] 在一个实施例中,如图6所示,提供了一种串行通信装置,包括:
[0087] 接收端,发送端包括滤波模块401和数据接收模块402。
[0088] 滤波模块401,用于获取滤波器输出的当前滤波数据。
[0089] 数据接收模块402,用于当检测到所述当前滤波数据中的预设状态时,获取所述当前滤波数据中所述预设状态之后的有效数据;当所述有效数据接收完毕后等待接收延迟时长,所述接收端获取所述滤波器输出的下一滤波数据;将所述下一滤波数据作为所述当前滤波数据,进入当检测到所述当前滤波数据中的预设状态时,获取所述当前滤波数据中所述预设状态之后的有效数据。
[0090] 在一个实施例中,上述串行通信装置还包括:发送端,其中发送端包括数据发送模块。
[0091] 数据发送模块,用于发送当前待滤波数据,滤波器对当前待滤波数据进行滤波后得到当前滤波数据,当当前待滤波完毕等待发送延迟时长后,发送端发送下一待滤波数据。
[0092] 在一个实施例中,发送端的发送延迟时长与接收端的接收延迟时长大于任意一帧数据的时长,且发送延迟时长大于接收延迟时长。
[0093] 在一个实施例中,上述发送端还包括:发送准备模块。
[0094] 发送准备模块,用于连接电源,进行初始化操作,进入数据准备发送阶段。
[0095] 在一个实施例中,上述接收端还包括接收准备模块。
[0096] 接收准备模块,用于将连接电源,进行初始化操作,进入数据准备接收阶段。
[0097] 在一个实施例中,上述滤波模块还用于获取波特率设为预设倍数的滤波器对当前滤波数据的IO状态进行采集并通过计数器计数的方式进行过滤后,输出的当前滤波数据。
[0098] 在一个实施例中,上述滤波模块还用于当计数器小于或等于预设倍数且IO口状态为高电平状态时,计数器的数值增加预设特定数值;当计数器大于0且IO口状态为低电平状态时,计数器的数值减少预设特定数值。
[0099] 在一个实施例中,上述滤波模块401还用于当计数器的数值小于预设阈值时,滤波模块输出信号为第一状态信号;当计数器的数值小于预设阈值时,滤波模块输出信号为第二状态信号。
[0100] 关于串行通信装置的具体限定可以参见上文中对于串行通信方法的限定,在此不再赘述。上述串行通信装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0101] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种串行通信方法。
[0102] 本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0103] 在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:获取滤波器输出的当前滤波数据;当检测到当前滤波数据中的预设状态时,获取当前滤波数据中预设状态之后的有效数据;当有效数据接收完毕后等待接收延迟时长,获取滤波器输出的下一滤波数据;将下一滤波数据作为当前滤波数据,进入当检测到当前滤波数据中的预设状态时,获取当前滤波数据中预设状态之后的有效数据。
[0104] 在一个实施例中,获取滤波器输出的当前滤波数据,包括:获取波特率设为预设倍数的滤波器对当前滤波数据的IO状态进行采集并通过计数器计数的方式进行过滤后,输出的当前滤波数据。
[0105] 在一个实施例中,发送延迟时长与接收延迟时长大于任意一帧数据的时长,且发送延迟时长大于接收延迟时长。
[0106] 在一个实施例中,在发送端发送待滤波数据之前,处理器执行计算机程序时还实现以下步骤:连接电源,进行初始化操作,进入数据准备发送阶段。
[0107] 在一个实施例中,在当接收端捕获到下降沿时,接收滤波数据之前,处理器执行计算机程序时还实现以下步骤:连接电源,进行初始化操作,进入数据准备接收阶段。
[0108] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:当计数器小于或等于预设倍数且IO口状态为高电平状态时,计数器的数值增加预设特定数值;当计数器大于0且IO口状态为低电平状态时,计数器的数值减少预设特定数值。
[0109] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:当计数器的数值小于预设阈值时,滤波模块输入信号为第一状态信号;当计数器的数值小于预设阈值时,滤波模块输入信号为第二状态信号。
[0110] 在一个实施例中,在接收端获取滤波器输出的当前滤波数据之前,处理器执行计算机程序时还实现以下步骤:发送当前待滤波数据,滤波器对当前待滤波数据进行滤波后得到当前滤波数据;当当前待滤波完毕等待发送延迟时长后,发送下一待滤波数据。
[0111] 在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取滤波器输出的当前滤波数据;当检测到当前滤波数据中的预设状态时,获取当前滤波数据中预设状态之后的有效数据;当有效数据接收完毕后等待接收延迟时长,获取滤波器输出的下一滤波数据;将下一滤波数据作为当前滤波数据,进入当检测到当前滤波数据中的预设状态时,获取当前滤波数据中预设状态之后的有效数据。
[0112] 在一个实施例中,获取滤波器输出的当前滤波数据,包括:获取波特率设为预设倍数的滤波器对当前滤波数据的IO状态进行采集并通过计数器计数的方式进行过滤后,输出的当前滤波数据。
[0113] 在一个实施例中,发送延迟时长与接收延迟时长大于第一帧数据的时长,且发送延迟时长大于接收延迟时长。
[0114] 在一个实施例中,在发送端发送待滤波数据之前,计算机程序被处理器执行时还实现以下步骤:连接电源,进行初始化操作,进入数据准备发送阶段。
[0115] 在一个实施例中,当接收端捕获到下降沿时,接收滤波数据之前,计算机程序被处理器执行时还实现以下步骤:连接电源,进行初始化操作,进入数据准备接收阶段。
[0116] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:当计数器小于或等于预设倍数且IO口状态为高电平状态时,计数器的数值增加预设特定数值;当计数器大于0且IO口状态为低电平状态时,计数器的数值减少预设特定数值。
[0117] 在一个实施例中,在获取滤波器输出的当前滤波数据之前,计算机程序被处理器执行时还实现以下步骤:发送当前待滤波数据,滤波器对当前待滤波数据进行滤波后得到当前滤波数据,当当前待滤波完毕等待发送延迟时长后,发送下一待滤波数据。
[0118] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:当计数器的数值小于预设阈值时,滤波模块输出信号为第一状态信号;当计数器的数值小于预设阈值时,滤波模块输出信号为第二状态信号。
[0119] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0120] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0121] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。