串列埠與微控制器通訊時好時壞,微控制器模擬串列埠通訊有什麼利弊??

時間 2021-06-25 02:57:43

1樓:

首先試試串列埠好使不。。。。

拿pc機開啟個串列埠除錯軟體,將rxd與txd拿個導線短接一下。。。之後用軟體傳送隨便一些資料,由於txd與rxd是短接的,那麼軟體接收到的資料應該是和發射資料一致,如果不一致,線壞了,如果徹底就收不到,線懷了,多試幾次,時好時壞,線接觸不良。。。

如果一切正常,那麼就得看微控制器的串列埠介面是不是好的了,示波器也行,萬用表也行,測測看。。。

如果一切良好,軟體問題,自己寫的程式的時序有問題。嘛,由於微控制器有很多種,我也就會那麼兩三種,ttl轉pc電平你用的那種ic也不知道,所以,自己檢查程式時序問題吧。。。

2樓:

我懷疑你的電源系統是不是不穩定,可以多加一些濾波電容試驗一下。同時你的串列埠接收傳送函式是怎麼寫的,不知道你的程式設計有沒有問題

3樓:壞壞—雨

建議你在電腦端加一個光電隔離器,我工作的電腦就加了,對串列埠也有保護作用

4樓:倚劍笑東風

波特率設定對了麼?不能太大!

中間有沒有電平轉換(即,rs232類的東東)?

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

5樓:匿名使用者

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

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

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

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

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

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

6樓:

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

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

7樓:匿名使用者

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

8樓:16溫柔

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

有詳細講解各種功能

微控制器模擬串列埠通訊有什麼利弊??

9樓:做而論道

串列埠通訊,或者 iic 通訊,應該是由專門的硬體,來完成的。

cpu 對這些硬體,設定一下,再傳送一下資料,就可以等待結果了。

有些微控制器,太簡陋,沒有相應的硬體,只能用軟體程式設計,模擬硬體,來實現。

執行這些程式,當然,必須佔用 cpu 的時間。這就是《佔用大量的cpu資源》。

有時,還要使用定時器、中斷源,這也是《佔用大量的資源》。

10樓:seyen媛

隨著微控制器的使用日益頻繁,用其作前置機進行採集和通訊也常見於各種應用,一般是利用前置機採集各種終端資料後進行處理、儲存,再主動或被動上報給管理站。這種情況下下,採集會需要一個串列埠,上報又需要另一個串列埠,這就要求微控制器具有雙串列埠的功能,

但我們知道一般的51系列只提供一個串列埠,那麼另一個串列埠只能靠程式模擬。

所說的模擬串列埠, 就是利用51的兩個輸入輸出引腳如p1.0和p1.1,置1或0分別代表高低電平,也就是串列埠通訊中所說的位,如起始位用低電平,則將其置0,停止位為高電平,則將其置1,各種資料位和校驗位則根據情況置1或置0。

至於串列埠通訊的波特率,說到底只是每位電平持續的時間,波特率越高,持續的時間越短。如波特率為9600bps,即每一位傳送時間為1000ms/9600=0.104ms,即位與位之間的延時為為0.

104毫秒。微控制器的延時是通過執行若干條指令來達到目的的,因為每條指令為1-3個指令週期,可即是通過若干個指令週期來進行延時的,微控制器常用11.0592m的的晶振,現在我要告訴你這個奇怪數字的來歷。

用此頻率則每個指令週期的時間為(12/11.0592)us,那麼波特率為9600bps每位要間融多少個指令週期呢?指令週期s=(1000000/9600)/(12/11.

0592)=96,剛好為一整數,如果為4800bps則為96x2=192,如為19200bps則為48,別的波特率就不算了,都剛好為整數個指令週期。

11樓:匿名使用者

如果微控制器有串列埠,用它是最好的,程式設計方便,介面現成.模擬是為了解決老式的微控制器無串列埠的一種替代方法.對於學習串列埠的工作原理理解有意,但需要微控制器模擬出串列埠的時鐘以及對應的時序關係來,因此微控制器需要模擬,計算,傳送,接收時也需要判斷時序和有用訊號的分解還原.

12樓:匿名使用者

模擬串列埠通訊,或者模擬iic通訊都會佔用大量的cpu資源,這種**不成熟,如果是使用延時方式做的話,確實會佔用大量的cpu資源,但是使用中斷和其它方式配合的方法,其實不會很佔資源,這個要看個人的能力。

13樓:匿名使用者

模擬串列埠通訊沒有做過,模擬iic通訊倒是做過了的,對於iic來說就是要cpu控制一個i/o實現高頻率的翻轉來提供時鐘,而另外一個i/o作為資料線,因為i/o的高速翻轉,所以要大量佔用cpu的資源。

多個微控制器之間通訊,串列埠不夠用。怎麼辦

14樓:匿名使用者

看看你使用的微控制器還有什麼可用的資源 spi iic can等等

15樓:匿名使用者

如果可以用一主機多從機的方式進行多機通訊的話,那麼主機用一個串列埠就可以連幾十個從機了。

16樓:匿名使用者

樓主,其實,還可以使用時鐘+io 來模擬串列埠的。

關於兩個微控制器串列埠通訊的問題!

17樓:匿名使用者

一個用12v電池經過7805穩壓管供電,電源沒有問題,不至於會影響到通訊。兩個不同的板子不同的電源,那麼兩個板子的地(gnd)是必須接到一起的,即要共地的。你的兩個板子的串列埠是txd,rxd直接連線的,即是ttl連線嗎?

還是用rs232或rs485連線的?只有在rs485模式下,只接兩條線就可以通訊的,ttl連線或rs232連線都必須共地,另外,ttl連線的距離要很短的,最好還是接成rs232連線可靠。所以,先要確定你的連線是什麼的?

從連線方式上找原因,及共地上找原因,不會是電源的原因的。

18樓:匿名使用者

微控制器 與 微控制器 直接 串列埠通訊,需要連線 rxd、txd、gnd,

如果 用同一個 電源 只連線 rxd、txd 是沒有問題 的,如果 不是 同一個 電源,則必須 連線rxd、txd、gnd。

如果 距離比較 長 幾百米,可以轉換成 rs485 連線 只要rs485 的 a、b 兩根線就可以。

19樓:匿名使用者

不共地肯定不行的啊 沒有相對電壓了啊

rs485用差分不用共地

但是uart是普通的電平所以不共地是不行的

20樓:執子之手

是的,電源模組不好,加個濾波電路吧

21樓:

電池供電是不是電流不夠?

22樓:駱楓法霽

先用串列埠除錯助手接收微控制器傳送的資料,在除錯助手中選擇輸出十六進位制顯示,顯示的就不是字元了,一般的串列埠除錯助手預設的是字元顯示,如果串列埠除錯助手接收的是你要傳送的資料,那說明傳送端沒問題,再用除錯助手像另一個微控制器傳送幾個資料(選擇以十六進位制傳送),看看是否能顯示正確,單獨這樣來操作可以分別確定是**的問題,都正常了再用兩個微控制器互相傳送接收資料。

微控制器串列埠,微控制器串列埠作用?

關於串列埠實驗你可以看看這篇文章 手把手教你用增強型51實驗板實現rs232串列埠通訊 電子製作 2006年8月 站長原創,如需引用請註明出處 上一期,我們已經利用增強型51實驗板學會了微控制器控制步進電機轉動的方法,這一期,我們將一起來學習一下微控制器如何與pc機進行通訊,一起來完成一個簡單的rs...

5V微控制器與3 3V微控制器串列埠通訊問題

yesyes科 5v微控制器與3.3v微控制器串列埠不能通訊,是設定錯誤造成的,解決方法如下 1 首先51微控制器的可用記憶體只有00h 7fh,堆疊指標設定在60h,則堆疊的大小就是60h 7fh。這算是有規定大小的。2 堆疊主要是為子程式呼叫和中斷操作而設立的,因此對應有兩項功能 保護斷點和保護...

微控制器接收串列埠資料,怎麼用微控制器確定串列埠接收資料的時間間隔?

你通過串列埠助手要接受字串或一組資料需要在微控制器端開闢一個緩衝區,否則可能丟失資料。以下程式是較為通用的串列埠收發例程,開闢一個16位元組的緩衝區,兩個指標,一個存數指標,一個取數指標,兩指標相等,證明沒有新的接收資料。include define uchar unsigned charuchar...