nRF2401的調(diào)試過程_第1頁
nRF2401的調(diào)試過程_第2頁
nRF2401的調(diào)試過程_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、經(jīng)過這幾周的努力,nRF2401的原始樣機調(diào)試基本完成了,指標(biāo)到達了預(yù)期目標(biāo)。 靈敏度很高,在-20dBm的發(fā)射功率下,可以達到10米左右的距離;在0dBm的功率下,可以超過40米。 整機平均功耗很低,平均工作電流約10uA(與工作時間的占空比有關(guān))。下面將介紹調(diào)試過程中遇到的一些問題和解決過程,希望這些可以對初學(xué)者有所幫助。因為這是目前正在開發(fā)的一個系統(tǒng),所以代碼和原理圖就不能公布了,這里只描述一些調(diào)試過程中的關(guān)鍵點,這應(yīng)當(dāng)也足夠了。開發(fā)環(huán)境:AVR Studio + WinAVR + SLISP硬件環(huán)境:ATmega88V + AVR Dragon + 自制并口下載線先調(diào)試發(fā)射部分(因為以

2、前有一套用nRF24E1做的系統(tǒng),但是功耗太大,沒有實用化,但是正好可以用來調(diào)試),nRF2401的數(shù)據(jù)手冊很簡潔, 很快就看完了。但是它只有C51的例程,沒有其他單片機的。開始以為移植起來很容易,就直接寫程序了。結(jié)果運行后,沒有任何效果,就是說發(fā)出的數(shù)據(jù)不對。 仔細(xì)對照C51的例子程序,沒有發(fā)現(xiàn)有什么區(qū)別啊。最后檢查,逐步縮小范圍,感覺問題可能在SPI部分。AVR的SPI支持4種工作模式,區(qū)別在于時鐘和 數(shù)據(jù)的時序不同,習(xí)慣上使用方式0的最多,而我當(dāng)時隨便選了方式3,修改了SPI的工作模式就正常了。發(fā)射部分可以工作了,但是新做的接收部分收不到數(shù)據(jù)。而接收部分和發(fā)射部分的電路基本相同的,只有部

3、分地方不一致。將發(fā)射的程序?qū)懭氲浇邮瞻?,可?正常發(fā)出,說明電路沒有問題,還是程序有問題。反復(fù)對比C51的程序,終于發(fā)現(xiàn)是沒有將CE設(shè)置為高引起的。因為這個接收程序是從發(fā)射程序修改而來的,而 發(fā)射程序只是定時發(fā)射一下,然后就進入Stand by狀態(tài),平時將CE和CS都置低了。從這里還發(fā)現(xiàn)nRF2401的控制和一般芯片不同,一般芯片習(xí)慣上是高電平無效,低電平使能,nRF2401是相反 的,比較容易造成習(xí)慣性錯誤。接收部分調(diào)通以后,又發(fā)現(xiàn)了新問題,接收部分取回的數(shù)據(jù)總是有規(guī)律的出現(xiàn)誤碼,總是每隔幾個數(shù)據(jù)就有一位到2位和實際值不一致。仔細(xì)檢查程序,沒有 發(fā)現(xiàn)問題,否則也不可能通信連上了。后來想到會不

4、會和SPI的速度有關(guān)系,因為只有nRF2401只有SPI和單片機連接,于是嘗試將SPI的速度降低為 500K(開始用的是1M),讀出的數(shù)據(jù)就正常了(發(fā)射部分使用了低頻,所以沒有這個問題)。為了測試發(fā)射部分的功耗,需要測量電路的電流。因為休眠時的功耗非常小,用萬用表的電流檔無法測量。于是嘗試在VCC中串聯(lián)一個電阻,測量電阻兩端 的電壓來推算電流(I=V/R)。開始串聯(lián)一個1的電阻,可以看到發(fā)射時有10幾個mV,但是休眠時測量不出來了。將電阻加大到10,這次好多了,可 以測量到休眠時有1mV,也就是大約100uA。在修改程序進一步降低功耗后,又測量不出來了。再次將電阻增加到100,這次讀出2.5m

