|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
串口數(shù)據(jù)接收不正確 |
| 作者:embtoney 欄目:單片機 |
我使用PIC18F6390實現(xiàn)Uart的接收和發(fā)送,24M晶振,9600Baud,發(fā)現(xiàn)發(fā)送正常,但是接收時有時會收到不正確的數(shù)據(jù)。用示波器捕捉數(shù)據(jù)發(fā)現(xiàn)接收到的數(shù)據(jù)完全正常,請教這是什么原因? 在論壇里發(fā)現(xiàn)有高手提到過采樣速率的問題,我沒有在MICROCHIP的數(shù)據(jù)手冊中看到關(guān)于Uart采樣速率的描述。有人可以告訴我怎么設(shè)置采樣速率以及如何觀察它? |
| 2樓: | >>參與討論 |
| 作者: embtoney 于 2006/9/21 11:29:00 發(fā)布:
補充 我是采用中斷方式接收一幀數(shù)據(jù)的。 |
|
| 3樓: | >>參與討論 |
| 作者: zgl7903 于 2006/9/21 13:28:00 發(fā)布:
1沒有設(shè)置高中斷優(yōu)先級 2中斷里的時間過長 3有關(guān)中斷的操作 |
|
| 4樓: | >>參與討論 |
| 作者: anzhongxin 于 2006/9/22 10:19:00 發(fā)布:
回復(fù)! 中斷里是否很干凈,就只有數(shù)據(jù)接中斷吧! 一貞數(shù)據(jù)是幾個字節(jié)?如果連續(xù)接收多個字節(jié)的話,可能是接收數(shù)據(jù)時,由于讀取的不及時而造成的(因為PIC有兩級緩存),如果系統(tǒng)活不是很多的話,建議采用查詢接收!應(yīng)該不會出問題! |
|
| 5樓: | >>參與討論 |
| 作者: embtoney 于 2006/9/22 10:34:00 發(fā)布:
查詢接收 查詢的方式也試過了,還是不行。 |
|
| 6樓: | >>參與討論 |
| 作者: 飛翔天空 于 2006/9/22 13:59:00 發(fā)布:
re: PDF文檔有關(guān)于波特率和波特率設(shè)置寄存器(SPBRG)設(shè)定值的表格 估計你是值設(shè)的不對 也有可能是芯片有問題 你可以弄兩個按鍵,在運行時調(diào)整波特率(也可用在線DEBUG調(diào)整),看能不能調(diào)到正確的數(shù)據(jù)接收 |
|
| 7樓: | >>參與討論 |
| 作者: xieyuanbin 于 2006/9/24 6:48:00 發(fā)布:
PIC單片機的硬件UART是無法控制器采樣速率的. 接收不正常無外乎波特率不對,讀取不及時兩類,試試每次少接收一些數(shù)據(jù),或者干脆只接收一個字節(jié). 如果把每個字節(jié)之間的停止位拉長,超過兩個字節(jié)發(fā)送所需的時間的話,就可以分辨波特率不對或讀取不及時 |
|
| 8樓: | >>參與討論 |
| 作者: embtoney 于 2006/9/24 21:31:00 發(fā)布:
肯定不是波特率的問題,估計是芯片本身有什么特殊要求! 回復(fù)以上幾位朋友: 應(yīng)該不是波特率的問題,因為前端設(shè)備和后端設(shè)備都是采用同樣的pic18f6490/6390,晶振和配置位都是一樣的,確認(rèn)無問題!退一步即使配置一個非標(biāo)的波特率,也不應(yīng)該出現(xiàn)不匹配的情況。 另外應(yīng)該也不是溢出的問題,因為我的系統(tǒng)是這樣的: A<<=====>><<B>><<=====>><<C>><<=====>><<D,其中ABCD都是傳輸設(shè)備,問題是產(chǎn)生在C和D之間,也就是C不能可靠的接收D發(fā)過來的數(shù)據(jù),A、B、C之間卻沒有問題,最大突發(fā)單幀數(shù)據(jù)可以達到將近100個字節(jié)都沒有任何問題。 |
|
| 9樓: | >>參與討論 |
| 作者: embtoney 于 2006/9/24 21:32:00 發(fā)布:
和芯片的接收端口有關(guān)系,和后端設(shè)備應(yīng)該沒有關(guān)系 我發(fā)現(xiàn)這種接收不可靠的情況發(fā)生在數(shù)據(jù)到達端接設(shè)備返回來的這種情況,因此我試了一下將C作為端接設(shè)備,就是說數(shù)據(jù)到C之后返回,這時同樣情況發(fā)生--B不能可靠接收數(shù)據(jù),使用示波器抓取數(shù)據(jù)顯示在B的接收口的波形是正確的。 同樣的,我嘗試了將B作為端接設(shè)備,問題一樣出現(xiàn)。 懷疑是前端設(shè)備接收端口時序方面問題,將后端設(shè)備延遲發(fā)送,但問題依舊。 總結(jié)下來,問題應(yīng)該是和芯片的接收端口有關(guān)系,和后端設(shè)備應(yīng)該沒有關(guān)系,找尋答案中。。。。 |
|
| 10樓: | >>參與討論 |
| 作者: embtoney 于 2006/9/25 8:38:00 發(fā)布:
頂起來~′ 就是說串口來了數(shù)據(jù)進不了中斷 |
|
| 11樓: | >>參與討論 |
| 作者: anjylau 于 2006/10/26 10:08:00 發(fā)布:
研究一下 你設(shè)置的發(fā)送接收是9位還是8位,是否設(shè)有帶地址自動檢測功能,有沒有采用檢錯與糾錯的處理方法 |
|
| 12樓: | >>參與討論 |
| 作者: xieyuanbin 于 2006/10/26 10:33:00 發(fā)布:
有沒有示波器? 看看波形有沒有畸變. |
|
| 13樓: | >>參與討論 |
| 作者: stycx 于 2006/10/26 14:57:00 發(fā)布:
用2400Baud能行嗎,可以的話就是誤差的問題 |
|
| 14樓: | >>參與討論 |
| 作者: 蘭天白云 于 2006/10/26 18:47:00 發(fā)布:
有沒有懷疑過ABCD間的連接設(shè)備? |
|
| 15樓: | >>參與討論 |
| 作者: cjy 于 2006/10/26 22:26:00 發(fā)布:
將其它程序屏蔽掉,單運行串口看看 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |