微控制器接收PC串列埠除錯助手發過來的資料時,總是第一次資料接收不到,重新發一次就才正常

2021-05-26 23:07:30 字數 3177 閱讀 5651

1樓:匿名使用者

要看程式全貌才知道具體原因,你可以將串列埠中斷的優先順序設為最高試試。

2樓:匿名使用者

應該是程式上的錯誤,或者在接收口接一個上拉電阻

在除錯rs232串列埠通訊時,微控制器往pc機上發資料,串列埠除錯助手可以接收,但是pc往微控制器發資料,接收不到。

3樓:

先解釋一下現象:

(1)max232的12腳即r1out連線到了微控制器的rx腳,因此使用探頭碰max232的12引腳時匯入了干擾訊號,所以接收到了亂的資料。同時,也證明了微控制器的接收電路和程式都沒有問題。

(2)板子上的地接到示波器上的地,pc才能收到資料,說明微控制器與pc沒有共地。同時,也證明了微控制器的傳送電路、程式和pc的接收電路都沒有問題。

原理:(1)pc的串列埠即rs232有9個引腳,與微控制器通訊時用到三個引腳,依次是2腳rx、3腳tx、5腳訊號gnd。

(2)而微控制器串列埠與此相反,2腳tx、3腳rx、5腳訊號gnd。

(3)只要把這三根線依次連線,2-2、3-3、5-5即可完成通訊。

(4)同時,根據實際通訊裝置介面不同,串列埠線也分多種,如直連線、交叉線、公母頭區別等。

故障排除流程:

(1)用萬用表等測量max232的14腳t1out與開發板序列介面的2腳tx、max232的13腳r1in與開發板序列介面的3腳rx、開發板序列介面的5腳與電源地是不是分別連線。如果連線沒問題,則進行下一步。

(2)用萬用表等測量串列埠線,pc端的2腳與微控制器端的2腳、pc端的3腳與微控制器端的3腳、pc端的5腳與微控制器端的5腳是不是分別對應,如果對應連線沒問題,則進行下一步。

(3)將pc上序列介面的2、3引腳短接。

(5)如果收不到,則說明pc的串列埠問題(排除串列埠工具沒有開錯串列埠或短接沒問題的情況下),換臺電腦試下。能收到,則說明電腦端收發都沒問題,進行下一步。

(6)將串列埠線插到電腦上,開發板端的插頭不插而直接將2、3腳短接。再次用串列埠工具傳送,看是否能接收到,如果能接收到,則證明串列埠線沒問題,進行下一步。

(7)將串列埠線插到開發板得序列介面上,再使用串列埠工具收發。

(8)如果以上都不行,則自己做3根線,也可以使用杜邦線,將pc的tx與開發板的rx、pc的rx與開發板的tx、pc的訊號地與開發板的地分別相連。再用串列埠工具收發測試。

通過以上步驟,則可以逐步排查到問題的具體原因。不過,根據問題及之後的描述,最大的可能性是串列埠線用的不對,導致pc串列埠與開發板串列埠的3根線沒有分別對應上。

4樓:

如果用的是51微控制器,除了確認電纜沒問題外,

可以查一下又沒有可能不小心把對應rxd的sfr給賦值0了,查這個不一定要看程式,可以拔掉微控制器晶片看串列埠上接收引腳波形,不好拔的話,按住微控制器復位開關不鬆手也許也可以。

5樓:匿名使用者

微控制器往pc上能發說明串列埠本身應該沒有問題:如果是你自己做的板子最好檢視一下微控制器接收那一路是否有虛焊或有短路情況(直接使用現成的開發板無視)。

然後仔細檢視下程式是否有問題,再在程式中下斷點,就下在接收到資料的下一條**。然後發資料,如果斷住說明資料收到了,是後面處理點亮led的**的問題。如果沒有那就是沒接收到。

還沒有就再使用示波器,示波器要設定成低電平觸發模式,微控制器的串列埠(tx,rx)平時都是高電平,起始位是低電平,後面就是你設定的資料位(7位或8位),還有停止和校驗位根據你設定的情況。資料傳送都是瞬間完成的,所以一定要使用觸發模式,如果捕捉不到,說明pc端的傳送有問題,可以換個串列埠除錯工具,還不行換跟串列埠線,再不行換臺電腦。一般到此問題肯定能解決了啊(除非中途有操作失誤的情況)

