脉冲信号边沿测量方法及装置、存储介质及微控制单元与流程

    专利查询2022-07-07  96



    1.本技术涉及控制技术领域,尤其涉及一种脉冲信号边沿测量方法及装置、存储介质及微控制单元。


    背景技术:

    2.mcu(microcontroller unit,微控制单元)又称单片微型计算机,是把中央处理器、内存、定时器、a/d转换、串口等功能模块集成在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制,已广泛应用于手机、pc外围、汽车电子、工业控制系统等领域。
    3.mcu程序具有顺序执行的特点,执行完一条语句才可以执行下一条语句,每条语句的执行需要耗费一定的时间。信号竞争是指同一信号经过两条或两条以上物理途径到达输出端时,由于每条途径延迟时间不同,达到输出端的时间就有先有后,这种现象称为竞争。具有顺序执行的mcu程序对具有竞争特征的两路信号进行采样和读取,会偶发性带来所读取的数据对不匹配的问题。


    技术实现要素:

    4.本技术提供一种脉冲信号边沿测量方法及装置、存储介质及微控制单元,以解决mcu程序对于具有竞争特点的两路信号进行采样和读取所带来的数据对不匹配的问题。
    5.本技术一方面提供一种脉冲信号边沿测量方法,所述方法包括:
    6.至少二次读取捕获寄存器,以得到第一输入信号的第一脉冲计数值和第二输入信号的第一时间计数值、第一输入信号的第二脉冲计数值和第二输入信号的第二时间计数值;
    7.将所述第一脉冲计数值与所述第二脉冲计数值、所述第一时间计数值与所述第二时间计数值分别进行比较,根据比较结果判断得到的脉冲计数值和时间计数值是否为正确的数据对;
    8.所述第一输入信号与所述第二输入信号由同一脉冲信号经由两条不同线路得到。
    9.本技术另一方面提供一种存储介质,该存储介质上存储有脉冲信号边沿测量程序,该脉冲信号边沿测量程序被处理器运行时执行所述的脉冲信号边沿测量方法。
    10.本技术另一方面还提供一种脉冲信号边沿测量装置,所述装置包括:
    11.读取模块,用于至少二次读取捕获寄存器,以得到第一输入信号的第一脉冲计数值和第二输入信号的第一时间计数值、第一输入信号的第二脉冲计数值和第二输入信号的第二时间计数值;
    12.比较判断模块,用于将所述第一脉冲计数值与所述第二脉冲计数值、所述第一时间计数值与所述第二时间计数值分别进行比较,根据比较结果判断得到的脉冲计数值和时间计数值是否为正确的数据对。
    13.本技术另一方面还提供一种微控制单元,其特征在于,包括捕获寄存器、以及所述
    的脉冲信号边沿测量装置。
    14.本技术提供的脉冲信号边沿测量方法及装置、存储介质及微控制单元,通过多次读取得到的脉冲计数值和时间计数值,并进行比较判断脉冲计数值和时间计数值是否为正确的数据对;解决了mcu程序对于具有竞争特点的两路信号进行采样和读取所带来的数据对不匹配的问题,提高mcu采样和读取的正确性。
    附图说明
    15.图1为本技术实施例提供的微控制单元示意图;
    16.图2为本技术实施例提供的原始信号、具有竞争特征的两路信号的一种读取示意图;
    17.图3为本技术实施例提供的原始信号、具有竞争特征的两路信号的另一种读取示意图;
    18.图4为本技术实施例提供的原始信号、具有竞争特征的两路信号的另一种读取示意图;
    19.图5为本技术实施例提供的脉冲信号边沿测量方法示意图;
    20.图6为本技术实施例提供的脉冲信号边沿测量方法装置示意图;
    21.图7为本技术实施例提供的原始信号、具有竞争特征的两路信号的又一种读取示意图;
    22.图8为本技术实施例提供的脉冲信号边沿测量过程示意图。
    23.本技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
    具体实施方式
    24.为了使本技术所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
    25.在本技术的描述中,需要理解的是,术语中“中心”、“上”、“下”、“前”、“后”、“左”、“右”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本技术的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
    26.如图1所示的微控制单元示意图,原始信号a经由两条不同的线路阻抗z'和z"后的信号分别为a'和a",这两个信号分别连接至mcu的捕获接口1和捕获接口2。mcu内部有两个定时器,分别为定时器1和定时器2。定时器的位宽为32bit,但不限于32bit,也可以为8bit或者16bit等任意比特宽度。
    27.定时器1用于脉冲个数计数及脉冲边沿捕获:即每来一个脉冲时,则计数器1的计数值增1(在其它示例中可以递减1);当输入信号a'发生边沿跳变时(在本示例中为上升沿,在其它示例中可以为下降沿),脉冲计数值被锁存至捕获寄存器1中。当mcu的读取程序调度来临时,程序读取捕获寄存器1的数值并保存至内部ram的缓冲区(在本示例中为buff[0][...])中。如以下语句1所示,buff[0][0]=tim1-》ccr1。所述脉冲计数值是指脉冲信号发
    生边沿跳变的计数值。
    [0028]
    定时器2用于时间计数及脉冲边沿捕获:即每来一个时钟脉冲(clk)时,则计数器2的计数值增1(在其它示例中可以递减1);当输入信号a"发生边沿跳变时(在本示例中为上升沿,在其它示例中可以为下降沿),时钟计数值被锁存至捕获寄存器2中。当mcu的读取程序调度来临时,程序读取捕获寄存器2的数值并保存至内部ram的缓冲区(在本示例中为buff[1][...])中。如以下语句2所示,buff[1][0]=tim2-》ccr1。所述时间计数值是指脉冲信号发生边沿跳变时对应的时间计数值。
    [0029]
    以图1中z'和z"都为0时为例,由于mcu程序是顺序执行的,所以两条读取捕获寄存器的语句之间(语句1和语句2)存在一定的延时(tcode),执行的时间点分别为tn和t
    n 1
    。如图2所示。当脉冲的跳变沿正好发生在两条语句之间时,在tn时刻,定时器1的捕获寄存器1的内容为t
    capk-2
    时刻捕获到a'信号跳变时对应的脉冲计数值;在t
    n 1
    时刻定时器2的捕获寄存器2的内容为t
    capk
    时刻捕获到a"信号跳变时对应的时钟计数值。因此,在tn时刻读取到的脉冲计数值和t
    n 1
    时刻读取到的时钟计数值并不是对应同一个原始信号a所在的同一个边沿,造成脉冲计数值和时间计数值的数据对不匹配。
    [0030]
    现实情况往往是z'和z"不为0,此时将造成a'和a"信号之间存在一定的时间延迟(t
    shift
    )。当t
    shift
    小于t
    code
    时,如图3所示,tn时刻程序读取到的脉冲计数值为t
    capk-2
    时刻对应的脉冲计数值;t
    n 1
    时刻程序读取到的时钟计数值为t
    capk 1
    时刻对应的时钟计数值。此时数据对不匹配,测量结果发生错误。当t
    shift
    大于t
    code
    时,如图4所示,tn时刻程序读取到的脉冲计数值为t
    capk
    时刻对应的脉冲计数值,t
    n 1
    时刻程序读取到的时钟计数值为t
    capk-1
    时刻对应的时钟计数值。此时数据对不匹配,测量结果将发生错误。
    [0031]
    为了避免上述测量结果发生错误的问题,如图5所示,本技术一实施例提供一种脉冲信号边沿测量方法,所述方法包括:
    [0032]
    步骤s11、至少二次读取捕获寄存器,以得到第一输入信号的第一脉冲计数值和第二输入信号的第一时间计数值、第一输入信号的第二脉冲计数值和第二输入信号的第二时间计数值;
    [0033]
    即读取捕获寄存器1,得到计数器1的脉冲计数值;读取捕获寄存器2,得到计数器2的时间计数值。
    [0034]
    在一示例中,所述至少二次读取捕获寄存器,包括:
    [0035]
    在相邻两次读取捕获寄存器期间,增加预设延迟时间。
    [0036]
    通过在相邻的读取语句间增加延迟,可避免读取的耗时小于信号延时所造成的测量错误。
    [0037]
    在一示例中,所述至少二次读取捕获寄存器,包括:
    [0038]
    判断读取捕获寄存器的次数是否超过预设次数阈值;
    [0039]
    若读取捕获寄存器的次数没有超过预设次数阈值,则可再次读取捕获寄存器;否则结束本次测量。
    [0040]
    预设次数阈值在此不作限定,一般的可以为4次。
    [0041]
    步骤s12、将所述第一脉冲计数值与所述第二脉冲计数值、所述第一时间计数值与所述第二时间计数值分别进行比较,根据比较结果判断得到的脉冲计数值和时间计数值是否为正确的数据对;所述第一输入信号与所述第二输入信号由同一脉冲信号经由两条不同
    线路得到。
    [0042]
    在一示例中,所述根据比较结果判断得到的脉冲计数值和时间计数值是否为正确的数据对,包括:
    [0043]
    若所述第一脉冲计数值与所述第二脉冲计数值不同,和/或,所述第一时间计数值与所述第二时间计数值不同,则得到的脉冲计数值和时间计数值不是正确的数据对;
    [0044]
    若所述第一脉冲计数值与所述第二脉冲计数值相同且所述第一时间计数值与所述第二时间计数值相同,则得到的脉冲计数值和时间计数值为正确的数据对。
    [0045]
    在一示例中,所述根据比较结果判断得到的脉冲计数值和时间计数值是否为正确的数据对之后,还包括:
    [0046]
    在得到的脉冲计数值和时间计数值不是正确的数据对时,继续读取捕获寄存器,以得到第三脉冲计数值和第三时间计数值;
    [0047]
    将所述第二脉冲计数值与所述第三脉冲计数值、所述第二时间计数值与所述第三时间计数值分别进行比较,根据比较结果再次判断得到的脉冲计数值和时间计数值是否为正确的数据对。
    [0048]
    在一示例中,所述根据比较结果判断得到的脉冲计数值和时间计数值是否为正确的数据对,之后还包括:
    [0049]
    在得到的脉冲计数值和时间计数值为正确的数据对时,将得到的脉冲计数值和时间计数值保持至存储器中。
    [0050]
    本技术另一实施例提供一种存储介质,该存储介质上存储有脉冲信号边沿测量程序,该脉冲信号边沿测量程序被处理器运行时执行所述的脉冲信号边沿测量方法。
    [0051]
    如图6所示,本技术另一实施例还提供一种脉冲信号边沿测量装置,所述装置包括:
    [0052]
    读取模块21,用于至少二次读取捕获寄存器,以得到第一输入信号的第一脉冲计数值和第二输入信号的第一时间计数值、第一输入信号的第二脉冲计数值和第二输入信号的第二时间计数值;
    [0053]
    比较判断模块22,用于将所述第一脉冲计数值与所述第二脉冲计数值、所述第一时间计数值与所述第二时间计数值分别进行比较,根据比较结果判断得到的脉冲计数值和时间计数值是否为正确的数据对;所述第一输入信号与所述第二输入信号由同一脉冲信号经由两条不同线路得到。
    [0054]
    以下结合图7-图8进行说明:
    [0055]
    如图7所示,在本示例中进行4次重复读取,第1次读取的时刻为t
    n-2
    和t
    n-1
    ,第2次读取的时刻为tn和t
    n 1
    ,第3次读取的时刻为t
    n 2
    和t
    n 3
    ,第4次读取的时刻为t
    n 4
    和t
    n 5

    [0056]
    如图8所示。在4次重复读取后,提取正确的数据对的方法是:第1次读取捕获寄存器1的数据至buff[0][0],并读取捕获寄存器2的数据至buff[1][0];此时,变量i赋值为1。
    [0057]
    延时t
    delay
    后,第2次读取捕获寄存器1的数据至buff[0][i],并读取捕获寄存器2的数据至buff[1][i]。
    [0058]
    若buff[0][i]等于buff[0][i-1],且buff[1][i]等于buff[1][i-1],则保存buff[0][i]和buff[1][i]。否则,继续读取捕获寄存器1和捕获寄存器2的数据。若i大于4,即读取次数超过4次,则结束本次测量。
    [0059]
    综上可知,从第1次读取到的数据对与第2次读取到的数据对比较,如果相同,则认为这两次读取到的数据对是正确的;反之如果不同,则继续比较第2次读取到的数据对于第3次读取到的数据对;依次类推,直到遇到相邻的两次结果相同。如果这次读取的正确数据对与上次读取的正确数据对不相同,则认为检测到了新的脉冲边沿,将这次的正确数据对推送入内部ram的环形缓冲区,用户代码利用环形缓冲区的数据进行一些特定功能的实现,比如增量式编码器的转速计算。为了避免4次读取的耗时小于信号延时t
    shift
    所造成的测量错误,相邻的读取间还需增加延迟t
    delay

    [0060]
    需要说明的是,比较数据对的方式可以为按读取顺序从前往后开始比对,也可以从后往前开始比对。
    [0061]
    以上参照附图说明了本技术的优选实施例,并非因此局限本技术的权利范围。本领域技术人员不脱离本技术的范围和实质内所作的任何修改、等同替换和改进,均应在本技术的权利范围之内。
    转载请注明原文地址:https://tc.8miu.com/read-1571.html

    最新回复(0)