一种GPIO防抖动控制方法、装置、设备及介质制造方法及图纸

技术编号:38554486 阅读:9 留言:0更新日期:2023-08-22 20:59
本发明专利技术涉及信号处理领域,尤其涉及一种GPIO防抖动控制方法、装置、设备及介质。所述方法包括按照外部数据进入先后顺序进行边沿检测;基于检测到的边沿和预设写入规则将外部数据分段缓存到多个RAM,预设写入规则包括将首个边沿之前的一段数据写入一个RAM,以及将任意三个相邻边沿之间的两段数据写入两个不同RAM;按照数据段写入多个RAM的先后顺序读出RAM中的数据,并依次对每段数据进行计数统计以得到持续时长;基于持续时长和预设防抖值判断每段数据是否为抖动数据并进行恢复;将恢复数据和非抖动数据段按照先后顺序写入第一寄存器以得到去抖动外部数据。本发明专利技术的方案能准确滤波防抖,具有较高的处理效率。具有较高的处理效率。具有较高的处理效率。

【技术实现步骤摘要】
一种GPIO防抖动控制方法、装置、设备及介质


[0001]本专利技术涉及信号处理领域,尤其涉及一种GPIO防抖动控制方法、装置、设备及介质。

技术介绍

[0002]通用型之输入输出(General

purpose input/output,简称GPIO)作为芯片中的常见输入输出(Input Output,简称IO),使用非常广泛,具有高度的灵活性和通用性。而GPIO中的一项重要功能就是debounce功能,即防抖功能。数据由外部进入GPIO,然后经过debounce后才可以正常使用,否则容易采样到错误的数据,因此对于GPIO控制器的debounce功能设计就十分重要,需要做到实时、准确的滤波防抖,不能丢数据,也不能补数据。
[0003]目前,GPIO debounce功能的设计主要采用计数器的方法实现,当检测到上升沿或者下降沿时,计数器启动,当计数器的值大于设定的防抖值时,则认为这个信号为正常的数据信号,反之则认为是抖动毛刺,需要滤除。举例说明,当设定的防抖值设置为3时,当计数器计数大于3纳秒时,则认为是正常的信号,输出当前信号,而小于3纳秒的值,均认为是抖动,需要滤掉。虽然,该方法简单易实现,仅通过一个边沿检测器和一个计数器即可实现初步的debounce功能,但是同样存在缺点。当信号在传输过程中,如果突然改变设定的防抖值,则会因为数据处理不及时,往往在防抖值变化的地方出现丢失数据或者无法采样的问题。

技术实现思路

