基于2.4 GHz射頻通信的多功能鼠標設計
1.2 電源管理
手持系統對低功耗有較嚴格的要求。MSP430系列單片機有5種低功耗模式。在一定時間內無操作的情況下,可以使其進入某一種低功耗模式,這時的工作電流可以控制在十幾μA以下。
對于外圍器件,如光傳感器和無線發射部分,設置了一個開關,在主控芯片進入低功耗模式之前先切斷它們的電源,使系統的功耗進一步降低。而在有操作到來的時候,主控芯片從低功耗模式返回到活躍模式,首先將外圍器件的電源開關打開,這樣可以保證系統正常工作。低功耗電源控制電路如圖3所示。開關由一個PNP型的晶體管構成,基極作為控制信號的輸入,發射極為電壓輸入,集電極為電壓輸出。控制信號的電平變化可以控制線路上電源的通斷。
1.3 光傳感器部分
光傳感器ADNS-5030用于鼠標的定位。ADNS-5030的正常工作電壓為3.3 V,在光傳感器的設計中需要將電池供電輸出的3.O V電壓轉換成其所需要的3.3 V電壓。電路采用HT7733芯片來完成電壓的轉換。ADNS-5030通過SPI總線與主控芯片進行數據通信,其連接方式如圖4所示。
1.4 按鍵與鍵盤
多功能無線鼠標的按鍵與普通鼠標的按鍵功能基本相同,只是將普通鼠標的滾輪(wheel)改成了上下鍵的設計。這兩種設計的功能是相同的。鍵盤用于阿拉伯數字、字母以及各種功能鍵的輸入。采用矩陣式的手機鍵盤,節省了主控芯片的I/O口資源。
2 軟件部分設計
2.1 通用I/O模擬SPl接口
無線發射芯片nRF24L01和光傳感器ADNS-5030均是采用SPI總線與主控芯片進行數據交換的。出于成本考慮,本設計所選用的主控芯片MSP430F413內部沒有SPI總線接口,因此,需要用通用I/O口來模擬SPI接口。
用通用I/O口來模擬SPI串行接口,必須嚴格遵守器件SPI的總線時序。ADNS-5030的SPI總線時序有幾個需要注意的地方:一是SPI總線的串行時鐘頻率應小于1 MHz,若SPI總線的時鐘頻率過高,器件無法在短時間內作出響應,相應的操作也就無法完成;二是ADNS-5030對SPI總線上的時鐘信號要求50%的占空比,這種要求并不是針對所有器件的,但對具體提出這種要求的個例,就必須遵循了(實驗證明這個結論是正確的,筆者通過在程序中加空指令的方式來填補空缺,使其占空比達到器件的要求);三是SPI總線操作中有許多必要的延時,如讀操作中寫地址和讀數據之間需要4 μs的延時,程序中若無該延時,就不能執行正常的讀寫操作。
2.2 無線發射部分
nRF24L01的工作原理如下:發射數據時,首先將nRF24L01配置為發射模式,接著把接收節點地址TX_ADDR和有效數據TX_PLD按照時序由SPI口寫入nRF24L01緩存區。TX_PLD必須在CSN為低時連續寫入,而TX_ADDR在發射時寫入一次即可。然后,CE置為高電平并保持至少10μs,延遲130μs后發射數據。若自動應答開啟,那么nRF24L01在發射數據后立即進入接收模式,接收應答信號(自動應答接收地址應該與接收節點地址TX_ADDR一致)。如果收到應答,則認為此次通信成功,TX_DS置高,同時TX_PLD從TX_FIFO中清除;若未收到應答,則自動重新發射該數據(自動重發已開啟),若重發次數(ARC)達到上限,MAX_RT置高,TXFIFO中數據保留以便再次重發。MAX_RT或TX_DS置高時,使IRQ變低,產生中斷,通知MCU。發射成功時,若CE為低,則nRF24L01進入待機模式1;若發送堆棧中有數據且CE為高,則進入下一次發射;若發送堆棧中無數據且CE為高,則進入待機模式2。
接收數據時,首先將nRF24L01配置為接收模式,接著延遲130μs進入接收狀態等待數據的到來。當接收方檢測到有效的地址和CRC時,就將數據包存儲在RXFIFO中,同時中斷標志位RX_DR置高,IRQ變低,產生中斷,通知MCU取數據。若此時自動應答開啟,接收方則同時進入發射狀態回傳應答信號。接收成功時,若CE變低,則nRF24L01進入待機模式1。
nRF24L01有發射、接收、待機和掉電4種工作模式,可以通過配置寄存器來設置其工作狀態,如表1所列。
評論