關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于USB的無線觸摸鼠標板的設計

        基于USB的無線觸摸鼠標板的設計

        作者: 時間:2012-08-27 來源:網絡 收藏

        圖4軟件總體框架圖

        3.2手持端軟件的設計與實現

        在本部分將介紹手持終端的軟件設計過程,以及各個模塊部分的具體實現。軟件的運行流程圖如圖5所示。

        圖5手持端軟件流程

        對于事件發生的獲取是采用中斷模式,也就是在有鼠標觸摸板事件發生的時候,將喚醒MCU進行數據的采集處理,然后將采集到的PS/2數據進行一定規則的轉換,然后將其打包發送。若沒有數據需要處理,則進入睡眠狀態以節省功耗。

        3.2.1芯片初始化

        在芯片初始化階段,主要是芯片的內部工作的時鐘的設置、IO口的初始化設置、以及CC2420的初始化。

        在芯片的初始化階段需要注意對每個IO口的數據方向進行設置,并且要準確設置時鐘以及串口的傳輸數率,否則在調試階段無法獲取數據。不用的IO口全部設置成輸出端口,這樣可減少端口不必要的干擾。

        3.2.2鼠標觸摸板事件的信息采集

        首先要對觸摸板進行初始化,其初始化序列請參照PS/2協議的命令序列。初始化成功后,該觸摸板將正常工作,只要有觸摸事件發生,將產生連續三幀的數據發送,而按鍵事件發生,則在按下產生三幀數據發送,彈起產生三幀數據發送。我們需要做的工作就是在觸摸板發送數據的時候對其進行采集。采集過程也非常簡單,在熟悉PS/2協議的基礎上,中斷產生后,按照時序對數據進行采集,一定要在讀完一幀的基礎上再讀下一幀,讀取完三幀數據后就馬上進行數據轉換和打包發送,然后再次等待中斷事件發生。所選擇的MCU在速度處理上完全可以滿足一般鍵盤鼠標數據包發送的間隔時間,也就是說在讀取完一個數據包后,就處理該數據包而不需要完全讀取完一次事件產生的數據堆。

        3.2.3 CC2420數據發送

        在CC2420的數據發送階段,MCU將數據發送命令傳送給CC2420之后,可以通過SFD引腳來判斷其發送過程。該引腳會有一個由低電平向高電平跳變的過程,其過程如圖6所示。

        圖6發送過程示意圖

        控制器向CC2420發送了發送數據的命令之后,并不能馬上把數據發送出去,而是要經過12個時鐘周期之后發送器才啟動,之后將數據添加了其實序列和幀頭之后,才能開始數據發送進程。在數據發送完畢之前,SFD引腳將一直為高電平,這樣在MCU就可以根據此引腳的變化來跟蹤發送過程,發送過程具體的軟件實現,可用圖7表示。

        圖7 CC2420發送實現過程

        在CC2420的數據發送階段,發射校正和添加起始序列和幀頭可以由硬件自動完成,但是幀的長度需要在軟件中計算得到再寫入幀中,并且需要將數據寫入發送器的發送緩沖區之后向CC2420發送發送啟動命令。

        3.3接入端軟件的設計與實現

        接入設備部分的軟件設計,主要是分為兩部分:CC2420的接收和數據傳輸。CC2420由于是發送和接收集成在同一模塊中,所以其初始化可采用發送端的設計。而在數據傳輸部分,則采用HID的協議與主機進行通信,這樣在軟件設計上可以減少復雜度。

        3.3.1無線數據接收

        無線數據接收的軟件實現,使用RB5端口的電平中斷觸發接收進程。當CC2420發現有幀傳輸過來時其引腳會產生相應的變化,MCU通過檢測這些引腳的變化可以得知CC2420所在的接收階段與狀態。在接收過程中,有3根引腳可以檢測出CC2420的狀態,其數據接收的變化示意圖限于篇幅,在此略去。

        當CC2420收到有符合其起始序列的時候,其自動接收幀頭和幀的長度,并且SFD、FIFO、FIFOP這3根輸出引腳分別輸出上圖所示電平。當接收到幀的目的地址時候,CC2420自動進行地址匹配,若地址匹配成功,則接收進程繼續進行,如果地址匹配不成功,則馬上停止接收過程,并把3根輸出引腳都置為低電平。MCU在控制時可以通過檢測這3根輸出引腳的電平來判斷接收過程的狀態。

        如果地址匹配成功且接收完整個幀,則可以啟動數據讀取進程。

        在數據讀取階段,CC2420提供了幀的正確接收的初始判斷,由此可以知道該幀是否被正確接收,以決定是讀取該幀還是放棄該幀。按照CC2420的規定,當一個幀接收完畢之后,如果出現FIFOP=l并且FIFO=0的情況,則說明該幀錯誤接收,應當向其連續寫人兩個CC2420_SFLUSHRX命令將數據沖刷。如果沒有出現這種情況,則按照幀發送的相反過程從接收緩沖中讀取數據。

        3.3.2 設備HID類設計與實現

        USB數據傳輸的軟件設計,主要是集中在USB芯片的初始化以及協議的初始化、以及之后的枚舉過程,在成功枚舉并被主機正確識別之后,只需將數據寫入發送緩沖即可將數據發送到主機。在協議的初始化時,需要將協議中規定的各個參數設定都按照設計的要求設定,并且將各種描述符,包括配置描述符、端點描述符、接口描述符、報告描述符等初始完畢,以供枚舉過程使用。

        USB芯片的初始化過程的最后一步是將其SoftConnect功能打開,從這時起,主機才能開始檢測到設備的接入,也從這個時候起,USB芯片才真正開始與主機通信并開始設備枚舉過程。在枚舉過程中,主機首先向設備發送啟動信號,設備在接收到這個信號之后向主機發送回送的協議數據以供主機識別,當識別到這個信號之后,主機則開始向設備獲取描述符等信息,進而完成設備枚舉過程。

        初始化完成之后,主循環實際上不再參與USB通信。每次PDIUSBDl2接口芯片檢測到USB總線上主機發給這個設備的信號時候就觸發一次單片機的外部中斷。中斷處理子程序要做的工作就是首先D12讀取中斷信息,查看D12收到了什么樣的封包,然后根據主機的不同要求做出響應,中斷處理程序流程如圖8所示。

        %%%%%%%%%%7

        圖8中斷處理程序流程

        本系統設備中,固件程序只須處理端點0的輸出和輸入要求就可以完成設備的正常配置和基本工作。

        在圖8中,SOF包處理程序是自定義的部分,是為了更好地配合設備工作而添加的代碼,與設備的實質沒有太大關系,而結束狀態改變引起的中斷在這里不需要做處理。由于USB的數據傳輸都是由D12自動完成,端點1和2的輸出/輸入中斷處理就沒有什么實質內容。



        關鍵詞: USB 無線觸摸 鼠標板

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 榕江县| 定兴县| 商丘市| 永清县| 松溪县| 南涧| 台东县| 红原县| 中西区| 沛县| 河池市| 娄底市| 柞水县| 渭源县| 古浪县| 天峻县| 白水县| 南乐县| 安达市| 天镇县| 郸城县| 哈尔滨市| 彩票| 南川市| 乌兰浩特市| 青州市| 房山区| 焦作市| 化隆| 泰兴市| 渝北区| 乌拉特中旗| 大安市| 临沂市| 尼勒克县| 农安县| 梅州市| 武汉市| 方城县| 临桂县| 西峡县|