新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于USB的無線觸摸鼠標板的設計方法

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

作者: 時間:2013-08-06 來源:網絡 收藏

3.2.1芯片初始化

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

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

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

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

  3.2.3 CC2420數(shù)據(jù)發(fā)送

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

圖6發(fā)送過程示意圖

圖6發(fā)送過程示意圖

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

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

圖7 CC2420發(fā)送實現(xiàn)過程

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

  3.3接入端軟件的設計與實現(xiàn)

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

  3.3.1無線數(shù)據(jù)接收

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

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

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

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

  3.3.2 設備HID類設計與實現(xiàn)

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

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

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

圖8中斷處理程序流程

圖8中斷處理程序流程

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

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

  4結束語

  本設計所實現(xiàn)的基于USB的除了具有無線空中鼠標的所以功能外,且成本低廉,容易實現(xiàn),無線傳輸距離遠(20 m),無指向性,適應性強,能廣泛應用于現(xiàn)有的多媒體教室。

參考文獻:

[1].CC2420datasheethttp://www.dzsc.com/datasheet/CC2420_213269.html.
[2].RS232datasheethttp://www.dzsc.com/datasheet/RS232_585128.html.
[3].MAX3232datasheethttp://www.dzsc.com/datasheet/MAX3232_1107769.html.
[4].PCBdatasheethttp://www.dzsc.com/datasheet/PCB_1201640.html.
[5].PIC16F877Adatasheethttp://www.dzsc.com/datasheet/PIC16F877A_.


上一頁 1 2 3 下一頁

評論


相關推薦

技術專區(qū)

關閉