航空工業西安航空計算技術研究所 王雅薈 周 驍 孫旭升
航空發動機的燃油流量值主要用于計算飛機的燃油油耗,具有重要意義。當燃油流量傳感器流過燃油時,會驅動鼓輪和葉輪,產生兩個脈沖信號,通過硬件電路轉換成上升沿通過采集兩者的相位差,并通過固定公式進行轉換,能夠獲取燃油流量值。流量采集基于一種流量傳感器的特性,提出了一種基于處理器內部的DMA雙數據流,巧妙得實現了同步采集三線制流量傳感器的START與STOP之間的相位差的功能,同時具備準確識別流量采集丟失的功能,能夠實現超時故障檢測功能。
流量信號的脈沖特性為1Hz(1s)~8Hz(125ms)。
可編程高性能控制定時器的主要架構是一個16位的計數器以及與它相關聯的自動加載寄存器。定時器可以計數加法,計數減法。定時器,配有自動加載寄存器和預分頻寄存器,寄存器的讀/寫都可以通過軟件來操作。
自動加載寄存器可以被預加載。可以通過讀/寫自動加載寄存器已獲取預加載寄存器的數值。如圖1所示。
圖1 自動加載寄存器
選用高級控制定時器(TIM1)包含一個16位自動重載計數器,該計數器可由可編程預分頻器驅動。TIM1與用來計算STOP頻率的定時器(TIM8)完全獨立,不共享任何資源。
TIM1主要模塊是一個16位計數器以及相關的自動重載寄存器。計數器的時鐘可通過預分頻器進行分頻。使用計數器的遞增功能,其時鐘可通過預分頻器進行分頻。
計數器(TIMx_CNT)、預分頻器寄存器(TIMx_PSC)以及自動重載寄存器(TIMx_ARR)自動重載寄存器和預分頻器寄存器可通過軟件進行讀寫。
首先配置計數器的時鐘頻率。通過HSE時鐘源選擇系統時鐘源為輸入時鐘,配置為25MHz。通過配置相應寄存器的對應分頻位,將APB2即定時器的總線頻率為200MHz,如圖2所示。
圖2 APB2的定時器總線時鐘
配置流量START的采集通過TIM1_CH1,STOP的采集通過TIM2_CH2。在時鐘的總線頻率為200MHz的前提下,頻率采集函數的調用周期為40ms,采集超時時間為1010ms,當超過這個時間認為頻率輸入為0,最終值取4次采集頻率的平均值。超時使用的計數器,設置計算頻率的模式,采用間接模式,采集結果就是信號的周期。
配置TIM1的模式,TIM1的觸發源為TI1FP1,即連接通道1的START定時器的16位預分頻值為31249,自動加載寄存器的16位的值為65536,內部時鐘的分頻器(CKD)為4,即定時器時鐘(CK_INT)頻率與數字濾波器所使用的采用時鐘(ETR、TIx)之間的分頻比。tDTS=4×tCK_INT。并通過設置TIMx_EGR寄存器中的UG位用作觸發輸出(TRGO)。
采用捕獲/比較通道核心在于一個捕獲/比較寄存器(包括一個影子寄存器)、一個捕獲輸入階段(包括一個數字濾波器)和一個輸出階段構建而成。輸入階段對應的TIx輸入進行采集,生成一個濾波后的信號TIxF,經過帶有極性選擇功能的邊沿檢測器生成一個信號(TIxFPx),當做捕獲命令時,該信號先進行分頻,然后再進入捕獲寄存器。
在輸入捕獲模式下,當相應的ICx信號檢測到跳變沿后。使用捕獲寄存器(TIMx_CCRx)來鎖存計數器。發生捕獲事件時,會將相應的CCXIF標識(TIMx_SR寄存器)置1,并發送DMA請求。配置TIM1的通道1的外部觸發極性(ETP)為上升沿觸發模式。
根據連接到定時器的信號,對所需的輸入濾波時間進行編程。當信號變化時,輸入信號最多在5個內部時鐘周期內發生抖動。程序配置成6,即檢測到有6個新電平的連續采樣(以fDTS頻率采樣)后,當檢測到TIM1的通道1的上升沿后,發送CCx DMA請求。
start與stop的相位差以及start信號采集采用同一個Timer(Timer1),stop信號采集使用另一個Timer(Timer8)。由于Start信號先于Stop信號,計算相位差時,當start信號上升沿到來時,觸發DMA數據流1中斷,Cnt清零,并開始計數。當stop信號上升沿到來時,觸發DMA數據流2中斷。
處理器內部數據流表如表1所示。
表1 處理器內部數據流表
選用的處理器定時器TIM1被視為復雜的通用定時器,屬于高性能定時器。它的四個獨立的通道可以被用作包括輸入捕獲、輸出比較、PWM發生器以及單脈沖輸出模式。
進入中斷后的直接存儲訪問(DMA)在不需要CPU支持的情況下,完成存儲器與存儲器之間的傳輸。將TIM1_CH1連接到DMA2的數據流1,將TIM1_CH2連接到DMA2的數據流2。將兩者的優先級都設置為中優先級,由于編號低的數據流優先于編號高的數據流。使用存儲器的兩個存儲器指針的雙緩沖區傳輸(當DMA正在進行自/至緩沖區的讀/寫操作時)。配置數據寬度為半字。
(1)計算兩路的頻率
將START上升沿作為DMA中斷觸發源,寄存器中記錄START的計數值,同步記錄STOP的計數值。用STOP的計數值減去START的計數值再與時鐘頻率相乘,就是相位差。
(2)故障超時累計
利用超時計算器,任務調度時間為40ms。每采集一次頻率值,以最嚴苛的條件為例,當頻率為1Hz時,采集時記錄最新點的索引值,若新點索引和上次相同,則累積錯誤計數值,如果錯誤次數乘以采樣周期超過了1010ms,則認為超時,流量信號丟失。
通過采用DMA雙數據流的相位差采集以及超時檢測的計算方法,能夠準確計算出流量信號脈動轉換后方波信號的相位差,實現流量值的計算,并完成傳感器信號丟失檢測。