5、V,就是 25uA使用電阻串聯(lián)時,電阻會有一定的分壓(100歐姆乘以10毫安有1V),但是我使能了BOD功能也并沒有復(fù)位,這說明工作時的時間短,電容可以短時間提供工作需要的能量,從示波器上觀察也證實了這一點??磥韱纹瑱C的性能還不錯。因為最終需要使用電池供電,需要盡量降低功耗(這里主要是降低休眠時的工作電流,因為工作時的功率是無法減少的)。為了降低單片機的功耗,做了幾種 嘗試(因為我以前做的產(chǎn)品,從來不需要考慮功耗,也就沒有用過低功耗模式,只是從數(shù)據(jù)手冊中看過一點)。開始時運行時將單片機的頻率不分頻,休眠時設(shè)置 256分頻(使用內(nèi)部8M振蕩器),以為運行時高速,休眠時低速可以降低功耗。在使用中發(fā)

6、現(xiàn)效果不明顯,電流還在mA級。于是改為內(nèi)部128K振蕩器,工 作電流明顯下降(看來實際頻率更重要,內(nèi)部分頻在其他模塊沒有工作時對功耗影響不大)。因為功率P=V*I,我先想降低工作電壓會不會降低功耗呢?看單片 機的數(shù)據(jù)手冊上電壓降低也會降低功耗的。于是將工作電壓降低到2.5V,結(jié)果測試的結(jié)果和3V是基本沒有區(qū)別,再降低到2V,萬用表的讀數(shù)也只是最后一位 跳動了,也就是說沒有什么效果??磥磉@里因為主要功耗在nRF2401上,而不是單片機上,降低電壓沒有實際用處,反而會增加麻煩(需要加入降壓電路)。 為了進一步降低功耗,一開始沒有控制nRF2401的PWR_UP端口,不發(fā)射時處于stand by模式

7、,這樣在16M時鐘下nRF2401大約有30uA的靜態(tài)電流(主要是時鐘工作的電流)。對于電池供電,這無疑還是太大了。nRF2401還有一 個PWR_UP端口,設(shè)置為低電平后,就處于休眠狀態(tài),時鐘也停止了,電流將小于1uA。在控制PWR_UP后,這次測試的數(shù)據(jù)就很理想了,休眠時的電流 小于10uA,萬用表無法測量了(讀數(shù)小于1,1mV/100=10uA)。從理論上計算,單片機大約小于5uA(啟用了看門狗定時器),其他部分小于 1uA,總共小于6uA,數(shù)據(jù)比較吻合。如果在考慮每兩秒發(fā)射一次,每次工作時發(fā)射1ms,10mA,等待穩(wěn)定和其他時間8ms,0.1mA,那么平均電 流就是6 + 10/2 +

8、 0.1*8/2 = 11.4,如果使用200mAH的電池也可以工作2年。還有一個問題,開始時我使用AVR Dragon的DebugWire仿真(8M振蕩器),降低到128K后,沒有將程序中設(shè)置時鐘256分頻的代碼屏蔽,結(jié)果出現(xiàn)了一個嚴(yán)重的問題。因為使 用內(nèi)部128K振蕩器后,只能用低速方式下載,在一次仿真不正常退出后(使用DebugWire很容易出現(xiàn)這種現(xiàn)象),想恢復(fù)為正常模式 (DebugWire使用了Reset,就不能正常下載了),但是卻無法聯(lián)機了。我分析是因為這時單片機還是處于DebugWire模式,RESET引腳 的復(fù)位功能不起作用了。而這時因為使用內(nèi)部低頻振蕩器(還256分頻),S

9、PI的速度非常慢,正常方式DebugWire很難連接。因為手頭當(dāng)時沒有多余 的芯片,于是就嘗試反復(fù)進入DebugWire模式(因為也沒有別的辦法了),在大約嘗試50次后,終于進入了DebugWire模式,趕緊恢復(fù)為正常模 式,就又可以使用了。這說明在低速SPI時,連接的成功率很低,大家也要小心這里,否則很可能造成芯片死鎖而無法恢復(fù)。nRF2401在上電后需要延時3ms才能進行初始化,開始時是使用定時器0做延時,延時基本時間是1ms。后來發(fā)現(xiàn)定時器2的分頻更多(在 128K時鐘時128分頻后正好是1ms),而且定時器2支持power save模式下中斷喚醒,于是改用定時器2做延時。開始還是正常的,可是后來發(fā)現(xiàn)時間不對,大概慢了10倍,找了半天沒有發(fā)現(xiàn)程序有什么問題,寄存器的設(shè) 置都是對的,軟件仿真時間也正確。突然想到問題是在優(yōu)化功耗時,加入 power_all_disable() 后出現(xiàn),之前沒有這個問題。于是將這個代碼先注釋掉在下載運行,果然時間就正常了。在查看手冊中,原來 power_all_disable() 會將定時器2也關(guān)閉,于是在power_all_disable()之后加上power_timer2_en

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論