《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于2.4 GHz射頻通信的多功能鼠標設計
基于2.4 GHz射頻通信的多功能鼠標設計
摘要: 多功能無線鼠標發(fā)射部分主要實現(xiàn)光傳感器位移,、按鍵鍵值的采集,并通過無線發(fā)射給接收器。主要由控制部分、光傳感器部分、鼠標按鍵和鍵盤部分以及無線發(fā)射部分組成,。
Abstract:
Key words :

引言

  多功能無線鼠標包括無線發(fā)射部分和無線接收部分,其中發(fā)射部分是關系到其總體性能好壞的關鍵部分,。本系統(tǒng)以nRF24L01為核心構建無線發(fā)射模塊,。

  nRF24L01是一款新型單片射頻收發(fā)器件,,工作于2.4~2.5 GHz ISM頻段;內置頻率合成器,、功率放大器,、晶體振蕩器、調制器等功能模塊,,并融合了增強型ShockBurst技術,,其中輸出功率和通信頻道可通過程序進行配置。nRF24L01功耗低,,在以0 dBm的功率發(fā)射時,,工作電流只有11.3 mA;接收時,,工作電流只有12.3 mA,;多種低功率工作模式(掉電模式和空閑模式)使節(jié)能設計更方便。

  多功能無線鼠標是一款使用電池供電的手持設備,,功耗是衡量其性能的一個重要標準,。本設計所選用的主控芯片是MSP430F413,它是一種16位超低功耗的混合信號處理器,,在活躍模式下最大電流為350μA,,RAM數(shù)據(jù)保持方式下耗電僅0.1μA。光傳感器芯片選用ADNS-5030,。這款芯片體積小,,功耗低,在工作模式下,,它的工作電流最大為17 mA,;僅在光傳感器工作的時候,LED才被點亮,,這樣會使光傳感器的功耗進一步下降(小于1 mA),。

  本文在介紹多功能無線鼠標發(fā)射部分開發(fā)過程的同時,對其設計應用中的注意事項和優(yōu)化方法作了相應的論述,。在設計過程中,,多注意細節(jié)和優(yōu)化方法可使設計更加順利,并為大規(guī)模算法提供有效的時間,。

  
1 硬件電路設計

  多功能無線鼠標發(fā)射部分主要實現(xiàn)光傳感器位移,、按鍵鍵值的采集,并通過無線發(fā)射給接收器,。主要由控制部分,、光傳感器部分、鼠標按鍵和鍵盤部分以及無線發(fā)射部分組成。系統(tǒng)框圖如圖1所示,。

 

  1.1 無線發(fā)射部分

  無線發(fā)射部分是多功能無線鼠標的主要部分,,本設計以nRF24L01為核心構建無線發(fā)射模塊。

  nRF24LOl具有無條件使用2.4 GHz全球開放ISM頻段,,內置硬件CRC檢錯和一點對多點通信地址控制等特點,,數(shù)據(jù)傳輸率為2 Mb/s,126個頻道,;能滿足多點通信和跳頻通信的需要,;功耗低,供電電壓為1.9~3.6 V,,待機模式下工作電流為22μA,,掉電模式下僅為900 nA。這些是nRF24L01的主要優(yōu)點,。

  無線發(fā)射部分的電路原理如圖2所示,。

 

  1.2 電源管理

  手持系統(tǒng)對低功耗有較嚴格的要求。MSP430系列單片機有5種低功耗模式,。在一定時間內無操作的情況下,,可以使其進入某一種低功耗模式,這時的工作電流可以控制在十幾μA以下,。

  對于外圍器件,,如光傳感器和無線發(fā)射部分,設置了一個開關,,在主控芯片進入低功耗模式之前先切斷它們的電源,,使系統(tǒng)的功耗進一步降低。而在有操作到來的時候,,主控芯片從低功耗模式返回到活躍模式,,首先將外圍器件的電源開關打開,這樣可以保證系統(tǒng)正常工作,。低功耗電源控制電路如圖3所示,。開關由一個PNP型的晶體管構成,基極作為控制信號的輸入,,發(fā)射極為電壓輸入,,集電極為電壓輸出??刂菩盘柕碾娖阶兓梢钥刂凭€路上電源的通斷,。

  1.3 光傳感器部分

  光傳感器ADNS-5030用于鼠標的定位。ADNS-5030的正常工作電壓為3.3 V,,在光傳感器的設計中需要將電池供電輸出的3.O V電壓轉換成其所需要的3.3 V電壓,。電路采用HT7733芯片來完成電壓的轉換。ADNS-5030通過SPI總線與主控芯片進行數(shù)據(jù)通信,,其連接方式如圖4所示,。

 

  1.4 按鍵與鍵盤

  多功能無線鼠標的按鍵與普通鼠標的按鍵功能基本相同,只是將普通鼠標的滾輪(wheel)改成了上下鍵的設計,。這兩種設計的功能是相同的,。鍵盤用于阿拉伯數(shù)字、字母以及各種功能鍵的輸入,。采用矩陣式的手機鍵盤,,節(jié)省了主控芯片的I/O口資源。

  
