標(biāo)題:
與nRF24L01痛楚地纏綿-nRF24L01調(diào)試總結(jié)
[打印本頁(yè)]
作者:
daniu
時(shí)間:
2014-12-26 21:35
標(biāo)題:
與nRF24L01痛楚地纏綿-nRF24L01調(diào)試總結(jié)
搞nRF24L01已經(jīng)有三天了,前兩天感覺(jué)還好,看得特爾洗特,了解了工作模式,但是還是有好多細(xì)節(jié)忽略掉了,網(wǎng)上查才看到好多要注意的東西。
然后就是看牛人寫(xiě)的程序。比對(duì)著看,感覺(jué)有些地方有很多不解的地方,甚至覺(jué)得是錯(cuò)的(以前用1-Wire讀ds1302時(shí)就是被書(shū)本上錯(cuò)誤程序給搞怕了,虧那本書(shū)封面還做的那么好,叫人心生敬意:權(quán)威。。
今天開(kāi)始用結(jié)合硬件調(diào)程序,結(jié)果問(wèn)題一大堆。因?yàn)槭呛?1通信,需要5V和3.3轉(zhuǎn)換,用了TI的一個(gè)芯片,就是不知道硬件有沒(méi)設(shè)計(jì)好?措娖狡ヅ湫酒臄(shù)據(jù)手冊(cè),發(fā)現(xiàn)自己電路的驅(qū)動(dòng)能力不夠,但是加了上拉發(fā)現(xiàn)是一樣的,沒(méi)加也能通信,真是費(fèi)解。
現(xiàn)在有很多問(wèn)題:
復(fù)位幾次MCU后,nRF就不能正確配置了(直觀現(xiàn)象是配置寄存器的值讀出來(lái)有問(wèn)題,也不知道是通信問(wèn)題還是真的沒(méi)配置好),重新給nRF上電,就又能配置了。
使能AutoAck后,試驗(yàn)發(fā)射部分,MAX_RT能置位(把我高興了一下),然后打開(kāi)接收,發(fā)現(xiàn)還是置位,說(shuō)明沒(méi)收到ACK;于是關(guān)掉AutoAck,發(fā)現(xiàn)并不能置位TX_DS,郁悶。
datasheet上說(shuō)寫(xiě)寄存器時(shí)必須置低CE,但是我試過(guò)置位CE再讀寄存器,嘿,一樣行,不知道為什么。
不斷的實(shí)驗(yàn),發(fā)現(xiàn)使用了TxPacket函數(shù)后會(huì)造成復(fù)位不能配置的問(wèn)題,原因不明。
現(xiàn)在有些途徑可以嘗試:改進(jìn)電源,現(xiàn)在電源是直接從MCU降壓過(guò)來(lái)的,不知道會(huì)不會(huì)影響,網(wǎng)上有說(shuō)430與nRF共電結(jié)果工作不好的情況;嚴(yán)格操作CE端;另外就是電平芯片TXB0108了,如果真的是這個(gè)芯片在作怪,那么請(qǐng)蒼天原諒我,我的確無(wú)計(jì)可施了(當(dāng)然可以花半個(gè)月廢寢忘食來(lái)研究430,如果430驅(qū)動(dòng)行了,也就證明它的確不行了)。
昨晚郁悶到凌晨4點(diǎn),還不知道今晚郁悶到什么時(shí)候,現(xiàn)在是23:49,just keep moving!
解決一個(gè)問(wèn)題。CE信號(hào)控制果然很重要,“上電怪題”就是它引起的。試驗(yàn)的程序里用了TxPacket,而nRF的發(fā)送是用CE置位來(lái)啟動(dòng)的。進(jìn)入中斷服務(wù)程序后直接寫(xiě)狀態(tài)寄存器,沒(méi)按通信協(xié)議進(jìn)行,應(yīng)該先置低CE;但是讀寄存器似乎沒(méi)影響。oh yeah,現(xiàn)在0:15,有點(diǎn)困了。
好消息,呵呵,TX_DS能置位了,估計(jì)發(fā)送端能工作了。還有個(gè)小問(wèn)題,剛才讀發(fā)送端地址時(shí)有點(diǎn)無(wú)厘頭,但是是每次都一樣,可是又和定義的不一樣(條件是配置時(shí)沒(méi)寫(xiě)地址,用的復(fù)位值E7E7E7E7E7,發(fā)送函數(shù)里寫(xiě)了地址,再次復(fù)位后值就不對(duì)了),F(xiàn)在是0:27,越來(lái)越困了。
又回來(lái)了。這個(gè)問(wèn)題還沒(méi)搞太明白。發(fā)現(xiàn)在發(fā)送時(shí)必須加一定的延時(shí)(不是CE啟動(dòng)要求的130us,而是較長(zhǎng)的一段時(shí)間,估計(jì)是用作數(shù)據(jù)包的發(fā)送的)。試驗(yàn)程序里發(fā)送了之后直接進(jìn)入中斷讀狀態(tài)寄存器,結(jié)果出來(lái)的又是每次都一樣的無(wú)厘頭數(shù)據(jù)。懷疑是發(fā)送時(shí)不應(yīng)該讀取寄存器(但記得datasheet說(shuō)是可以的)。然后在進(jìn)入中斷后馬上延時(shí),發(fā)現(xiàn)還是有兩個(gè)數(shù)據(jù)錯(cuò)了,這下就不懂了(懷疑和51寄存器組有關(guān)。有時(shí)間試驗(yàn)一下,制定寄存器組試試)。北京時(shí)間0:44。
不小心的發(fā)現(xiàn),恰好網(wǎng)上看見(jiàn)有人在問(wèn)這個(gè)。STATUS和FIFO_STATUS兩個(gè)寄存器中都有TX_FIFO標(biāo)志位,其值與沖洗寄存器和發(fā)送狀況有關(guān),下面是實(shí)驗(yàn)結(jié)果。(沒(méi)有接收端,則EN_AA數(shù)據(jù)沒(méi)發(fā)出)。都1:22了
EN_AA: (發(fā)送不成功,若不沖洗,數(shù)據(jù)保留,否則數(shù)據(jù)清除)
不BLUSH_TX STATUS 中 TX_FULL 1 , FIFO_STATUS 中 TX_FULL 1;
BLUSH_TX STATUS 中 TX_FULL 0 , FIFO_STATUS 中 TX_EMPTY 1;
dis EN_AA: (發(fā)送成功,雖然收不到,數(shù)據(jù)都被清除了)
不BLUSH_TX STATUS 中 TX_FULL 0 , FITO_STATUS 中 TX_EMPTY 1;
BLUST_TX STATUS 中 TX_FULL 0 , FIFO_STATUS 中 TX_EMPTY 1;
LALALA,LALALA,LALALA,我是賣(mài)報(bào)的小行家。。。。呵呵,居然調(diào)通了,居然收到數(shù)據(jù)了。蒼天無(wú)眼啊,居然被我給調(diào)通了(只不過(guò)是部分)。但是使能AutoAck還有點(diǎn)問(wèn)題。哎,太累了,休息下。明天再開(kāi)始吧。幸福啊。北京時(shí)間2:32。
作者:
wwwmagic
時(shí)間:
2014-12-30 12:43
謝謝樓主分享
作者:
a314487651
時(shí)間:
2015-1-27 20:55
還在設(shè)計(jì)硬件,來(lái)看看nrf24l01好調(diào)不,看你們都腦大了
作者:
delay
時(shí)間:
2015-4-4 17:48
學(xué)習(xí)了,謝謝分享
作者:
白馬
時(shí)間:
2015-4-6 10:31
好經(jīng)驗(yàn)
作者:
情鎖,劍傷
時(shí)間:
2015-11-6 18:35
我都不知道怎么搞啊
作者:
tnt844
時(shí)間:
2015-11-6 21:34
感謝經(jīng)驗(yàn)分享。學(xué)習(xí)了。
作者:
yuzengqi
時(shí)間:
2016-3-17 09:11
厲害~~~~~~~~
作者:
caidehua0503
時(shí)間:
2016-11-23 16:08
謝謝分享。。。。。。。。。!
作者:
yzz_m
時(shí)間:
2016-11-24 19:59
我也被困擾了好久
作者:
闊愛(ài)的釗釗
時(shí)間:
2017-8-12 00:08
謝謝師傅了,新手一個(gè)巡線做完了打算搞2401,在收集資料,謝謝前輩們。
作者:
Echo_logy
時(shí)間:
2018-1-20 00:56
這位前輩你的2014年的:nRF24L01單片機(jī)通信的總結(jié)--看了就會(huì)用了 的待續(xù)還沒(méi)更新啊~~~~~~~求更新~~~
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1