51兼容射頻Soc nRF9E5與無線光機(jī)鼠標(biāo)設(shè)計
【摘 要】本文首先比較詳細(xì)、系統(tǒng)地介紹了最新51兼容射頻SoC nRF9E5的片內(nèi)微控制器和其它功能模塊;然后分析了無線鼠標(biāo)與有線鼠標(biāo)的區(qū)別,并引出了無線光機(jī)鼠標(biāo)的概念和工作原理,給出用nRF9E5進(jìn)行無線光機(jī)鼠標(biāo)設(shè)計的方案和該方案中的電池壽命的計算方法;最后,說明用nRF9E5進(jìn)行無線光機(jī)鼠標(biāo)設(shè)計的優(yōu)勢。
【關(guān)鍵詞】nRF9E5;射頻;無線通信;光機(jī)鼠標(biāo);鼠標(biāo)
1. 引言
nRF9E5是Nordic VLSI公司于2004年2月5日推出的系統(tǒng)級RF芯片,其內(nèi)置nRF905 433/868/915MHz收發(fā)器、8051兼容微控制器和4輸入10位80ksps AD轉(zhuǎn)換器,是真正的系統(tǒng)級芯片。內(nèi)置nRF905收發(fā)器與nRF905 芯片的收發(fā)器一樣,可以工作在ShockBurstTM(自動處理前綴、地址和CRC)方式。內(nèi)置電壓調(diào)整模塊,最大限度地抑制噪音,為系統(tǒng)提供1.9V到3.6V的工作電壓。nRF9E5符合美國通信委員會和歐洲電信標(biāo)準(zhǔn)學(xué)會的相關(guān)標(biāo)準(zhǔn)。由于nRF905功耗低,工作可靠,因此很適用于無線光機(jī)鼠標(biāo)設(shè)計。
2. nRF9E5功能介紹
2.1微控制器
nRF9E5的片內(nèi)微控制器與標(biāo)準(zhǔn)51兼容。指令時序與標(biāo)準(zhǔn)51稍有區(qū)別,典型的區(qū)別是nRF9E5的片內(nèi)微控制器的指令周期為4到20個指令周期。中斷控制器支持5個擴(kuò)展的中斷源:ADC中斷、SPI中斷、RADIO1中斷、RADIO2中斷和喚醒定時器中斷。片內(nèi)控制器還有3個與8052相同的定時器。一個和8051相同的串口,可以用定時器1和定時器2來作為異步通信的波特率產(chǎn)生器。此外,還擴(kuò)展了兩個數(shù)據(jù)指針,以方便于從XRAM區(qū)讀取數(shù)據(jù)。
微處理器中有256字節(jié)的數(shù)據(jù)RAM和512字節(jié)的ROM。上電復(fù)位或軟件復(fù)位后,處理器自動執(zhí)行ROM中的引導(dǎo)區(qū)中的代碼。用戶程序通常是在引導(dǎo)區(qū)的引導(dǎo)下,從EEPROM加載到1個4K的RAM中,這個4K的RAM也可作存儲數(shù)據(jù)用。如果應(yīng)用當(dāng)中不用掩膜ROM(也即內(nèi)含的ROM),程序代碼必須從外部非易失性存儲器中加載,比較常見的是通過SPI接口擴(kuò)展型號為25320的EEPROM。
nRF9E5的大部分寄存器和標(biāo)準(zhǔn)8051相同,只是為了控制一些8051沒有的功能,增加了一些特殊功能寄存器,如RADIO(P2)、ADCCON、ADCDATAH、ADCDATAL、ADCSTATIC、PWMCON、PWMDUTY等。nRF9E5中的P0、P1和P2口寄存器地址和標(biāo)準(zhǔn)8051中的相同,都是0x80,0x90,0xA0,但功能和標(biāo)準(zhǔn)8051中的有所不同。
圖1 nRF9E5功能圖[1]
2.2 PWM
nRF9E5內(nèi)有一個可編程控制的PWM(脈寬調(diào)制)輸出,使用時,通過程序改變P0.7的功能來實現(xiàn),并可編程決定PWM工作于6位、7位或8位。PWM的頻率與晶振有關(guān),可編程控制。
2.3 SPI接口
SPI(串行外設(shè)接口)的接口引腳有MISO(接收EEPROM的SDO送來的數(shù)據(jù))、SCK(給EEPROM的SCK提供時鐘信號)、MOSI(送數(shù)據(jù)到EEPROM的SDI)、EECSN(給EEPROM的CSN送使能信號)。SPI口的MISO、SCK和MOSI與P1口的低3位重用,通過寄存器SPI_CTRL控制來控制功能間的撤換。SPI硬件不產(chǎn)生任何片選信號,可以用GPIO口來進(jìn)行片選。通常,系統(tǒng)上電時,SPI自動和片外的25320相連,當(dāng)程序加載完成后,MISO(P1.2)、MOSI(P1.0)和SCK(P1.0)可能會用作其它用途,比如其它的SPI器件或GPIO。
2.4 LF時鐘,RTC喚醒定時器,GPIO喚醒和WTD
nRF9E5內(nèi)有一個低頻的時鐘CKLF,該時鐘常開。當(dāng)晶振開始工作后,CKLF頻率為4kHz;晶振不工作時,CKLF是一個低功耗RC晶振并且不能禁能,只要VDD 1.8V,其連續(xù)工作。RTC喚醒定時器、WTD(看門狗)和GPIO喚醒全都工作在CKLF頻率,以保證芯片低功耗工作時能夠完成這三個功能。
RTC喚醒定時器是個24位可編程控制的遞減計數(shù)器,WTD則是個16位可編程控制的遞減計數(shù)器。RTC喚醒定時器和WTD的循環(huán)周期一般在300us和80ms之間,默認(rèn)為1ms。
2.5 AD轉(zhuǎn)換器
nRF9E5片內(nèi)有10位ADC,AD轉(zhuǎn)換參考電壓可以通過軟件設(shè)置在AREF和1.22V之間(內(nèi)部參考電壓)。AD轉(zhuǎn)換器的4個輸入可通過軟件進(jìn)行選擇,通道0到3可以把對應(yīng)引腳AIN0到AIN3上的電壓值分別轉(zhuǎn)換為數(shù)字值,通道4用于對nRF9E5工作電壓的監(jiān)控。AD轉(zhuǎn)換器默認(rèn)工作于10位方式,可通過軟件使其工作于6位、8位或12位方式。
2.6 射頻收發(fā)器
nRF9E5收發(fā)器通過內(nèi)部并行口或內(nèi)部SPI口與其它模塊進(jìn)行通信,具有同單片射頻收發(fā)器nRF905相同的功能。DuoCeiver接收器輸出的數(shù)據(jù)準(zhǔn)備信號,可通過程序使其為微處理器的中斷或通過GPIO口的傳給CPU。
nRF9E5工作于433/868/915 ISM頻段。收發(fā)器由一個完整的頻率合成器、一個功率放大器、一個調(diào)節(jié)器和兩個接收器組成。輸出功率、頻道和其它射頻參數(shù)可通過對特殊功能寄存器RADIO(0xA0)編程進(jìn)行控制。發(fā)射模式下,射頻電流消耗僅為11mA,接收模式下為12.5mA。為了節(jié)能,可通過程序控制收發(fā)器的開/關(guān)。
3. 無線鼠標(biāo)的基本知識[2]
無線鼠標(biāo)的基本功能和普通鼠標(biāo)相同,唯一的區(qū)別是無線鼠標(biāo)通過無線方式傳送鼠標(biāo)信息給PC機(jī),而普通鼠標(biāo)是通過電線。這意味著無線鼠標(biāo)檢測鼠標(biāo)移動和按鍵信息的方法和普通有線鼠標(biāo)一樣,也是用開關(guān)來檢測按鍵,用球和滾軸來檢測鼠標(biāo)的移動。無線鼠標(biāo)使用電池供電,所以應(yīng)該盡量考慮節(jié)能問題,盡量用最少的次數(shù)就能把檢測到的鼠標(biāo)信息發(fā)送到PC機(jī)。無線鼠標(biāo)在PC機(jī)處還應(yīng)有一個接收器,一般該接收器是通過USB接口或串口與PC機(jī)相連,目前發(fā)展的趨勢是采用USB接口。
4. 無線光機(jī)鼠標(biāo)方案
無線光機(jī)鼠標(biāo)器,即將滾輪的機(jī)械轉(zhuǎn)動轉(zhuǎn)換成光信號,然后變?yōu)閿?shù)字電信號再通過無線的方式發(fā)送給和PC機(jī)相連的接收器。無線光機(jī)鼠標(biāo)器底部有一個露出一部分的塑膠小球,當(dāng)鼠標(biāo)器在操作桌面上移動時,小球隨之轉(zhuǎn)動,在鼠標(biāo)器內(nèi)部裝有三個滾軸與小球接觸,其中有兩個分別是X軸方向和Y軸方向滾軸,用來分別測量X軸方向和Y軸方向的移動量,另一個是空軸,僅起支撐作用。拖動鼠標(biāo)器時,由于小球帶動三個滾軸轉(zhuǎn)動,X軸方向和Y軸方向滾軸又各帶動一個轉(zhuǎn)軸(稱為譯碼輪)轉(zhuǎn)動。譯碼輪(見圖2)[3]的兩側(cè)分別裝有紅外
圖2 譯碼輪和光敏傳感器工作原理
發(fā)光二極管和光敏傳感器,組成光電耦合器。光敏傳感器內(nèi)部沿垂直方向排列有兩個光敏晶體管A和B。由于譯碼輪有間隙,故當(dāng)譯碼輪轉(zhuǎn)動時,紅外發(fā)光二極管發(fā)出的紅外線時而照在光敏傳感器上,時而被阻斷,從而使光敏傳感器輸出脈沖信號。光敏晶體管A和B被安放的位置使得其光照和阻斷的時間有差異,從而產(chǎn)生的脈沖A和脈沖B有一定的相位差,利用這種方法,就能測出鼠標(biāo)器的拖動方向。塑膠小球的移動帶動滾軸轉(zhuǎn)動,滾軸每轉(zhuǎn)動一個小角度,鼠標(biāo)位置計數(shù)器加1,每隔一定時間,nRF9E5就把鼠標(biāo)位置計數(shù)器的值讀出,通過計算得出鼠標(biāo)移動的位移,再把位移信息發(fā)送給PC機(jī)。
鼠標(biāo)的按鍵是典型的開關(guān),每個開關(guān)和nRF9E5的一個GPIO口相連。與開關(guān)相連的GPIO口配置為輸入狀態(tài),并通過外部上拉電阻把其置高。按鍵在被按下的時候可能會出現(xiàn)抖動,所以在軟件設(shè)計的時候一般要考慮到去抖動,一般的方法是延時15-25ms再去檢測按鍵。一般的鼠標(biāo)按鍵有:左鍵、中鍵和右鍵。系統(tǒng)原理圖如圖3所示。
射頻部分基于nRF9E5設(shè)計,系統(tǒng)晶振為16MHz,EEPROM存儲程序,使用nRF9E5的ShockBurstTM工作方式發(fā)送鼠標(biāo)信息包。ShockBurstTM工作方式在芯片硬件設(shè)計時就已經(jīng)考慮到節(jié)能,因此使用該工作方式可以延長電池壽命。
5. 無線光機(jī)鼠標(biāo)電池壽命算法[2]
5.1工作狀態(tài)分析
無線光機(jī)鼠標(biāo)中,最耗電是紅外發(fā)光二極管,而不是射頻收發(fā)部分,因此,要使發(fā)光二極管盡量少耗電并且鼠標(biāo)又能正常工作。下文給出一個節(jié)電的方法,首先把發(fā)光二極管的工作狀態(tài)分為以下三種:
狀態(tài)1:鼠標(biāo)在移動并且要求以最大的精確度測出移動信息。此狀態(tài)下,tledon=10us,tkedoff=200us,每隔10ms,鼠標(biāo)信息被精確算出并發(fā)送給PC機(jī)。
狀態(tài)2:鼠標(biāo)剛剛被用過但現(xiàn)在不用。此狀態(tài)下tledon=10us,tledoff=25000us。當(dāng)用戶再次拖動鼠標(biāo)時,也不會感覺得出25000us的短延時。鼠標(biāo)從狀態(tài)1進(jìn)入狀態(tài)2一般應(yīng)在5ms左右,當(dāng)鼠標(biāo)檢測到移動時,應(yīng)立刻從狀態(tài)2進(jìn)入狀態(tài)1。
狀態(tài)3:當(dāng)鼠標(biāo)很長時間沒用時,進(jìn)入狀態(tài)3。此狀態(tài)下tledon=10us,tledoff=100000us。同樣,很久沒有使用之后再次拖動鼠標(biāo)時,用戶感覺不出來100000us的延時。一旦檢測出鼠標(biāo)被移動時,鼠標(biāo)應(yīng)該馬上進(jìn)入狀態(tài)1,從狀態(tài)2進(jìn)入狀態(tài)3一般要1到2分鐘。
5.2工作電流的計算
發(fā)光二極管的工作電流是10mA。nRF9E5在工作狀態(tài)時工作電流為3mA,空閑狀態(tài)時工作電流是25uA,傳送ShockBurstTM數(shù)據(jù)包時工作電流為11mA。各個狀態(tài)時的平均電流可根據(jù)公式(1)來計算:
至于狀態(tài)1,要考慮到ShockBurstTM發(fā)射所消耗的電流。假設(shè)數(shù)據(jù)包共為124位,發(fā)射速度為1Mbit/s,則nRF9E5所用時間為124us,此外,起動時間為202us,ShockBurstTM的工作時間加起來應(yīng)該是326us。因此,可得到狀態(tài)1的平均電流算式,如式(4)
nRF9E5推薦外接晶振頻率為16MHz,當(dāng)外接晶振工作頻率降低時,無線光機(jī)鼠標(biāo)的平均工作電流也會明顯降低。經(jīng)過計算,nRF9E5外接晶振是4MHz的無線光機(jī)鼠標(biāo)的電池壽命約為外接晶振是16MHz時的1.33倍。同樣,降低nRF9E5的射頻發(fā)射速度,無線光機(jī)鼠標(biāo)的電池壽命也會增大。
5. 結(jié)論
nRF9E5尺寸小,使用中外圍元件少,433/868/915MHz三個工作頻率,非常適合用來做無線光機(jī)鼠標(biāo)與PC機(jī)進(jìn)行通信。nRF9E5的ShockBurstTM技術(shù),使得無線光機(jī)鼠標(biāo)的功耗更低,設(shè)計中為節(jié)約用電而編寫的程序更少,并且電池監(jiān)管更方便。此外,nRF9E5更易于實現(xiàn)安全的無線光機(jī)鼠標(biāo)信息的發(fā)送,如果設(shè)計需要,還可以擴(kuò)展更多的鼠標(biāo)按鍵。
參考文獻(xiàn)
[1] Nordic VLSI ASA Inc. 2.4Ghz RF transceiver with embedded 8051 compatible microcontroller and 9 input, 10 bit ADC[Z].2003.5
[2] Nordic VLSI ASA Inc. nRF24Ex in a wireless keyboard design[Z].2003.10
[3] http://www.vip998.com/dnfiles/dn-hwxyhsb.htm