簡介
FlexIO需要毛刺濾波的原因
使用定時器進行毛刺濾波的基本原理
? 定時器工作在16bit模式
? 定時器的觸發源選擇來自輸入引腳
? 定時器的引腳配置為輸出
? 定時器一直使能且從不關閉 (TIMENA = 0, TIMDIS= 0)
? 當定時器的輸入與輸出相等時,定時器處于reset狀態 (TIMRST = 0x3)
? 定時器的輸出不受 reset 引腳影響,初始狀態可以是0 或者是 1 (TIMOUT = 0 or 1)
? 定時器的初始計數值等于 filter_width 減 1 (TIMCMP = filter_width – 1)
? filter_width 是輸入信號持續穩定才能更新輸出信號的周期數且必須大于1
通過設置不同的初始計數值,定時器可以被用于過濾信號中的高頻毛刺,同時也會為濾波后的信號帶來filter_width *時鐘周期的時間延遲。當初始計數值為 10 時,初始信號與濾波后的信號如圖所示。
定時器能夠完成濾波的原因在于:在信號發生跳變時,計數值才會從初始值開始遞減,即定時器的輸入狀態與輸出狀態不相同,定時器退出reset 狀態開始計數。當16 位計數器等于 0 并遞減時,定時器輸出切換并且計數器從比較寄存器重新加載。因此,如果信號的跳變保持的時間小于filter_width *時鐘周期 的時間,會導致計數值還未降低到 0 就被重置,輸出信號就會保持原先的電平,短時間的信號跳變就會被過濾掉。
定時器在進行毛刺濾波時,其輸出引腳在芯片內部連接到其他移位器和定時器,因此即便這一引腳在設備級別(IOMUXC)未被啟用也可以實現濾波功能。
對RT1010 GPIO輸出的方波信號
進行毛刺濾波
? GPIO_08 被配置為輸出方波信號
? GPIO_11 被配置為 FlexIO 定時器的輸入引腳
? GPIO_12 被配置為 FlexIO 定時器的輸出引腳
FlexIO 的定時器可以對 TIMCFG 寄存器進行配置,從而改變其對輸入信號的的響應。
將 TIMOUT 段配置為 00b,可以將定時器的初始輸出值設置為 1,且在 reset 時會保持輸出值不變。
將 TIMDEC 段配置為 00b,可以在每個時鐘周期對計數值遞減。
將 TIMRST配置為 11b,可以在輸入值等于輸出值時重置計數值。在代碼中,可以將 FlexIO 的定時器進行如下配置:
通過如上的定時器配置,可以輕松實現章節3中提到的定時器配置條件,從而使定時器工作為一個毛刺濾波器。
END
更多恩智浦AI-IoT市場和產品信息,邀您同時關注“NXP客棧”微信公眾號
NXP客棧
恩智浦致力于打造安全的連接和基礎設施解決方案,為智慧生活保駕護航。
長按二維碼,關注我們
恩智浦MCU加油站
長按二維碼,關注我們
原文標題:在 FlexIO上進行毛刺濾波的方法
文章出處:【微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。
-
mcu
+關注
關注
146文章
17178瀏覽量
351672 -
恩智浦
+關注
關注
14文章
5864瀏覽量
107726
原文標題:在 FlexIO上進行毛刺濾波的方法
文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論