|
今天算是最有成效的一天了,解決了年前沒解決的nrf24l01自動ACK下不能收發(fā)的問題,而且在隊友提示下弄清楚了dds686電表的通信協(xié)議DL645中關(guān)于數(shù)據(jù)校驗的工作方式,從而用串口調(diào)試助手實現(xiàn)了與電表的通信,然而移植到單片機(jī)上時卻遇到了不小的困難,主要是在數(shù)據(jù)傳送的校驗上出問題,以前從來沒有搞過帶校驗的串口通信,然后又經(jīng)過不懈的努力,查資料、不停的實踐,終于在晚飯前實現(xiàn)了用單片機(jī)和電表通信。至此,我們的模塊基本上都實現(xiàn)了,接下來的就是聯(lián)機(jī)調(diào)試了。
昨天和隊友商量用ds1302萬年歷芯片來減小上位機(jī)的開銷,今天讓另外一個隊友研究,結(jié)果他對這些東西十分生疏,估計前幾天在新東方被土鱉老師給洗腦了,到了晚飯時間還是沒能讀出數(shù)據(jù)。晚飯回來,我用了十分鐘研究了一下他的源碼,發(fā)現(xiàn)問題解決問題。(其實一年前就搞過,所以上手快O(∩_∩)O哈!)。
nrf24l01:年前考試考煩了,遂下心搞了一下nrf24l01,還得電路理論都沒怎么復(fù)習(xí)(還不知道掛沒,老師一直不發(fā)成績,估計是兇多吉少),不過還好,進(jìn)過兩天兩夜的奮戰(zhàn),終于能夠通信了,只是不能使用自動ACK。當(dāng)時是使用的網(wǎng)絡(luò)上通行的源碼,照理說不會錯。
年后回學(xué)校又開始搞,第一天看了下程序,怕自己完全忘記了,發(fā)現(xiàn)還是不錯,畢竟付出了努力。第二天開始搞自動ACK,還是不行。今天重新審視datasheet,曾經(jīng)沒怎么東的一段話引起了我的注意。是關(guān)于通道地址設(shè)置。因為nrf24l01有六個數(shù)據(jù)通道,但是只有通道0是用來發(fā)送ACK的,所以要求發(fā)送端通道0的接收地址與該發(fā)發(fā)送端的發(fā)送地址相同。當(dāng)nrf24l01發(fā)送完數(shù)據(jù)后,通道0立即轉(zhuǎn)為接收模式等待ACK。網(wǎng)上的源碼是用通道0作為發(fā)送通道。我想,通道0又要同時作為ACK接收,會不會沖突?于是將發(fā)送通道改為了1通道,就是不用通道0發(fā)送,哎,結(jié)果就行了。可是網(wǎng)絡(luò)上、datasheet上都沒有說不能用通道0發(fā)送,因此問題是解決了,但原因還不明,還是懷疑是工作方式配置不正確。但是,它可以工作了,這是鐵的事實。
dds686:最開始是連用現(xiàn)有讀表程序都不能通信,感到很郁悶,知道是電路問題,卻遲遲不能解決。電表是用的rs485通信協(xié)議,單片機(jī)是用的串口,中間要有轉(zhuǎn)換,網(wǎng)上找了一個rs232--rs485的轉(zhuǎn)換電路,做了一個,連不上,于是又做了一個還是連不上。后來仔細(xì)分析才發(fā)現(xiàn)只是把485換成了232,卻沒有把232轉(zhuǎn)成串口。歸咎兩點,網(wǎng)上太多232轉(zhuǎn)485,搞得我暈頭轉(zhuǎn)向;還有就是沒仔細(xì)分析。后來加了一個232,當(dāng)看見通訊指示燈亮起,我差點叫出來。主要的問題還是485是半雙工的通訊協(xié)議,要去控制數(shù)據(jù)流方向,挺麻煩。然后就是DL645電表通信協(xié)議了,準(zhǔn)備好好修理一下它的,搞了兩天才發(fā)現(xiàn)是被它給修理了。我就直接用串口調(diào)試助手把命令發(fā)給電表都不能通信,今天才搞懂是通信方式不對,還要加上偶校驗位,再次看見通訊燈閃亮,我差點摔電腦。然后就是用單片機(jī)發(fā)命令了,如果前面兩個問題能讓我頭大一倍的話,那此時我的頭就有平時四倍大了,因為這個問題一個頂倆。費了九牛二虎之力,試驗了無數(shù)種工作模式+電路連接+校驗方式的組合,我才發(fā)現(xiàn)開始的程序是對的,只是因為線接反,造成我多了兩個頭。第三次看見通訊燈亮起,我突然平靜了,哼起了口哨,慢悠悠的打開優(yōu)酷去看那幾個快樂大本營的瘋子。
說來模塊是差不多了,明天開始聯(lián)調(diào),這是最關(guān)鍵最困難的環(huán)節(jié),呵呵,我是海燕我怕誰。然后就做整機(jī)電路,然后寫報告,然后。。。呵呵。。。打鬼泣。
等一下和隊友商量一下我們系統(tǒng)的協(xié)議,山寨一個水貨,能用就行,功能又不是很強(qiáng),要求不高,就像毛豆豆,嫁給余味,沒有高追求,踏實又幸福。
最后有時間,還得搞一下上位機(jī),哎,當(dāng)時真該把C++好好學(xué)學(xué),書到用時方恨少啊。
這一次比賽有意要培養(yǎng)隊友的能力和技術(shù),唐不錯,進(jìn)步很快,但是效率還是低了些,不過比起我當(dāng)時,那可厲害多了,只是缺少實踐,有些問題處理得不靈活;另外一個,被GRE洗腦的,可得要好好加油啰。
我們的隊名是我取的,三人行,很不錯的名字,就是希望大家相互學(xué)習(xí),虛心受教。我要的不是比賽結(jié)果,而是成長,共同的成長。。。
|
|