接觸cc1101這款無線模塊剛好一個月的時間了闷袒,從最開始的無從下手坑律,到慢慢可以套用一點程序,讀寫一個寄存器,再到收發(fā)數據晃择,實在不易冀值。回頭看看和老師的聊天記錄宫屠,以及和唐的一些學習列疗,也是他們一步步的指導我如何調試,這一小段學習經歷浪蹂,必須記錄下來抵栈,這是對自我的反思,也為了以后遇到問題時坤次,能夠回來看看獲取靈感古劲。
在這過程有個問題是,遇到問題不跟老師說缰猴,也可以說自己不知道該如何去問所遇到的問題产艾,這是最不可有的。
一滑绒、無從下手
當老師讓我來調試usb電路板時闷堡,我是沒有任何信心的,為什么呢疑故?因為我那時連一個流水燈都得看示例程序(現(xiàn)在才有些領悟要想寫一個程序杠览,先得明白它的工作流程再去寫)而現(xiàn)在突然讓我做難了好幾個級別的項目,這不是強行寫程序嘛纵势。這我肯定寫不了踱阿,當時心里就有種被嚇到的感覺。所以也如了自己心意吨悍,做了好幾天扫茅,沒有任何進展,而師父那幾天又催促育瓜,實在沒轍了,找上了唐栽烂。
在找唐之前躏仇,我連這個模塊最重要的spi都沒弄懂,對工作流程也是一知半解腺办。經過和他的幾天學習之后焰手,工作流程逐漸的清晰起來。也知道了怎樣調用函數怀喉。
二书妻、讀寫寄存器
了解一些工作流程后,就開始讀寫寄存器躬拢,在這過程遇到了很多問題躲履,消耗了大概十天時間见间,下面把在讀寫寄存器中遇到的問題和解決方法列出來。
遇到問題:如何讀寫寄存器工猜?
解決方法:調用讀寫寄存器函數米诉,如下圖:
遇到問題:寄存器讀到的值為255
如何解決:如果讀出來總是255,可能spi數據輸入管腳miso有問題篷帅。查看miso引腳史侣,在程序運行的時候,mosi有變化魏身,而miso一直是高電平惊橱。原來是miso在端口初始化程序里定義成輸出管腳了。最終讀寫寄存器問題總算解決箭昵。
反思:要一步步的查找原因李皇,查看各種不正常的現(xiàn)象,而不是一頓亂搞宙枷。
三掉房、spi模塊給usb模塊發(fā)送數據
遇到問題:在主程序內調用了發(fā)送數據程序,但一直在程序里的兩條語句循環(huán)慰丛,如下圖
解決方法:一步一步設置斷點進行調試卓囚,如:斷點設在最后那個halspistobe可以運行到不?那就是能夠跳出這個while诅病,運行到到下面的halspistrobe哪亿?師父是從這幾條斷點,判斷發(fā)送正常贤笆。
遇到問題:總算是能收到數據蝇棉,但收到的數據出現(xiàn)亂碼。這個問題在店家的資料有程序說明芥永,之前有看過幾遍篡殷,但當時沒有想到這點。
解決方法:根據賣家的格式修改埋涧,自己模塊發(fā)送數據成功板辽。
四、自己模塊接收買的模塊的數據
接收程序是一大坑棘催,坑了師父劲弦,師父在一開始提醒了我可能接收的格式和發(fā)送格式要一致。
遇到問題:接收和發(fā)送一樣醇坝,又在兩條語句循環(huán)邑跪。如圖
如何解決:師父讓我讀一個寄存器,這個函數是讀模塊狀態(tài),非常好用画畅,可以根據它來看程序是否有問題砸琅。進入接收后,你加這個函數看看無線模塊是否處于接收狀態(tài)夜赵。halSpiReadStatus(CCxxx0_MARCSTATE)CCxxx0_MARCSTATE為0x35明棍,讀該狀態(tài)寄存器的返回值的bit4:0為CC1101當前狀態(tài)(0x00:SLEEP 0x01:IDLE 0x0D:RX 0x13:TX)
加進去上面那條函數后,看到返回值為13寇僧,一開始以為是進去了發(fā)送狀態(tài)摊腋,其實是13十進制顯示,十六進制是0d嘁傀,狀態(tài)沒毛病兴蒸。
然后我調用函數后,想用字母a來讀這個函數返回值细办,其實錯了橙凳。師父說:函數括號內必須是寄存器地址,不能隨便寫0笑撞。a=那行可以不要岛啸,上面那行前直接加個a=,就可以了茴肥。
遇到問題:接收不到數據
如何解決:讀寄存器函數read寫成了rend坚踩。這個函數定義錯了,不是halspirendreg瓤狐,應該是halspireadreg瞬铸,改過來。改過來后用自己的兩個模塊能互發(fā)了础锐。哎嗓节,以后一定要注意這種低級錯誤。
在這個問題出現(xiàn)的時候皆警,我十分消極拦宣,沒有任何積極性,覺得是我解決不了的耀怜,有師父幫忙就交給師父恢着,我想辦法肯定比不上他,干脆也就不想了财破,懶散了,而師父从诲,一直都沒放棄左痢。
遇到問題:用買的模塊發(fā)送數據,自己的模塊還是接收不到。
如何解決:換了臺電腦俊性,可以接受到略步,但有些亂碼。更改和發(fā)送數據一樣的格式定页,可以正常接收趟薄。
無線模塊收發(fā)總算搞完,耗費時間一整月典徊。雖然不易杭煎,但內心很是開心,這也許是成功一小步的原因吧卒落。下面開始新的學習羡铲,調試電子桌牌。成功只是把遇到的問題不斷去解決而已儡毕。
發(fā)送的數據是可變長度也切,調用這個函數,始終運行不了腰湾。
反思:大部分問題都是自己的粗心啊雷恃,坑了老師