基于ARM平臺的MEMS輸入設備的固件設計
2.遠端子系統設計
遠端子系統的主要任務是加速度計信號的采集,信號的放大、濾波等的處理,控制器 對射頻無線發送的軟件控制。主要的實現過程為:使用GPIO 口,并按照一定的采樣頻率將 加速度信號送入微控制器LPC2214,在LPC2214 內部進行信號放大和A/D 轉換;并且按照 無線傳輸模塊定義的格式將數據進行編碼,再通過GPIO 口傳送給無線射頻模塊。 主程序主要實現各個器件的初始化和任務的調用。
int main(void)
{
TargetInit();
Init_RF();
Init_ADC();
Init_Transmitter();
TaskMouse();
return 0;
}
在完成各個模塊的初始化之后,執行Taskmouse 函數。Taskmouse 函數是主執行函數, 包含了GetMousePos()、ModeSelect()、Get_ADCValue_X()和Get_ADCValue_Y()等子函數。 調用該函數就可以執行加速度計信號采集、鼠標位置確定、系統工作模式選擇等程序行。 獲取鼠標位置信息的示意程序如下所示:
void GetMousePos(uint8 *buf, uint8 shift)
{
uint8 i;
uint8 sampf = 50;
uint32 dpi = 100;
uint32 sum_x, sum_y;
sum_x = sum_y = 0;
for (i = 0; i sampf; ++i) {
sum_x += Get_ADCValue_X(dpi);
sum_y += Get_ADCValue_Y(dpi); }
buf[0] = (sum_x / sampf) >> shift;
buf[1] = (sum_y / sampf) >> shift;
}
3.主機端子系統設計
在主機端子系統中,NRF2401 接受遠端子系統的數據并從I/O 口進入LPC2214,數據通 過協議等處理為鼠標格式,最后通過USB 接口發送給主機。在該模塊中,我們采用了操作 系統來實現多任務處理。
評論