2 軟件部分設計

  2.1 通用I/O模擬SPl接口

  無線發(fā)射芯片nRF24L01和光傳感器ADNS-5030均是采用SPI總線與主控芯片進行數(shù)據(jù)交換的,。出于成本考慮,,本設計所選用的主控芯片MSP430F413內部沒有SPI總線接口,因此,,需要用通用I/O口來模擬SPI接口,。

  用通用I/O口來模擬SPI串行接口,必須嚴格遵守器件SPI的總線時序,。ADNS-5030的SPI總線時序有幾個需要注意的地方:一是SPI總線的串行時鐘頻率應小于1 MHz,,若SPI總線的時鐘頻率過高,器件無法在短時間內作出響應,,相應的操作也就無法完成,;二是ADNS-5030對SPI總線上的時鐘信號要求50%的占空比,這種要求并不是針對所有器件的,,但對具體提出這種要求的個例,,就必須遵循了(實驗證明這個結論是正確的,筆者通過在程序中加空指令的方式來填補空缺,,使其占空比達到器件的要求),;三是SPI總線操作中有許多必要的延時,如讀操作中寫地址和讀數(shù)據(jù)之間需要4 μs的延時,,程序中若無該延時,,就不能執(zhí)行正常的讀寫操作。

        2.2 無線發(fā)射部分

  nRF24L01的工作原理如下:發(fā)射數(shù)據(jù)時,,首先將nRF24L01配置為發(fā)射模式,,接著把接收節(jié)點地址TX_ADDR和有效數(shù)據(jù)TX_PLD按照時序由SPI口寫入nRF24L01緩存區(qū)。TX_PLD必須在CSN為低時連續(xù)寫入,,而TX_ADDR在發(fā)射時寫入一次即可,。然后,CE置為高電平并保持至少10μs,,延遲130μs后發(fā)射數(shù)據(jù),。若自動應答開啟,,那么nRF24L01在發(fā)射數(shù)據(jù)后立即進入接收模式,接收應答信號(自動應答接收地址應該與接收節(jié)點地址TX_ADDR一致),。如果收到應答,,則認為此次通信成功,TX_DS置高,,同時TX_PLD從TX_FIFO中清除,;若未收到應答,則自動重新發(fā)射該數(shù)據(jù)(自動重發(fā)已開啟),,若重發(fā)次數(shù)(ARC)達到上限,,MAX_RT置高,TXFIFO中數(shù)據(jù)保留以便再次重發(fā),。MAX_RT或TX_DS置高時,,使IRQ變低,產生中斷,,通知MCU,。發(fā)射成功時,若CE為低,,則nRF24L01進入待機模式1,;若發(fā)送堆棧中有數(shù)據(jù)且CE為高,則進入下一次發(fā)射,;若發(fā)送堆棧中無數(shù)據(jù)且CE為高,,則進入待機模式2。

  接收數(shù)據(jù)時,,首先將nRF24L01配置為接收模式,,接著延遲130μs進入接收狀態(tài)等待數(shù)據(jù)的到來。當接收方檢測到有效的地址和CRC時,,就將數(shù)據(jù)包存儲在RXFIFO中,,同時中斷標志位RX_DR置高,IRQ變低,,產生中斷,,通知MCU取數(shù)據(jù)。若此時自動應答開啟,,接收方則同時進入發(fā)射狀態(tài)回傳應答信號,。接收成功時,若CE變低,,則nRF24L01進入待機模式1,。

  nRF24L01有發(fā)射、接收,、待機和掉電4種工作模式,,可以通過配置寄存器來設置其工作狀態(tài),,如表1所列。

 

  待機模式1(Standby-I)主要用于降低電流損耗(在該模式下,,晶體振蕩器仍然工作),。待機模式2(Standby-II)是當FIFO寄存器為空且CE=1時進入此模式。待機模式下,,所有配置字仍然保留,。在掉電模式(Power Down)下電流損耗最小,,同時nRF24L01也不工作,,但其所有配置寄存器的值仍然保留。

  無線發(fā)射部分上電初始化時,,進行了如下配置:

①CONFIG寄存器的低4位置1,,分別為16位CRC校驗,芯片上電和接收模式,;
②SETUP_AW(地址寬度)寄存器配置地址寬度為5字節(jié),;
③SETUP_RETR(自動重發(fā))寄存器配置為自動重發(fā)延時500μs,重發(fā)5次,;
④RF_CH(RF頻道)寄存器配置為工作頻道2400MHz,;
⑤RF_SETUP(RF設置)寄存器配置為發(fā)射功率O dBm,Air Data Rate為1 MHz,;
⑥將地址寫入地址寄存器,。

  在配置寄存器時應注意一點:在寫nRF24L01的寄存器時,它必須工作在掉電模式或待機模式,。而在nRF24L01上電達到l.9 V以后,,要經過10.3 ms的上電復位然后再進入掉電模式。這是一個不確定狀態(tài),。在此狀態(tài)下,,對寄存器的寫操作是無法完成的,因此必須加上一個合適的延時,,使程序對 nRF24L01的配置操作在掉電模式或待機模式下進行,。

  當光傳感器或按鍵等有操作時,主控制器將讀入的信號寫入nRF24L01的TX_PLD,,然后由芯片自動生成報頭和CRC校驗碼,,并發(fā)送出去。當收到應答信號(ACK)后,,程序中所設置的標志位success置1,,清除TX FIFO隊列中的數(shù)據(jù),可以進行下一次數(shù)據(jù)的寫入了,;若未收到應答信號(ACK),,則標志位success置O,,繼續(xù)重發(fā),且新的數(shù)據(jù)無法寫入,。

  2.3 讀光傳感器位移值

  讀光傳感器的位移值,,其實就是讀它對應的寄存器。在ADNS-5030的內部寄存器中,,地址為Ox02的Motion寄存器用于表示是否有位移,。其最高位若為O,則無位移,;最高位若為1,,則有位移。另外,,使用到的兩個寄存器的地址是Ox03和Ox04的DeltaX和DeltaY,。這兩個寄存器的值分別表示X軸和Y軸方向上的位移。最高位表示位移的方向,,1為負方向,,O為正方向,低7位表示位移量,。

 

  如圖5所示,,首先判斷是否有位移,即Motion的最高位是否為1,。若不為1,,則表示沒有位移,本次查詢結束,;若為1,,則表示有位移,然后再去讀 DeltaX和DeltaY的值,,并將其通過無線發(fā)射部分發(fā)送出去,。

  讀DeltaX、DeltaY寄存器后,,寄存器中的值自動清零,,但是Motion寄存器讀后不清零,所以最后需要對Motion寄存器的最高位進行清零,,以防止在沒有位移的情況下,,系統(tǒng)也對DeltaX、DeltaY寄存器進行掃描,,造成不必要的浪費,。

  另一個需考慮的地方是光傳感器的分辨率。在上電復位后,,光傳感器的分辨率為默認的500cpi(cells perinch),,但是實驗效果并不好,。在調試時,其位移并不明顯,,后來修改寄存器的值,,將其分辨率改為1 000 cpi(只有500 cpi和1 000 cpi兩種分辨率),光標的位移效果明顯好于分辨率為,,500 cpi時的效果,。由此可見,光傳感器的這一屬性也是相當重要的,。 

        2.4 讀按鍵與鍵盤

  左右鍵的沒計與普通按鍵的設計稍有不同,。使用鼠標時可以看到,在按下左鍵同時拖動鼠標時,,可以選中光標移動范圍內的選項,;同樣,,右鍵也具有這樣的功能,。

  在左右鍵的掃描程序中,當程序掃描到有鍵按下時(例如左鍵按下),,立刻將所得到的鍵值發(fā)送出去,,這時,接收端的左鍵值一直是處于按下狀態(tài)的,,同時也不耽誤光傳感器等的掃描,;當左鍵抬起時,再向接收端發(fā)送按鍵抬起的指令,,一次左右鍵的掃描就完成了,。這樣就可以實現(xiàn)在按下左鍵同時拖動鼠標時,選中光標移動范圍內選項的操作了,。

  上下鍵與左鍵和右鍵的操作方式不同,。在上下鍵的掃描程序中還應考慮點動和連動這兩種不同的情況。點動即為在一定時間內快速按下一個按鍵,,然后立即釋放,;而按下一個鍵并延時一段時間再釋放,則程序將其識別為連動,。

  鍵盤部分設置了20個鍵,,是一個5×4的矩陣,包括“O~9”10個數(shù)字鍵,,“上,、下、左,、右”4個方向鍵,,“←”鍵,,“確定”鍵,“Esc”鍵以及3個快捷鍵(“顯示桌面”,、“瀏覽器”和“我的電腦”),。其中“0~9”10個數(shù)字鍵是復用鍵,像手機鍵盤一樣,,根據(jù)一定時間內連擊次數(shù)的不同,,可以輸入不同的鍵值。

  
結語

  本文所涉及的硬件均在實際中調試通過,。實驗證明,,MSP430系列單片機成本較低,在低功耗產品中的應用極為廣泛,,將會得到廣大開發(fā)人員的認同,。本系統(tǒng)已實現(xiàn)鼠標和手機鍵盤結合的基本功能,以后仍可以對其功能進行補充,,完善多功能無線鼠標的性能,。
 

此內容為AET網站原創(chuàng),未經授權禁止轉載,。