新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > CC1101與MSP430F147調(diào)試經(jīng)驗(yàn)分享

CC1101與MSP430F147調(diào)試經(jīng)驗(yàn)分享

作者: 時(shí)間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
  昨天在調(diào)433MHz的無線通信,點(diǎn)對(duì)點(diǎn)通信模式,上午測試過了發(fā)送端程序,下午測試接收端程序,由于板子上沒有留一個(gè)IO供指示用,一個(gè)LED,蜂鳴器,液晶,或者串口都沒有,調(diào)試的時(shí)候很不方便,只有靠 JTAG仿真斷點(diǎn)測試,然后watch變量或者memory。按理說這也沒有什么崩潰的,慢慢弄就好了,但是事情不是想象的那么簡單,一個(gè)巨大的問題開始逼近我,讓我感覺無奈。

點(diǎn)對(duì)點(diǎn)通過了,我就繼續(xù)廣播通信測試,其實(shí)我就用一臺(tái)電腦,一個(gè)JTAG仿真器,兩個(gè)MSP430F147+CC1101板子和一個(gè) MSP430F2274+CC1101。我開啟地址校驗(yàn),發(fā)現(xiàn)我寫的錯(cuò)誤的地址他居然也可以收到數(shù)據(jù),引發(fā)我的疑問,然后為了排疑,退了一步,不開啟地址校驗(yàn),不斷修改程序,由于我就用一個(gè)電腦,一個(gè)仿真器,我的JTAG在發(fā)送端和接收端不停的拔來拔去,也沒有什么找到原因,我越弄越煩,真想用兩臺(tái)電腦,兩個(gè)仿真器,一個(gè)就負(fù)責(zé)發(fā)射端程序,一個(gè)就負(fù)責(zé)接收端程序,兩者同時(shí)調(diào),那樣多舒服啊。

本文引用地址:http://m.butianyuan.cn/article/201611/323688.htm

我用的通信模式是可變數(shù)據(jù)長度,沒有地址校驗(yàn),前導(dǎo)碼+同步碼+數(shù)據(jù)包長度+數(shù)據(jù)包+2字節(jié)CRC校驗(yàn)碼,斷點(diǎn)一下讀了一下接收的數(shù)據(jù),發(fā)現(xiàn)只有一個(gè)字節(jié)0xFF?,F(xiàn)象是只要我的數(shù)據(jù)包長度不改變就是好的,比如一直固定0x14,也就是發(fā)送20字節(jié)的數(shù)據(jù),但是當(dāng)我每次都改變數(shù)據(jù)包長度,比如每次加一個(gè)字節(jié),就接收不到正常的數(shù)據(jù)。為了查出是發(fā)送端問題還是接收端的問題,我也對(duì)2274那塊板收到的無線數(shù)據(jù)進(jìn)行讀取,發(fā)現(xiàn)也是接收字長也是1,接收數(shù)據(jù) 0xFF,這個(gè)不會(huì)錯(cuò),因?yàn)檫@個(gè)以前我用的程序,是好的板子??磥硎前l(fā)送端沒有發(fā)送出去數(shù)據(jù)。然后我就想發(fā)送的函數(shù)有什么不同,我函數(shù)是用的指針傳址調(diào)用,可以改變變量值,按理說不會(huì)有問題,我都是用的地址,沒有用形參,排除,然后懷疑是不是地址傳來傳去,最后錯(cuò),觀察最后指針指向0x200地址,watch一下memory0x200地址,的確也是發(fā)送緩沖TX_Buf的RAM的首地址,我實(shí)在不明白,難到硬件問題???那為什么硬件問題我每次都是20字節(jié)就是可以的,不應(yīng)該啊……軟件問題,我實(shí)在不能理解,找不出原因,再說這程序我以前也用過,沒太大區(qū)別,這是什么情況……就這樣我不知道把 JTAG拔了多少次,在發(fā)送端接收端換來換去,換的我都快受不了,沒辦法,回去睡覺……

早上快八點(diǎn)起來,吃個(gè)飯,立馬去整這個(gè)爛攤子,心想如果不給我兩個(gè)JTAG我不調(diào)了,受不了這種,九點(diǎn)多又找了一個(gè)仿真器,用了另一臺(tái)電腦,學(xué)長和我一塊調(diào)。兩臺(tái)電腦兩個(gè)人就是方便,很快發(fā)現(xiàn)一個(gè)變態(tài)的問題,發(fā)送端在JTAG在線仿真就是好的,一拔掉仿真器就不行了,就發(fā)送一個(gè)字節(jié)的數(shù)據(jù)。太奇怪了,不能不用仿真器,學(xué)長搜了一下有網(wǎng)上說可能復(fù)位問題,復(fù)位用了專門的芯片,比RC阻容電路好的多,感覺也不應(yīng)該,難道電池問題,測試得到鋰電池 3.8V,MCU引腳標(biāo)準(zhǔn)3.3V,不應(yīng)該,為什么每次數(shù)據(jù)包長度不變就可以,難以理解,然后無意中發(fā)現(xiàn)距離太近,難道是距離問題,又測試發(fā)現(xiàn)也不是因?yàn)槲曳诺奶?,排除,然后開啟看門狗,還是不行。都12點(diǎn)了,還是找不到我們的原因,感覺還是硬件問題,我和學(xué)長都崩潰掉了。

下午弄了還是弄不出來,就看了協(xié)議棧,晚上燦哥過來,我就突然變得特別開心了,因?yàn)檫@個(gè)問題也逼到他了。演示了一下錯(cuò)誤的現(xiàn)象,他試了幾下居然可以了,發(fā)現(xiàn)放的位置不行,大概是同一平面高度不行,說距離太近,難道這個(gè)天線不是全方位的,但是發(fā)現(xiàn)還是不行,太多地方不行,CC1101不可能這樣,太假,可能是電腦影響,關(guān)掉筆記本,還是不行。反正這次用的鞭狀天線居然比彈簧天線效果還差,人家2274的彈簧就能收到數(shù)據(jù),147鞭狀的就收不到,真差,換了彈簧天線還是不行。我辯解,距離這種說上午也遇到,排除了這個(gè)原因,這個(gè)也不是什么原因,測試還是不每次改變數(shù)據(jù)包就行,可以排除。只是得到這個(gè)天線可能買假了。然后發(fā)現(xiàn)一個(gè)LDO的濾波電容虛焊了,說可能這個(gè),焊好還是不行,哇咔咔……然后說測試電池,換鋰電池還是不行。然后換程序的寫法,還是不行,惱了,又拿了4塊MSP430F147的板子,測試結(jié)果發(fā)現(xiàn)一堆就一個(gè)是正常的,一個(gè)只能到16,各種變態(tài),各種難以理解,最后不行,每次發(fā)送數(shù)據(jù)前都把 CC1101復(fù)位一次,重新配置一次,還是不行,淚奔啊,把我們逼得很無奈,這什么現(xiàn)象啊,逼死了,我好開心的是他們也被逼的很無奈…… 



評(píng)論


技術(shù)專區(qū)

關(guān)閉