基于2.4 GHz射頻通信的多功能鼠標(biāo)設(shè)計(jì)
待機(jī)模式1(Standby-I)主要用于降低電流損耗(在該模式下,晶體振蕩器仍然工作)。待機(jī)模式2(Standby-II)是當(dāng)FIFO寄存器為空且CE=1時(shí)進(jìn)入此模式。待機(jī)模式下,所有配置字仍然保留。在掉電模式(Power Down)下電流損耗最小,同時(shí)nRF24L01也不工作,但其所有配置寄存器的值仍然保留。
無線發(fā)射部分上電初始化時(shí),進(jìn)行了如下配置:
①CONFIG寄存器的低4位置1,分別為16位CRC校驗(yàn),芯片上電和接收模式;
②SETUP_AW(地址寬度)寄存器配置地址寬度為5字節(jié);
③SETUP_RETR(自動(dòng)重發(fā))寄存器配置為自動(dòng)重發(fā)延時(shí)500μs,重發(fā)5次;
④RF_CH(RF頻道)寄存器配置為工作頻道2400MHz;
⑤RF_SETUP(RF設(shè)置)寄存器配置為發(fā)射功率O dBm,Air Data Rate為1 MHz;
⑥將地址寫入地址寄存器。
在配置寄存器時(shí)應(yīng)注意一點(diǎn):在寫nRF24L01的寄存器時(shí),它必須工作在掉電模式或待機(jī)模式。而在nRF24L01上電達(dá)到l.9 V以后,要經(jīng)過10.3 ms的上電復(fù)位然后再進(jìn)入掉電模式。這是一個(gè)不確定狀態(tài)。在此狀態(tài)下,對寄存器的寫操作是無法完成的,因此必須加上一個(gè)合適的延時(shí),使程序?qū)RF24L01的配置操作在掉電模式或待機(jī)模式下進(jìn)行。
當(dāng)光傳感器或按鍵等有操作時(shí),主控制器將讀入的信號(hào)寫入nRF24L01的TX_PLD,然后由芯片自動(dòng)生成報(bào)頭和CRC校驗(yàn)碼,并發(fā)送出去。當(dāng)收到應(yīng)答信號(hào)(ACK)后,程序中所設(shè)置的標(biāo)志位success置1,清除TX FIFO隊(duì)列中的數(shù)據(jù),可以進(jìn)行下一次數(shù)據(jù)的寫入了;若未收到應(yīng)答信號(hào)(ACK),則標(biāo)志位success置O,繼續(xù)重發(fā),且新的數(shù)據(jù)無法寫入。
2.3 讀光傳感器位移值
讀光傳感器的位移值,其實(shí)就是讀它對應(yīng)的寄存器。在ADNS-5030的內(nèi)部寄存器中,地址為Ox02的Motion寄存器用于表示是否有位移。其最高位若為O,則無位移;最高位若為1,則有位移。另外,使用到的兩個(gè)寄存器的地址是Ox03和Ox04的DeltaX和DeltaY。這兩個(gè)寄存器的值分別表示X軸和Y軸方向上的位移。最高位表示位移的方向,1為負(fù)方向,O為正方向,低7位表示位移量。
如圖5所示,首先判斷是否有位移,即Motion的最高位是否為1。若不為1,則表示沒有位移,本次查詢結(jié)束;若為1,則表示有位移,然后再去讀DeltaX和DeltaY的值,并將其通過無線發(fā)射部分發(fā)送出去。
讀DeltaX、DeltaY寄存器后,寄存器中的值自動(dòng)清零,但是Motion寄存器讀后不清零,所以最后需要對Motion寄存器的最高位進(jìn)行清零,以防止在沒有位移的情況下,系統(tǒng)也對DeltaX、DeltaY寄存器進(jìn)行掃描,造成不必要的浪費(fèi)。
另一個(gè)需考慮的地方是光傳感器的分辨率。在上電復(fù)位后,光傳感器的分辨率為默認(rèn)的500cpi(cells perinch),但是實(shí)驗(yàn)效果并不好。在調(diào)試時(shí),其位移并不明顯,后來修改寄存器的值,將其分辨率改為1 000 cpi(只有500 cpi和1 000 cpi兩種分辨率),光標(biāo)的位移效果明顯好于分辨率為,500 cpi時(shí)的效果。由此可見,光傳感器的這一屬性也是相當(dāng)重要的。
2.4 讀按鍵與鍵盤
左右鍵的沒計(jì)與普通按鍵的設(shè)計(jì)稍有不同。使用鼠標(biāo)時(shí)可以看到,在按下左鍵同時(shí)拖動(dòng)鼠標(biāo)時(shí),可以選中光標(biāo)移動(dòng)范圍內(nèi)的選項(xiàng);同樣,右鍵也具有這樣的功能。
在左右鍵的掃描程序中,當(dāng)程序掃描到有鍵按下時(shí)(例如左鍵按下),立刻將所得到的鍵值發(fā)送出去,這時(shí),接收端的左鍵值一直是處于按下狀態(tài)的,同時(shí)也不耽誤光傳感器等的掃描;當(dāng)左鍵抬起時(shí),再向接收端發(fā)送按鍵抬起的指令,一次左右鍵的掃描就完成了。這樣就可以實(shí)現(xiàn)在按下左鍵同時(shí)拖動(dòng)鼠標(biāo)時(shí),選中光標(biāo)移動(dòng)范圍內(nèi)選項(xiàng)的操作了。
上下鍵與左鍵和右鍵的操作方式不同。在上下鍵的掃描程序中還應(yīng)考慮點(diǎn)動(dòng)和連動(dòng)這兩種不同的情況。點(diǎn)動(dòng)即為在一定時(shí)間內(nèi)快速按下一個(gè)按鍵,然后立即釋放;而按下一個(gè)鍵并延時(shí)一段時(shí)間再釋放,則程序?qū)⑵渥R(shí)別為連動(dòng)。
鍵盤部分設(shè)置了20個(gè)鍵,是一個(gè)5×4的矩陣,包括“O~9”10個(gè)數(shù)字鍵,“上、下、左、右”4個(gè)方向鍵,“←”鍵,“確定”鍵,“Esc”鍵以及3個(gè)快捷鍵(“顯示桌面”、“瀏覽器”和“我的電腦”)。其中“0~9”10個(gè)數(shù)字鍵是復(fù)用鍵,像手機(jī)鍵盤一樣,根據(jù)一定時(shí)間內(nèi)連擊次數(shù)的不同,可以輸入不同的鍵值。
結(jié)語
本文所涉及的硬件均在實(shí)際中調(diào)試通過。實(shí)驗(yàn)證明,MSP430系列單片機(jī)成本較低,在低功耗產(chǎn)品中的應(yīng)用極為廣泛,將會(huì)得到廣大開發(fā)人員的認(rèn)同。本系統(tǒng)已實(shí)現(xiàn)鼠標(biāo)和手機(jī)鍵盤結(jié)合的基本功能,以后仍可以對其功能進(jìn)行補(bǔ)充,完善多功能無線鼠標(biāo)的性能。
評論