另外,一般使用串列埠還是使用中斷模式,可以節省系統資源,降低功耗!

6樓:

步驟一,串列埠除錯可以對你的微控制器

傳送嗎?如果可以,那就是你pc程式問題,如果不可以,那就是你微控制器問題,但是也可能是步驟二問題。

步驟二:傳送資料不對,一般常見的,比如16進位制傳送?還是acsii傳送?

步驟三:學會使用「串列埠監視」的小工具,監視資料包是否遵循協議。

步驟四:看你pc程式吧。用串列埠監視工具可以發現,可能你的pc程式都沒有包出來。

7樓:

1、微控制器串列埠控制在scon裡有個ren暫存器設定正確嗎?接收允許標誌。

2、串列埠中斷開了嗎?即使是查詢方式也要有ri狀態可以查詢才能接收。

3、微控制器串列埠接收最好還是用中斷方式,方便的多void isr_serial(void) interrupt 4sbuf= i; // echo

while(!ti);

ti = 0;}

在除錯rs232串列埠通訊時,微控制器往pc機上發資料,串列埠除錯助手可以接收,但是pc往微控制器發資料,接收不到。

8樓:吃飯自殺的豬

那樣是串列埠助手

源肯定收不到pc下發的資料的

232是三線的 發(tx),收(rx)和地(gnd)pc和mcu應該這樣連線

pc mcu

tx <--- > rx

rx <---> tx

gnd -- gnd

mcu和串列埠助手應該這樣連線

mcu 串列埠助手

rx <---> tx

tx <----> rx

gnd ---- gnd

串列埠助手和pc應該這樣連線:

pc 串列埠助手

tx < --- > rx

rx <----> tx

gnd ---- gnd

按照題意,你的連線方式一定是

pc 串列埠助手

tx < --- > tx

rx <----> rx

gnd ---- gnd

這樣是肯定收不到資料的

解決辦法: 把串列埠助手的收和發兩跟線位置換一下注意: 觀察微控制器串列埠資料時 又要換回來

9樓:匿名使用者

檢查下線路.

你是如何確定微控制器未收到資料的.

檢查下pc電腦的串列埠是否正常

10樓:匿名使用者

估計是微控制器串列埠接收有問題,接收是中斷還是查詢方式?中斷的話要注意每進入中斷要記得清中斷標誌位,查詢的話比較好理解,應該不會有大的問題,只要程式正確

51微控制器通訊問題,串列埠除錯助手能接受微控制器傳送的資料,但是微控制器卻不能接受串列埠除錯助手傳送的資料

delay 延時短一點,其他沒看出有問題 在除錯rs232串列埠通訊時,微控制器往pc機上發資料,串列埠除錯助手可以接收,但是pc往微控制器發資料,接收不到。如果用的是51微控制器,除了確認電纜沒問題外,可以查一下又沒有可能不小心把對應rxd的sfr給賦值0了,查這個不一定要看程式,可以拔掉微控制器...

51微控制器串列埠通訊接收的過程的疑問

第一,接收資料時如果有高階別中斷產生,那麼將響應該中斷,接收資料將失敗,資料丟失。第二 響應中斷後,沒有退出中斷前,如果繼續有資料傳送過來,那麼後傳送過來的資料將丟失。關於微控制器串列埠收發過程的幾個疑問 微控制器程式設計 原則,所有中斷 程式 應該儘可能 簡短小,如 串列埠 中斷 只把接收 的資料...

51微控制器與pc機之間的硬體串列埠連線具體的

51微控制器與pc機之間的硬體串列埠連線,如果 pc 機有 串列埠 用 rs232轉換ttl 與微控制器 rxd txd 連線,如果 pc 機沒有 串列埠 用 usb轉換ttl 與微控制器 rxd txd 連線,硬體連線後 就是 微控制器 軟體 與 pc機軟體 vb 的 程式設計問題了,還有設計一個...