上次用到了ad轉換晶元tlc2543,取樣的資料有時候偶爾會有毛刺和雜訊,沒有打算用硬體濾波的方法,所以參考了很多軟體濾波的方案,針對自己設計的系統,決定採用滑動加權濾波的方法。
優點:相比限幅濾波,中值濾波,算數平均濾波,去極值平均濾波,滑動平均濾波等方法,滑動加權濾波方法實時好(相比前幾種濾波方式),反應快(相比滑動平均濾波降低滯後效果)等特點。
實現原理:將當前的取樣值和之前連續的若干取樣值(最近歷史取樣值)一起進行加權平均,將得到的平均值作為當前有效的值投入使用。由於參與加權平均運算的歷史取樣個數固定且內容不斷更新,相當於乙個滑動的時間視窗,故稱這種平均濾波方式稱為「滑動加權濾波」。
實現方法:1.視窗的大小用取樣資料樣本個數用m來表示,
2.用陣列k[m]給資料樣本中的每乙個資料分配加權係數,一般給當前的取樣資料(即較新的取樣資料)分 配以比較大的加權係數,給早期的樣本分配較低的權重,這樣做是為了降低嚴重的滯後效果(相比滑動平均濾波),提高系統的反映速度。
#define m 6 //滑動視窗的大小(參與平均運算的取樣資料樣本的個數)
#define q 21 //加權係數之和
int16u history[m]; //加權值的歷史記錄,一般從左到右逐漸增大
int8u k[m]={1,2,3,4,5,6}; //加權係數
int8u p; //取樣值的歷史記錄迴圈佇列的入隊指向
int16u samp; //濾波演算法輸出的有效取樣值
void tasksamplectrl(void *pdata)
{ int8u i,j;
float s;
for(p=0;p 程式中的最新的取樣資料一直緊挨著最老的資料,並且最新的在最老的左邊。
TQ2440 AD中斷方式採集資料
經過不懈的努力 發現自己的錯誤在於不知道adc的中斷有兩個子中斷 2440的adc中斷包括int adc s和int tc 需要先處理一下子中斷int adc c 再處理int adc 另外要感謝21icbbs上的hbicecream的幫助 我才想起來uart printf函式也是需要中斷的 所以最...
TQ2440背光控制
控制lcd背光就是控制s3c2440的lcd控制的lcd pwren腳lcdcon5暫存器pwren位控制lcd是否輸出。對linux 2.6.30.4核心進行移植。新建乙個backlight.c檔案放到 drivers video 目錄下。內容如下 include include include ...
《TQ2440載入Hello world驅動模組》
經過將近乙個月都時間終於按照手冊把linux核心移植完了,接下來要開始驅動模組的移植了,在網上查了一些資料,總結如下 目標平台 tq2440 arm9 核心版本 linux 2.6.25 前提 宿主機上已安裝交叉編譯工具,因為這個在linux核心移植的時候就使用過了,這裡就不說了。進入正題 1 首先...