|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
再問TC35I的波特率 |
| 作者:wimhy 欄目:通信技術(shù) |
昨天明明用2400bps波特率和TC35I模塊連接好了,本想今天測(cè)試下模塊的返回?cái)?shù)據(jù),以便下一步的編程. 結(jié)果,今天一大早就來實(shí)驗(yàn)室,和模塊的通信一直不正常,發(fā)送AT指令給模塊,模塊沒有任何回應(yīng).將各個(gè)波特率300-56000都試遍了,就是不行. 給模塊打電話,電話打通了,單片機(jī)程序接受到模塊的返回?cái)?shù)據(jù),卻不是RING的ASCII碼(也沒有0x0D,0x0A),同樣用各個(gè)波特率測(cè)試了,都沒有收到正確的數(shù)據(jù). 將論壇上所有關(guān)于TC35I的帖子看了個(gè)遍,試了好些方法,都還沒有搞定. 各位朋友,支支招啊. |
| 2樓: | >>參與討論 |
| 作者: wimhy 于 2007/4/5 10:05:00 發(fā)布:
ding 我的測(cè)試程序: /***************************************************************** ** 函數(shù)名: Send_char ** 輸 入: ch ** 輸 出: 無 ** 功能描述:通過串口發(fā)送字符ch. ****************************************************************/ void Send_char(uchar ch) { SBUF = ch; while(TI==0); TI = 0; } /***************************************************************** ** 函數(shù)名: Send_string ** 輸 入: *str,strlen ** 輸 出: ** 功能描述:通過串口發(fā)送字符串*str, ****************************************************************/ void Send_string(uchar *str) { do { Send_char(*str);//發(fā)送字符串. str++; //地址指向下一個(gè). }while(*(str)!='\0');//已經(jīng)指向字符串末尾. } /****************************************************************** 主程序 ******************************************************************/ main() { uchar Rec[6]; TMOD = 0x20; /*定時(shí)器1產(chǎn)生波特率*/ SCON = 0x50; /*串口工作方式1(10位異步收發(fā))*/ PCON = 0x00; /*使用1倍速波特率*/ TH1 = 0xF3; TL1 = 0xF3; /*波特率2400*/ TR1 = 1; IGT = 0; Delay_ms(100); IGT = 1; /*點(diǎn)火*/ while(1) { Send_string("AT\r"); Rec[0] = Rec_char(); Rec[1] = Rec_char(); Rec[2] = Rec_char(); while(1) } 在Rec[0]處程序就死了,接收不到串口返回的數(shù)據(jù). 接線檢查幾便了,沒有錯(cuò). 即使關(guān)閉回顯,發(fā)送AT之后也該返回一個(gè)OK啊. |
|
| 3樓: | >>參與討論 |
| 作者: chunyang 于 2007/4/5 10:08:00 發(fā)布:
可能是你的MCU系統(tǒng)波特率誤差太大或連線出了問題 能收到數(shù)但不正確,前者可能性較大。模塊的波特率是自適應(yīng)的,上電后要發(fā)個(gè)AT指令以令其自適應(yīng)你的波特率,但你的波特率要夠準(zhǔn)。 |
|
| 4樓: | >>參與討論 |
| 作者: wimhy 于 2007/4/5 10:13:00 發(fā)布:
感謝斑竹 給模塊撥電話可以打通,用各種波特率接收到的數(shù)據(jù)都不正確. 斑竹自適應(yīng)波特率的意義我明白了. 我再找個(gè)11.0592的晶體試一試. |
|
| 5樓: | >>參與討論 |
| 作者: wimhy 于 2007/4/5 11:26:00 發(fā)布:
分析了下數(shù)據(jù) 在9600bps條件下,電話進(jìn)來時(shí)候接收到的數(shù)據(jù)是: 0x0D,0x0A,0xB2,0x89,0x8E,0x87,0x0D,0x0A 而正常數(shù)據(jù)因該是: 0x0D,0x0A,0x52,0X49,0X4E,0x47,0x0D,0x0A(RING) 目前使用晶體是12M,從數(shù)據(jù)上來看因該確實(shí)是晶體的問題.可惜現(xiàn)在手邊沒有11.0592的晶體,等下午買回來再看. |
|
| 6樓: | >>參與討論 |
| 作者: liulicat 于 2007/4/5 16:07:00 發(fā)布:
我是新手 我現(xiàn)在也在做用模塊通過入網(wǎng)的計(jì)算機(jī)發(fā)短信 但是還不太清楚 |
|
| 7樓: | >>參與討論 |
| 作者: wimhy 于 2007/4/5 20:13:00 發(fā)布:
問題解決了 剛才從電子市場(chǎng)購(gòu)買了元件回來(這里落后,跑一趟老遠(yuǎn)了),換上11.0592的晶體,問題解決了. 回想起來整個(gè)過程,由于使用2400bps的時(shí)候在12M晶體下誤差0.16%,較小;而9600bps的時(shí)候誤差就是8.51%了,因此在2400bps下和模塊能建立正常的數(shù)據(jù)交換.但后來由于我通過指令將撥特率修改成9600了,并通過指令將9600的撥特率保存了,難怪后來就再也聯(lián)系不上了. 呵呵,加緊時(shí)間做接下來的工作吧. 特別感謝chunyang斑竹的熱心幫助! |
|
| 8樓: | >>參與討論 |
| 作者: wimhy 于 2007/4/5 20:17:00 發(fā)布:
特別感謝chunyang斑竹的熱心幫助! |
|
| 9樓: | >>參與討論 |
| 作者: chunyang 于 2007/4/5 21:17:00 發(fā)布:
也算“吃一塹長(zhǎng)一智” |
|
| 10樓: | >>參與討論 |
| 作者: weidian 于 2007/4/9 22:03:00 發(fā)布:
` 這種鉆研精神是成功的保障,值得提倡 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |