微控制器串列埠通訊,除錯時發出訊號正常,但是接收不到訊號,有懂程

2021-04-20 08:38:17 字數 2907 閱讀 4707

1樓:匿名使用者

我也是初學,看不懂傳送函式的這句

while(ti == 0);

ti = 0;

是不是有點問題?

「微控制器串列埠通訊,串列埠助手除錯收發都正常,接到一塊就不正常」請問您是怎麼解決的?謝謝

2樓:匿名使用者

每片微控制器單獨與串列埠助手通訊成功。說明你的2個微控制器串列埠通訊都很正常,

但2個微控制器合在一起就通訊不成功,傳送、接受不到資料!很可能是以下原因:

1)仔細檢查2片微控制器的腳,rx tx 交叉接且要共地。

2)串列埠助手通訊是採用中斷接收觸發訊號的,反應迅速且準確,你微控制器也可採用外部中斷作觸發,用定時器來讀取資料,一般比較迅速準確。

3)你可以傳送0x55 或 0xaa,這樣的值來確定接收資料是否會正常。

如果還是不行,你用示波器監視下,看看資料傳送口是否有資料傳送?

3樓:

通常的解決辦法 第一步都是把問題現象描述清楚,文字描述,必要的截圖,**等。

有時,在描述問題的過程中,自己的明白了問題所在和解決辦法。

4樓:匿名使用者

再說說具體的問題 怎麼連的

5樓:16溫柔

用"mx虛擬串列埠"試試,

有詳細講解各種功能

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

6樓:

先解釋一下現象:

(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根線沒有分別對應上。

7樓:

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

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

8樓:匿名使用者

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

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

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

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

9樓:

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

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

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

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

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

10樓:

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

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

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

while(!ti);

ti = 0;}

微控制器串列埠通訊原理,微控制器串列埠通訊的原理?

1 51系列微控制器的串列埠有4個模式,可分別用作串並轉換 並串轉換 非同步序列通訊 2種模式 非同步序列通訊中,有1 8 1和1 8 1 1兩種幀格式,多機通訊是特殊的通訊方式。2 基本原理是兩組移位暫存器。將並行通訊轉換成序列通訊模式 傳送部分 或反之 接收部分 可全雙工執行。3 速度通過移位脈...

pc機與微控制器串列埠通訊問題利用串列埠通訊助手將字串發給微控制器微控制器返回字串到串列埠通訊助手

問題出在你傳送時關掉中斷,因為丟掉了資料造成的,解決的辦法是 延時一段時間等待接收完畢後再傳送,比如檢測到有接收資料後,延時10毫秒,之後再傳送回pc。給你指出幾處明顯的錯誤。1.resv沒有最大值的限定,這樣你的程式在執行的時候ch resv 會指向不明位址,因為ch最大為10個位元組。2.某種程...

arm微控制器串列埠通訊接收不到,arm 微控制器串列埠通訊 接收不到

微控制器和arm這兩樣的板子都是你自己的,就從這兩個塊子查起嗎,這樣問別人也不好說是什麼原因,也沒看到你的板子。要搞清幾個問題 1,微控制器與串列埠除錯助手能通訊成功,是雙向的,即微控制器是與電腦通訊吧,電腦能收 發,還是單向的,微控制器只收嗎。2 同樣,串列埠除錯助手與arm也能通訊成功,也是雙向...