[0004]有鉴于此,有必要针对以上技术问题,提供一种GPIO防抖动控制方法、装置、设备及介质。
[0005]根据本专利技术的第一方面,提供了一种GPIO防抖动控制方法,所述方法包括:
[0006]响应于外部数据进入GPIO,则按照数据进入先后顺序对所述外部数据进行边沿检测;
[0007]基于检测到的边沿和预设写入规则将外部数据分段缓存到多个RAM,其中,所述预设写入规则包括将首个边沿之前的一段数据写入多个RAM中的一个,以及将任意三个相邻边沿之间的两段数据写入两个不同RAM;
[0008]按照数据段写入多个RAM的先后顺序读出RAM中的数据,并依次对每段数据进行计数统计以得到持续时长;
[0009]基于所述持续时长和预设防抖值判断每段数据是否为抖动数据,并对抖动数据段进行恢复以得到恢复数据;
[0010]将抖动数据段的恢复数据和非抖动数据段按照先后顺序写入第一寄存器,以得到去抖动外部数据。
[0011]在一些实施例中,所述方法还包括:
[0012]通过APB总线将所述预设防抖值写入第二寄存器。
[0013]在一些实施例中,所述方法还包括:
[0014]响应于需要调整所述预设防抖值时,则通过APB总线修改所述第二寄存器中的数值。
[0015]在一些实施例中,所述方法还包括:
[0016]响应于在某段数据进行边沿检测过程中检测到所述第二寄存器被修改,则在对某段数据执行所述基于所述持续时长和预设防抖值判断每段数据是否为抖动数据的步骤时,预设防抖值使用第二寄存器修改前的数值;以及
[0017]对某段数据之后的下段数据执行所述基于所述持续时长和预设防抖值判断每段数据是否为抖动数据的步骤时,预设防抖值使用第二寄存器修改后的数值。
[0018]在一些实施例中,所述基于所述持续时长和预设防抖值判断每段数据是否为抖动数据的步骤,包括:
[0019]将每段数据的持续时长与所述预设防抖值进行比较;
[0020]响应于某段数据对应的持续时长大于等于所述预设防抖值,则确认某段数据为非抖动数据;
[0021]响应于某段数据对应的持续时小于所述预设防抖值,则确认某段数据为抖动数据。
[0022]在一些实施例中,RAM的数量为两个,一个RAM用于缓存低电平的数据段,另一个RAM用于缓存高电平的数据段。
[0023]在一些实施例中,所述预设写入规则还包括:
[0024]响应于某个RAM在写满时仍未检测到下一边沿,则采用覆盖写入方式将数据写入某个RAM,并直接将最后一次检测的边沿以后的数据至下一边沿之前的数据均视为非抖动数据写入第一寄存器,以及下一边沿到来时清空某个RAM。
[0025]根据本专利技术的第二方面,提供了一种GPIO防抖动控制装置,所述装置包括:
[0026]边沿检测模块,配置用于响应于外部数据进入GPIO,则按照数据进入先后顺序对所述外部数据进行边沿检测;
[0027]缓存模块,配置用于基于检测到的边沿和预设写入规则将外部数据分段缓存到多个RAM,其中,所述预设写入规则包括将首个边沿之前的一段数据写入多个RAM中的一个,以及将任意三个相邻边沿之间的两段数据写入两个不同RAM;
[0028]计数模块,配置用于按照数据段写入多个RAM的先后顺序读出RAM中的数据,并依次对每段数据进行计数统计以得到持续时长;
[0029]判断模块,配置用于基于所述持续时长和预设防抖值判断每段数据是否为抖动数据,并对抖动数据段进行恢复以得到恢复数据;
[0030]写入模块,配置用于将抖动数据段的恢复数据和非抖动数据段按照先后顺序写入第一寄存器,以得到去抖动外部数据。
[0031]根据本专利技术的第三方面,还提供了一种计算机设备,该计算机设备包括:
[0032]至少一个处理器;以及
[0033]存储器,存储器存储有可在处理器上运行的计算机程序,处理器执行程序时执行前述的GPIO防抖动控制方法。
[0034]根据本专利技术的第四方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时执行前述的GPIO防抖动控制方法。
[0035]上述一种GPIO防抖动控制方法,通过对进入到GPIO的外部数据进行边沿检测,基于检测到的边沿和预设写入规则将外部数据分段缓存到多个RAM,从而实现将数据分段缓存到不同的RAM,多个RAM读写独立不会造成数据堵塞,以及实现分段判断数据是否为抖动数据,达到缓存过程与判断过程可并行执行,不仅能够准确对外部数据进行滤波防抖,而且具有较高的处理效率。
[0036]此外,本专利技术还提供了一种GPIO防抖动控制装置、一种计算机设备和一种计算机可读存储介质,同样能实现上述技术效果,这里不再赘述。
附图说明
[0037]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
[0038]图1为本专利技术一个实施例提供的一种GPIO防抖动控制方法的流程图;
[0039]图2为本专利技术另一个实施例提供的采用两个RAM实现GPIO防抖动控制方法的架构示意图;
[0040]图3为本专利技术一个实施例提供的采用本专利技术方法对某GPIO外部数据本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种GPIO防抖动控制方法,其特征在于,所述方法包括:响应于外部数据进入GPIO,则按照数据进入先后顺序对所述外部数据进行边沿检测;基于检测到的边沿和预设写入规则将外部数据分段缓存到多个RAM,其中,所述预设写入规则包括将首个边沿之前的一段数据写入多个RAM中的一个,以及将任意三个相邻边沿之间的两段数据写入两个不同RAM;按照数据段写入多个RAM的先后顺序读出RAM中的数据,并依次对每段数据进行计数统计以得到持续时长;基于所述持续时长和预设防抖值判断每段数据是否为抖动数据,并对抖动数据段进行恢复以得到恢复数据;将抖动数据段的恢复数据和非抖动数据段按照先后顺序写入第一寄存器,以得到去抖动外部数据。2.根据权利要求1所述的GPIO防抖动控制方法,其特征在于,所述方法还包括:通过APB总线将所述预设防抖值写入第二寄存器。3.根据权利要求2所述的GPIO防抖动控制方法,其特征在于,所述方法还包括:响应于需要调整所述预设防抖值时,则通过APB总线修改所述第二寄存器中的数值。4.根据权利要求3所述的GPIO防抖动控制方法,其特征在于,所述方法还包括:响应于在某段数据进行边沿检测过程中检测到所述第二寄存器被修改,则在对某段数据执行所述基于所述持续时长和预设防抖值判断每段数据是否为抖动数据的步骤时,预设防抖值使用第二寄存器修改前的数值;以及对某段数据之后的下段数据执行所述基于所述持续时长和预设防抖值判断每段数据是否为抖动数据的步骤时,预设防抖值使用第二寄存器修改后的数值。5.根据权利要求1所述的GPIO防抖动控制方法,其特征在于,所述基于所述持续时长和预设防抖值判断每段数据是否为抖动数据的步骤,包括:将每段数据的持续时长与所述预设防抖值进行比较;响应于某段数据对应的持续时长大于等于所述预设防抖值,则确认某段数据为非抖动数据;响应于某段数据对应的持续时小于所述预设防抖...

【专利技术属性】
技术研发人员:庄戌堃
申请(专利权)人:山东云海国创云计算装备产业创新中心有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1