基于2.4 GHz射頻通信的多功能鼠標設計
引言
本文引用地址:http://dyxdggzs.com/article/201706/353190.htm多功能無(wú)線(xiàn)鼠標包括無(wú)線(xiàn)發(fā)射部分和無(wú)線(xiàn)接收部分,其中發(fā)射部分是關(guān)系到其總體性能好壞的關(guān)鍵部分。本系統以nRF24L01為核心構建無(wú)線(xiàn)發(fā)射模塊。
nRF24L01是一款新型單片射頻收發(fā)器件,工作于2.4~2.5 GHz ISM頻段;內置頻率合成器、功率放大器、晶體振蕩器、調制器等功能模塊,并融合了增強型ShockBurst技術(shù),其中輸出功率和通信頻道可通過(guò)程序進(jìn)行配置。nRF24L01功耗低,在以0 dBm的功率發(fā)射時(shí),工作電流只有11.3 mA;接收時(shí),工作電流只有12.3 mA;多種低功率工作模式(掉電模式和空閑模式)使節能設計更方便。
多功能無(wú)線(xiàn)鼠標是一款使用電池供電的手持設備,功耗是衡量其性能的一個(gè)重要標準。本設計所選用的主控芯片是MSP430F413,它是一種16位超低功耗的混合信號處理器,在活躍模式下最大電流為350μA,RAM數據保持方式下耗電僅0.1μA。光傳感器芯片選用ADNS-5030。這款芯片體積小,功耗低,在工作模式下,它的工作電流最大為17 mA;僅在光傳感器工作的時(shí)候,LED才被點(diǎn)亮,這樣會(huì )使光傳感器的功耗進(jìn)一步下降(小于1 mA)。
本文在介紹多功能無(wú)線(xiàn)鼠標發(fā)射部分開(kāi)發(fā)過(guò)程的同時(shí),對其設計應用中的注意事項和優(yōu)化方法作了相應的論述。在設計過(guò)程中,多注意細節和優(yōu)化方法可使設計更加順利,并為大規模算法提供有效的時(shí)間。
1 硬件電路設計
多功能無(wú)線(xiàn)鼠標發(fā)射部分主要實(shí)現光傳感器位移、按鍵鍵值的采集,并通過(guò)無(wú)線(xiàn)發(fā)射給接收器。主要由控制部分、光傳感器部分、鼠標按鍵和鍵盤(pán)部分以及無(wú)線(xiàn)發(fā)射部分組成。系統框圖如圖1所示。
1.1 無(wú)線(xiàn)發(fā)射部分
無(wú)線(xiàn)發(fā)射部分是多功能無(wú)線(xiàn)鼠標的主要部分,本設計以nRF24L01為核心構建無(wú)線(xiàn)發(fā)射模塊。
nRF24LOl具有無(wú)條件使用2.4 GHz全球開(kāi)放ISM頻段,內置硬件CRC檢錯和一點(diǎn)對多點(diǎn)通信地址控制等特點(diǎn),數據傳輸率為2 Mb/s,126個(gè)頻道;能滿(mǎn)足多點(diǎn)通信和跳頻通信的需要;功耗低,供電電壓為1.9~3.6 V,待機模式下工作電流為22μA,掉電模式下僅為900 nA。這些是nRF24L01的主要優(yōu)點(diǎn)。
無(wú)線(xiàn)發(fā)射部分的電路原理如圖2所示。
1.2 電源管理
手持系統對低功耗有較嚴格的要求。MSP430系列單片機有5種低功耗模式。在一定時(shí)間內無(wú)操作的情況下,可以使其進(jìn)入某一種低功耗模式,這時(shí)的工作電流可以控制在十幾μA以下。
對于外圍器件,如光傳感器和無(wú)線(xiàn)發(fā)射部分,設置了一個(gè)開(kāi)關(guān),在主控芯片進(jìn)入低功耗模式之前先切斷它們的電源,使系統的功耗進(jìn)一步降低。而在有操作到來(lái)的時(shí)候,主控芯片從低功耗模式返回到活躍模式,首先將外圍器件的電源開(kāi)關(guān)打開(kāi),這樣可以保證系統正常工作。低功耗電源控制電路如圖3所示。開(kāi)關(guān)由一個(gè)PNP型的晶體管構成,基極作為控制信號的輸入,發(fā)射極為電壓輸入,集電極為電壓輸出??刂菩盘柕碾娖阶兓梢钥刂凭€(xiàn)路上電源的通斷。
1.3 光傳感器部分
光傳感器ADNS-5030用于鼠標的定位。ADNS-5030的正常工作電壓為3.3 V,在光傳感器的設計中需要將電池供電輸出的3.O V電壓轉換成其所需要的3.3 V電壓。電路采用HT7733芯片來(lái)完成電壓的轉換。ADNS-5030通過(guò)SPI總線(xiàn)與主控芯片進(jìn)行數據通信,其連接方式如圖4所示。
1.4 按鍵與鍵盤(pán)
多功能無(wú)線(xiàn)鼠標的按鍵與普通鼠標的按鍵功能基本相同,只是將普通鼠標的滾輪(wheel)改成了上下鍵的設計。這兩種設計的功能是相同的。鍵盤(pán)用于阿拉伯數字、字母以及各種功能鍵的輸入。采用矩陣式的手機鍵盤(pán),節省了主控芯片的I/O口資源。
2 軟件部分設計
2.1 通用I/O模擬SPl接口
無(wú)線(xiàn)發(fā)射芯片nRF24L01和光傳感器ADNS-5030均是采用SPI總線(xiàn)與主控芯片進(jìn)行數據交換的。出于成本考慮,本設計所選用的主控芯片MSP430F413內部沒(méi)有SPI總線(xiàn)接口,因此,需要用通用I/O口來(lái)模擬SPI接口。
用通用I/O口來(lái)模擬SPI串行接口,必須嚴格遵守器件SPI的總線(xiàn)時(shí)序。ADNS-5030的SPI總線(xiàn)時(shí)序有幾個(gè)需要注意的地方:一是SPI總線(xiàn)的串行時(shí)鐘頻率應小于1 MHz,若SPI總線(xiàn)的時(shí)鐘頻率過(guò)高,器件無(wú)法在短時(shí)間內作出響應,相應的操作也就無(wú)法完成;二是ADNS-5030對SPI總線(xiàn)上的時(shí)鐘信號要求50%的占空比,這種要求并不是針對所有器件的,但對具體提出這種要求的個(gè)例,就必須遵循了(實(shí)驗證明這個(gè)結論是正確的,筆者通過(guò)在程序中加空指令的方式來(lái)填補空缺,使其占空比達到器件的要求);三是SPI總線(xiàn)操作中有許多必要的延時(shí),如讀操作中寫(xiě)地址和讀數據之間需要4 μs的延時(shí),程序中若無(wú)該延時(shí),就不能執行正常的讀寫(xiě)操作。
2.2 無(wú)線(xiàn)發(fā)射部分
nRF24L01的工作原理如下:發(fā)射數據時(shí),首先將nRF24L01配置為發(fā)射模式,接著(zhù)把接收節點(diǎn)地址TX_ADDR和有效數據TX_PLD按照時(shí)序由SPI口寫(xiě)入nRF24L01緩存區。TX_PLD必須在CSN為低時(shí)連續寫(xiě)入,而TX_ADDR在發(fā)射時(shí)寫(xiě)入一次即可。然后,CE置為高電平并保持至少10μs,延遲130μs后發(fā)射數據。若自動(dòng)應答開(kāi)啟,那么nRF24L01在發(fā)射數據后立即進(jìn)入接收模式,接收應答信號(自動(dòng)應答接收地址應該與接收節點(diǎn)地址TX_ADDR一致)。如果收到應答,則認為此次通信成功,TX_DS置高,同時(shí)TX_PLD從TX_FIFO中清除;若未收到應答,則自動(dòng)重新發(fā)射該數據(自動(dòng)重發(fā)已開(kāi)啟),若重發(fā)次數(ARC)達到上限,MAX_RT置高,TXFIFO中數據保留以便再次重發(fā)。MAX_RT或TX_DS置高時(shí),使IRQ變低,產(chǎn)生中斷,通知MCU。發(fā)射成功時(shí),若CE為低,則nRF24L01進(jìn)入待機模式1;若發(fā)送堆棧中有數據且CE為高,則進(jìn)入下一次發(fā)射;若發(fā)送堆棧中無(wú)數據且CE為高,則進(jìn)入待機模式2。
接收數據時(shí),首先將nRF24L01配置為接收模式,接著(zhù)延遲130μs進(jìn)入接收狀態(tài)等待數據的到來(lái)。當接收方檢測到有效的地址和CRC時(shí),就將數據包存儲在RXFIFO中,同時(shí)中斷標志位RX_DR置高,IRQ變低,產(chǎn)生中斷,通知MCU取數據。若此時(shí)自動(dòng)應答開(kāi)啟,接收方則同時(shí)進(jìn)入發(fā)射狀態(tài)回傳應答信號。接收成功時(shí),若CE變低,則nRF24L01進(jìn)入待機模式1。
nRF24L01有發(fā)射、接收、待機和掉電4種工作模式,可以通過(guò)配置寄存器來(lái)設置其工作狀態(tài),如表1所列。
待機模式1(Standby-I)主要用于降低電流損耗(在該模式下,晶體振蕩器仍然工作)。待機模式2(Standby-II)是當FIFO寄存器為空且CE=1時(shí)進(jìn)入此模式。待機模式下,所有配置字仍然保留。在掉電模式(Power Down)下電流損耗最小,同時(shí)nRF24L01也不工作,但其所有配置寄存器的值仍然保留。
無(wú)線(xiàn)發(fā)射部分上電初始化時(shí),進(jìn)行了如下配置:
①CONFIG寄存器的低4位置1,分別為16位CRC校驗,芯片上電和接收模式;
②SETUP_AW(地址寬度)寄存器配置地址寬度為5字節;
③SETUP_RETR(自動(dòng)重發(fā))寄存器配置為自動(dòng)重發(fā)延時(shí)500μs,重發(fā)5次;
④RF_CH(RF頻道)寄存器配置為工作頻道2400MHz;
⑤RF_SETUP(RF設置)寄存器配置為發(fā)射功率O dBm,Air Data Rate為1 MHz;
⑥將地址寫(xiě)入地址寄存器。
在配置寄存器時(shí)應注意一點(diǎn):在寫(xiě)nRF24L01的寄存器時(shí),它必須工作在掉電模式或待機模式。而在nRF24L01上電達到l.9 V以后,要經(jīng)過(guò)10.3 ms的上電復位然后再進(jìn)入掉電模式。這是一個(gè)不確定狀態(tài)。在此狀態(tài)下,對寄存器的寫(xiě)操作是無(wú)法完成的,因此必須加上一個(gè)合適的延時(shí),使程序對 nRF24L01的配置操作在掉電模式或待機模式下進(jìn)行。
當光傳感器或按鍵等有操作時(shí),主控制器將讀入的信號寫(xiě)入nRF24L01的TX_PLD,然后由芯片自動(dòng)生成報頭和CRC校驗碼,并發(fā)送出去。當收到應答信號(ACK)后,程序中所設置的標志位success置1,清除TX FIFO隊列中的數據,可以進(jìn)行下一次數據的寫(xiě)入了;若未收到應答信號(ACK),則標志位success置O,繼續重發(fā),且新的數據無(wú)法寫(xiě)入。
2.3 讀光傳感器位移值
讀光傳感器的位移值,其實(shí)就是讀它對應的寄存器。在A(yíng)DNS-5030的內部寄存器中,地址為Ox02的Motion寄存器用于表示是否有位移。其最高位若為O,則無(wú)位移;最高位若為1,則有位移。另外,使用到的兩個(gè)寄存器的地址是Ox03和Ox04的DeltaX和DeltaY。這兩個(gè)寄存器的值分別表示X軸和Y軸方向上的位移。最高位表示位移的方向,1為負方向,O為正方向,低7位表示位移量。
如圖5所示,首先判斷是否有位移,即Motion的最高位是否為1。若不為1,則表示沒(méi)有位移,本次查詢(xún)結束;若為1,則表示有位移,然后再去讀 DeltaX和DeltaY的值,并將其通過(guò)無(wú)線(xiàn)發(fā)射部分發(fā)送出去。
讀DeltaX、DeltaY寄存器后,寄存器中的值自動(dòng)清零,但是Motion寄存器讀后不清零,所以最后需要對Motion寄存器的最高位進(jìn)行清零,以防止在沒(méi)有位移的情況下,系統也對DeltaX、DeltaY寄存器進(jìn)行掃描,造成不必要的浪費。
另一個(gè)需考慮的地方是光傳感器的分辨率。在上電復位后,光傳感器的分辨率為默認的500cpi(cells perinch),但是實(shí)驗效果并不好。在調試時(shí),其位移并不明顯,后來(lái)修改寄存器的值,將其分辨率改為1 000 cpi(只有500 cpi和1 000 cpi兩種分辨率),光標的位移效果明顯好于分辨率為,500 cpi時(shí)的效果。由此可見(jiàn),光傳感器的這一屬性也是相當重要的。
2.4 讀按鍵與鍵盤(pán)
左右鍵的沒(méi)計與普通按鍵的設計稍有不同。使用鼠標時(shí)可以看到,在按下左鍵同時(shí)拖動(dòng)鼠標時(shí),可以選中光標移動(dòng)范圍內的選項;同樣,右鍵也具有這樣的功能。
在左右鍵的掃描程序中,當程序掃描到有鍵按下時(shí)(例如左鍵按下),立刻將所得到的鍵值發(fā)送出去,這時(shí),接收端的左鍵值一直是處于按下?tīng)顟B(tài)的,同時(shí)也不耽誤光傳感器等的掃描;當左鍵抬起時(shí),再向接收端發(fā)送按鍵抬起的指令,一次左右鍵的掃描就完成了。這樣就可以實(shí)現在按下左鍵同時(shí)拖動(dòng)鼠標時(shí),選中光標移動(dòng)范圍內選項的操作了。
上下鍵與左鍵和右鍵的操作方式不同。在上下鍵的掃描程序中還應考慮點(diǎn)動(dòng)和連動(dòng)這兩種不同的情況。點(diǎn)動(dòng)即為在一定時(shí)間內快速按下一個(gè)按鍵,然后立即釋放;而按下一個(gè)鍵并延時(shí)一段時(shí)間再釋放,則程序將其識別為連動(dòng)。
鍵盤(pán)部分設置了20個(gè)鍵,是一個(gè)5×4的矩陣,包括“O~9”10個(gè)數字鍵,“上、下、左、右”4個(gè)方向鍵,“←”鍵,“確定”鍵,“Esc”鍵以及3個(gè)快捷鍵(“顯示桌面”、“瀏覽器”和“我的電腦”)。其中“0~9”10個(gè)數字鍵是復用鍵,像手機鍵盤(pán)一樣,根據一定時(shí)間內連擊次數的不同,可以輸入不同的鍵值。
結語(yǔ)
本文所涉及的硬件均在實(shí)際中調試通過(guò)。實(shí)驗證明,MSP430系列單片機成本較低,在低功耗產(chǎn)品中的應用極為廣泛,將會(huì )得到廣大開(kāi)發(fā)人員的認同。本系統已實(shí)現鼠標和手機鍵盤(pán)結合的基本功能,以后仍可以對其功能進(jìn)行補充,完善多功能無(wú)線(xiàn)鼠標的性能。
評論