本申請涉及電子測量領(lǐng)域,特別是涉及一種數(shù)字測頻中的數(shù)據(jù)處理方法和裝置。
背景技術(shù):
睡眠檢測儀可用于檢測用戶在睡眠過程中的身體狀態(tài),例如血氧濃度、脈搏速率、打鼾、胸腹運動等狀態(tài)。其中,胸腹運動的狀態(tài)是利用胸腹帶所圍面積的變化產(chǎn)生一個頻率變化的方波脈沖,通過測量脈沖的頻率獲取用戶的身體狀態(tài)。
通常,數(shù)字測量脈沖頻率的方法主要包括M法、T法和M/T法。其中,T法通常用于測量低頻信號,而M法在原理上有可能會產(chǎn)生±1個被測脈沖周期的誤差。由于睡眠檢測儀產(chǎn)生的待測頻率通常相對較高,且M/T法可以兼顧高低轉(zhuǎn)速,并且綜合了M法和T法的長處,因此,目前現(xiàn)常用M/T法實現(xiàn)脈沖頻率的測量。
然而,由于單片機是串行執(zhí)行指令的,因此,在使用M/T法測量脈沖頻率的過程中,如果在獲取當前脈沖個數(shù)之后,有一個脈沖的上升沿/下降沿到來,此時脈沖個數(shù)自動加1,但是這時獲取的當前觸發(fā)時間有可能還未發(fā)生變化,則會造成獲取的當前脈沖個數(shù)與獲取的當前觸發(fā)時間不對應,導致測量結(jié)果存在一個脈沖的誤差。
技術(shù)實現(xiàn)要素:
鑒于上述問題,提出了本申請實施例以便提供一種克服上述問題或者至少部分地解決上述問題的數(shù)字測頻中的數(shù)據(jù)處理方法和裝置,能夠提高測量脈沖頻率的準確性。
本申請實施例公開了一種數(shù)字測頻中的數(shù)據(jù)處理方法,所述方法包括:
連續(xù)兩次分別從計數(shù)器中讀取脈沖個數(shù),以及從寄存器中讀取觸發(fā)時間;其中,所述計數(shù)器用于對所述脈沖個數(shù)進行計數(shù),且在脈沖的上升沿或者下降沿到來時自動加1;所述觸發(fā)時間為在脈沖的上升沿或者下降沿到來時獲取的計時器時間;
通過對連續(xù)兩次讀取的脈沖個數(shù)和觸發(fā)時間進行比對,確定當前脈沖個數(shù)和當前觸發(fā)時間;
根據(jù)所述當前脈沖個數(shù)和當前觸發(fā)時間計算得到脈沖頻率。
另一方面,本申請實施例公開了一種數(shù)字測頻中的數(shù)據(jù)處理裝置,所述裝置包括:
數(shù)值讀取模塊,用于連續(xù)兩次分別從計數(shù)器中讀取脈沖個數(shù),以及從寄存器中讀取觸發(fā)時間;其中,所述計數(shù)器用于對所述脈沖個數(shù)進行計數(shù),且在脈沖的上升沿或者下降沿到來時自動加1;所述觸發(fā)時間為在脈沖的上升沿或者下降沿到來時獲取的計時器時間;
運算模塊,用于通過對連續(xù)兩次讀取的脈沖個數(shù)和觸發(fā)時間進行比對,確定當前脈沖個數(shù)和當前觸發(fā)時間;
頻率計算模塊,用于根據(jù)所述當前脈沖個數(shù)和當前觸發(fā)時間計算得到脈沖頻率。
本申請實施例包括以下優(yōu)點:
本申請實施例在測量脈沖頻率的過程中,連續(xù)兩次讀取計數(shù)器中的脈沖個數(shù)和寄存器中的觸發(fā)時間,通過對連續(xù)兩次讀取的脈沖個數(shù)和觸發(fā)時間進行比對,從兩次讀取的數(shù)值中確定正確的、相對應的當前脈沖個數(shù)和當前觸發(fā)時間,進而可以計算得到準確的脈沖頻率,提高脈沖測量的準確性。
附圖說明
圖1是本申請其中一個實施例的一種數(shù)字測頻中的數(shù)據(jù)處理方法的步驟流程圖;
圖2是本申請的一種上升沿觸發(fā)時刻示意圖;
圖3是本申請其中一個應用示例的一種數(shù)字測頻中的數(shù)據(jù)處理流程示意圖;
圖4是本申請其中一個實施例的一種數(shù)字測頻中的數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖。
具體實施方式
為使本申請的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式對本申請作進一步詳細的說明。
為了解決在現(xiàn)有的使用M/T法測量脈沖頻率的過程中,由于M/T法自身原理造成獲取的當前脈沖個數(shù)與獲取的當前觸發(fā)時間不對應,導致當前脈沖計數(shù)和當前觸發(fā)時間出現(xiàn)誤差,從而影響最終頻率的準確度。本申請實施例在使用M/T法測量脈沖頻率的過程中,根據(jù)預設的裁決機制,對連續(xù)兩次讀取的脈沖個數(shù)和觸發(fā)時間進行比對,從中選擇正確的讀取數(shù)據(jù),進而保證脈沖頻率測量的準確性。
參照圖1,示出了本申請其中一個實施例的一種數(shù)字測頻中的數(shù)據(jù)處理方法的步驟流程圖,所述方法具體可以包括:
步驟101、連續(xù)兩次分別從計數(shù)器中讀取脈沖個數(shù),以及從寄存器中讀取觸發(fā)時間;其中,所述計數(shù)器用于對所述脈沖個數(shù)進行計數(shù),且在脈沖的上升沿或者下降沿到來時自動加1;所述觸發(fā)時間為在脈沖的上升沿或者下降沿到來時獲取的計時器時間;
本申請實施例可適應于呼吸機中風機轉(zhuǎn)速的精確監(jiān)測。
在具體應用中,采集脈沖個數(shù)與脈沖到來的觸發(fā)時間的過程可由硬件完成,并且設定脈沖的上升沿/下降沿為觸發(fā)方式,為便于描述,本申請中均以脈沖的上升沿觸發(fā)為例。例如,可設置計數(shù)器用于對所述脈沖個數(shù)進行計數(shù),且在脈沖的上升沿到來時自動加1;以及設置計時器用于持續(xù)計時,并且在脈沖的上升沿到來、計數(shù)器自動加1的同時,捕獲所述計時器的時間,記為觸發(fā)時間,保存在寄存器中。
步驟102、通過對連續(xù)兩次讀取的脈沖個數(shù)和觸發(fā)時間進行比對,確定當前脈沖個數(shù)和當前觸發(fā)時間;
本申請實施例在測量過程中,連續(xù)兩次讀取計數(shù)器中的脈沖個數(shù)和寄存器中的觸發(fā)時間,通過對連續(xù)兩次讀取的脈沖個數(shù)和觸發(fā)時間進行比對,從中選擇出正確的、相對應的當前脈沖個數(shù)和當前觸發(fā)時間,以計算得到準確的脈沖頻率。
具體地,本申請實施例可以提供如下四種通過對連續(xù)兩次讀取的脈沖個數(shù)和觸發(fā)時間進行比對,確定當前脈沖個數(shù)和當前觸發(fā)時間的可選方案。
方案一
若第一次讀取的脈沖個數(shù)和第二次讀取的脈沖個數(shù)不相等,且第一次讀取的觸發(fā)時間和第二次讀取的觸發(fā)時間相等,則確定當前脈沖個數(shù)為第二次讀取的脈沖個數(shù),以及確定當前觸發(fā)時間為第一次讀取的觸發(fā)時間或者第二次讀取的觸發(fā)時間。
在本申請實施例中,假設第一次讀取的脈沖個數(shù)和觸發(fā)時間分別為n1、t1,第二次讀取的脈沖個數(shù)和觸發(fā)時間分別為n2、t2。在連續(xù)讀取上述n1、t1、n2、t2這四個數(shù)值的過程中,有可能發(fā)生如下情況:在從計數(shù)器中讀取n1的動作完成的同時或者完成之后,由于待測頻率較高,在將捕獲的計時器時間存入寄存器之前,有一個脈沖的上升沿到來,也即,在圖2中①所示的位置發(fā)生了上升沿觸發(fā),參照圖2,示出了本申請的一種上升沿觸發(fā)時刻示意圖。此時,計數(shù)器自動加1,但是寄存器中的觸發(fā)時間還未發(fā)生變化。例如,第一次讀取的n1為1000,t1為0.1s,第二次讀取的n2為1001,t2仍為0.1s,可以看出,1001為準確的當前脈沖個數(shù)。因此,在這種情況下,可以確定當前脈沖個數(shù)為第二次讀取的脈沖個數(shù)(n2),由于兩次讀取的觸發(fā)時間相等,因此,可以確定當前觸發(fā)時間為第一次讀取的觸發(fā)時間(t1)或者第二次讀取的觸發(fā)時間(t2)。
方案二
若第一次讀取的脈沖個數(shù)和第二次讀取的脈沖個數(shù)不相等,且第一次讀取的觸發(fā)時間和第二次讀取的觸發(fā)時間不相等,則確定當前脈沖個數(shù)為第一次讀取的脈沖個數(shù),以及確定當前觸發(fā)時間為第一次讀取的觸發(fā)時間;或者,確定當前脈沖個數(shù)為第二次讀取的脈沖個數(shù),以及確定當前觸發(fā)時間為第二次讀取的觸發(fā)時間。
在實際應用中,在連續(xù)讀取上述n1、t1、n2、t2這四個數(shù)值的過程中,還有可能發(fā)生如下情況:在圖2中②所示的位置發(fā)生上升沿觸發(fā),也即,在第一次從計數(shù)器中讀取n1、從寄存器中讀取t1的動作完成的同時或者完成之后,以及在第二次從計數(shù)器中讀取n2之前,有一個脈沖的上升沿到來。此時,計數(shù)器自動加1,并且將捕獲的計時器時間存入寄存器。例如,第一次讀取的n1為1000,t1為0.1s,第二次讀取的n2為1001,t2為0.13s。在這種情況下,第一次讀取的n1和t1之間是相對應的,并且第二次讀取的n2和t2之間也是相對應的。因此,在計算脈沖頻率時,取第一次讀取的n1、t1或者取第二次讀取的n2、t2都可以得到準確的脈沖頻率。
方案三
若第一次讀取的脈沖個數(shù)和第二次讀取的脈沖個數(shù)相等,且第一次讀取的觸發(fā)時間和第二次讀取的觸發(fā)時間不相等,則確定當前脈沖個數(shù)為第一次讀取的脈沖個數(shù)或者第二次讀取的脈沖個數(shù),以及確定當前觸發(fā)時間為第一次讀取的觸發(fā)時間。
在實際應用中,在連續(xù)讀取上述n1、t1、n2、t2這四個數(shù)值的過程中,還有可能發(fā)生如下情況:在圖2中③所示的位置發(fā)生上升沿觸發(fā),也即,在第一次從計數(shù)器中讀取n1、從寄存器中讀取t1、第二次從計數(shù)器中讀取n2的動作完成的同時或者完成之后,以及第二次從寄存器中讀取t2之前,有一個脈沖的上升沿到來。例如,第一次讀取的n1為1000,t1為0.1s,第二次讀取的n2為1000,此時有一個脈沖的上升沿到來,觸發(fā)計數(shù)器自動加1,并且將捕獲的計時器時間存入寄存器,則第二次讀取的t2為0.13s。在這種情況下,第一次讀取的n1和t1之間是相對應的,而第二次讀取的n2和t2之間不對應。因此,可以確定當前脈沖個數(shù)為第一次讀取的脈沖個數(shù)(n1)或者第二次讀取的脈沖個數(shù)(n2),以及確定當前觸發(fā)時間為第一次讀取的觸發(fā)時間(t1)。
方案四
若第一次讀取的脈沖個數(shù)和第二次讀取的脈沖個數(shù)相等,且第一次讀取的觸發(fā)時間和第二次讀取的觸發(fā)時間相等,則確定當前脈沖個數(shù)為第一次讀取的脈沖個數(shù)或者第二次讀取的脈沖個數(shù),以及確定當前觸發(fā)時間為第一次讀取的觸發(fā)時間或者第二次讀取的觸發(fā)時間。
在實際應用中,在連續(xù)讀取上述n1、t1、n2、t2這四個數(shù)值的過程中,還有可能發(fā)生如下情況:在圖2中④所示的位置發(fā)生上升沿觸發(fā),也即,在在連續(xù)讀取上述n1、t1、n2、t2這四個數(shù)值的動作完成的同時或者完成之后,有一個脈沖的上升沿到來。在這種情況下,由于在連續(xù)讀取上述n1、t1、n2、t2這四個數(shù)值的過程中,沒有脈沖的上升沿到來,因此,在讀取四個數(shù)值的過程中,不會觸發(fā)計數(shù)器加1操作,以及捕獲計時器時間存儲到寄存器的操作,因此,n1必然等于n2,并且t1等于t2。在這種情況下,第一次讀取的n1和t1之間是相對應的,第二次讀取的n2和t2之間也是相對應的,在計算脈沖頻率時,取第一次讀取的n1、t1或者取第二次讀取的n2、t2都可以得到準確的脈沖頻率。
參照表1,示出了本申請上述四種方案確定當前脈沖個數(shù)和當前觸發(fā)時間的具體示意。其中,n為確定的當前脈沖個數(shù),t為確定的當前觸發(fā)時間。
表1
步驟103、根據(jù)所述當前脈沖個數(shù)和當前觸發(fā)時間計算得到脈沖頻率。
在本申請實施例中,在連續(xù)兩次讀取計數(shù)器中的脈沖個數(shù)和寄存器中的觸發(fā)時間n1、t1、n2、t2之后,通過對n1、t1、n2、t2進行比對,可以按照表1所示的確定方式,從n1、t1、n2、t2中選擇出正確的、相對應的當前脈沖個數(shù)(n)和當前觸發(fā)時間(t),以計算得到準確的脈沖頻率。
具體地,所述根據(jù)所述當前測量的脈沖個數(shù)和當前的觸發(fā)時間計算得到脈沖頻率的步驟,可以包括:
步驟S11、獲取上一次脈沖個數(shù)和上一次觸發(fā)時間;
步驟S12、確定當前脈沖個數(shù)與上一次脈沖個數(shù)的第一差值;
步驟S13、確定當前觸發(fā)時間與上一次觸發(fā)時間的第二差值;
步驟S14、通過計算所述第一差值與第二差值的比值,得到脈沖頻率。
其中,上一次脈沖個數(shù)記為nbefore,上一次觸發(fā)時間記為tbefore,則可以通過如下公式計算得到脈沖頻率f:
可以理解,在實際應用中,測量脈沖頻率的過程可以是一個持續(xù)測量的過程,計數(shù)器中的脈沖個數(shù)以及寄存器中的觸發(fā)時間不斷累加,通過兩次獲取的脈沖個數(shù)的差值與觸發(fā)時間的差值的比值可以計算得到脈沖頻率,其中,上述nbefore和tbefore可以采用上述確定n和t的方式得到。
參照圖3,示出了本申請其中一個應用示例的一種數(shù)字測頻中的數(shù)據(jù)處理流程示意圖,具體可以包括:
步驟S31、從計數(shù)器中讀取脈沖個數(shù)n1,從寄存器中讀取觸發(fā)時間t1;
步驟S32、從計數(shù)器中讀取脈沖個數(shù)n2,從寄存器中讀取觸發(fā)時間t2;
步驟S33、分別比較n1和n2,以及t1和t2是否相等;當n1等于n2且t1等于t2,或者,n1不等于n2且t1不等于t2時,執(zhí)行步驟S34;當n1不等于n2且t1等于t2,或者,n1等于n2且t1不等于t2時,執(zhí)行步驟S35;
步驟S34、針對圖2中③、④位置做統(tǒng)一處理,確定n等于n1,t等于t1;或者,確定n等于n2,t等于t2;執(zhí)行步驟S36;
步驟S35、確定n等于n2,t等于t1,執(zhí)行步驟S36;
步驟S36、根據(jù)公式計算得到脈沖頻率;
步驟S37、將當前脈沖個數(shù)n與當前觸發(fā)時間t賦值給nbefore和tbefore,用于下次求頻。
綜上,本申請實施例在測量脈沖頻率的過程中,連續(xù)兩次讀取計數(shù)器中的脈沖個數(shù)和寄存器中的觸發(fā)時間,通過對連續(xù)兩次讀取的脈沖個數(shù)和觸發(fā)時間進行比對,從兩次讀取的數(shù)值中確定正確的、相對應的當前脈沖個數(shù)和當前觸發(fā)時間,進而可以計算得到準確的脈沖頻率,提高脈沖測量的準確性。
需要說明的是,對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應該知悉,本申請實施例并不受所描述的動作順序的限制,因為依據(jù)本申請實施例,某些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作并不一定是本申請實施例所必須的。
參照圖4,示出了本申請其中一個實施例的一種數(shù)字測頻中的數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖。在本申請實施例中,所述裝置具體可以包括:
數(shù)值讀取模塊401,用于連續(xù)兩次分別從計數(shù)器中讀取脈沖個數(shù),以及從寄存器中讀取觸發(fā)時間;其中,所述計數(shù)器用于對所述脈沖個數(shù)進行計數(shù),且在脈沖的上升沿或者下降沿到來時自動加1;所述觸發(fā)時間為在脈沖的上升沿或者下降沿到來時獲取的計時器時間;
運算模塊402,用于通過對連續(xù)兩次讀取的脈沖個數(shù)和觸發(fā)時間進行比對,確定當前脈沖個數(shù)和當前觸發(fā)時間;
頻率計算模塊403,用于根據(jù)所述當前脈沖個數(shù)和當前觸發(fā)時間計算得到脈沖頻率。
在本申請的一種可選實施例中,所述運算模塊402具體用于若第一次讀取的脈沖個數(shù)和第二次讀取的脈沖個數(shù)不相等,且第一次讀取的觸發(fā)時間和第二次讀取的觸發(fā)時間相等,則確定當前脈沖個數(shù)為第二次讀取的脈沖個數(shù),以及確定當前觸發(fā)時間為第一次讀取的觸發(fā)時間或者第二次讀取的觸發(fā)時間。
在本申請的另一種可選實施例中,所述運算模塊402具體還用于若第一次讀取的脈沖個數(shù)和第二次讀取的脈沖個數(shù)不相等,且第一次讀取的觸發(fā)時間和第二次讀取的觸發(fā)時間不相等,則確定當前脈沖個數(shù)為第一次讀取的脈沖個數(shù),以及確定當前觸發(fā)時間為第一次讀取的觸發(fā)時間;或者,確定當前脈沖個數(shù)為第二次讀取的脈沖個數(shù),以及確定當前觸發(fā)時間為第二次讀取的觸發(fā)時間。
在本申請的又一種可選實施例中,所述運算模塊402具體還用于若第一次讀取的脈沖個數(shù)和第二次讀取的脈沖個數(shù)相等,且第一次讀取的觸發(fā)時間和第二次讀取的觸發(fā)時間不相等,則確定當前脈沖個數(shù)為第一次讀取的脈沖個數(shù)或者第二次讀取的脈沖個數(shù),以及確定當前觸發(fā)時間為第一次讀取的觸發(fā)時間。
在本申請的再一種可選實施例中,所述運算模塊402具體還用于若第一次讀取的脈沖個數(shù)和第二次讀取的脈沖個數(shù)相等,且第一次讀取的觸發(fā)時間和第二次讀取的觸發(fā)時間相等,則確定當前脈沖個數(shù)為第一次讀取的脈沖個數(shù)或者第二次讀取的脈沖個數(shù),以及確定當前觸發(fā)時間為第一次讀取的觸發(fā)時間或者第二次讀取的觸發(fā)時間。
在本申請的再一種可選實施例中,所述頻率計算模塊,具體可以包括:
獲取子模塊,用于獲取上一次脈沖個數(shù)和上一次觸發(fā)時間;
第一差值計算子模塊,用于確定當前脈沖個數(shù)與上一次脈沖個數(shù)的第一差值;
第二差值計算子模塊,用于確定當前觸發(fā)時間與上一次觸發(fā)時間的第二差值;
頻率計算子模塊,用于通過計算所述第一差值與第二差值的比值,得到脈沖頻率。
本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。
以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上。可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本申請的其它實施方案。本申請旨在涵蓋本申請的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本申請的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本申請的真正范圍和精神由下面的權(quán)利要求指出。
應當理解的是,本申請并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進行各種修改和改變。本申請的范圍僅由所附的權(quán)利要求來限制
以上所述僅為本申請的較佳實施例,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本申請的保護范圍之內(nèi)。
以上對本申請所提供的一種數(shù)字測頻中的數(shù)據(jù)處理方法和裝置,進行了詳細介紹,本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本申請的限制。