iMouse多功能空中鼠標
鼠標主體端軟件結構
主體端軟件結構如圖7所示。
在主體端的軟件中,主要用到了μC/OS操作系統的多任務調度與任務間的通訊功能,在鼠標動作數據處理之后,通過消息隊列的方式傳遞給RF通訊任務,RF通訊任務將此數據有效地發送給接收端電路。如圖9所示。
鼠標動作數據處理的流程如圖8所示。在空中鼠標的加速度傳感方案中,最為關鍵的是如何用軟件的方法除去重力以及抖動對傳感器輸出產生的影響,這里首先對傳感器輸出的數據進行差分,所得的數據通過一定的衰減后再減掉防抖閾值,最后形成要輸出的數據。
接收端軟件結構
接收端軟件結構如圖10。
在鼠標的接收這一端,無線通訊的任務流程基本與主體端的流程差不多,只是這端以接收為主,而主體端則以發送為主。同時,在有效接收到數據包后,程序將評估RF通訊雙端的中心頻率偏差,并對芯片進行配置修正。無線通訊的一個關鍵問題是如何處理好數據丟包的問題,處理不好,鼠標就會跳躍,這里,借鑒了USB協議中對數據包交錯發送的控制方法與應答機制,很好解決了這個問題。
USB控制這一塊是軟件中最關鍵的一塊,這里涉及了USB協議以及HID的協議。USB的固件程序結構如圖11。
USB事件由中斷進行驅動,中斷發生后根據不同的中斷向量對中斷事件進行處理。如圖12所示。如果是控制包,則向主控的進程發送一個信號,由主控進程對控制包進行分析處理。在程序的應用層,HID鼠標的數據包通過USB接口的端口1進行傳輸,計算機對此端口的詢問間隔為10ms。
總結與展望
這一項目得到了完整的實施,產品原型在“時代民芯”杯電子設計大賽的決賽答辯中進行了正常的演示。
但是由于時間的原因,還有很多值得改進的地方,一是放置桌面的常規使用方式功能還可以添加,二是靈敏度還能進一步進行調試,三是可以更換MEMS角速度器件作為傳感器件,將有更好的使用體驗。有了這些改進,這個產品將更加完美。
評論