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