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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論