0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

串口問(wèn)題常見的問(wèn)題有哪些

jf_78858299 ? 來(lái)源:jf_78858299 ? 作者:jf_78858299 ? 2023-04-23 17:20 ? 次閱讀

什么是串口通信

串口通信,就是傳數(shù)據(jù)只有一根線傳輸,一次只能傳一個(gè)位,要傳一個(gè)字節(jié)就需要傳8次。串口通信就是把數(shù)據(jù)串在一根線上傳輸,所以就叫串口吧。

在對(duì)速率要求不高的情況,使用一根線發(fā)送數(shù)據(jù)是帶來(lái)大大的方便和實(shí)用價(jià)值的。

為了能正常發(fā)送和接收正確的數(shù)據(jù),那異步串口通信就需要如下圖的格式。

圖片

在串口的通信參數(shù)上,就有了波特率、起始位、數(shù)據(jù)位、校驗(yàn)位、停止位這幾個(gè)參數(shù)。

串口通信主要為分232,485,422三種通信方式,這三種有什么區(qū)別呢?

232

圖片

232通信主要是由RX、TX、GND三根線組成。STM32串口通信相關(guān)實(shí)例:[按下按鍵,通過(guò)串口發(fā)送數(shù)據(jù)實(shí)例]。

RX接TX,TX接RX,GND接GND。這里發(fā)送和接收分別是由不同的線處理的,也就是能同時(shí)發(fā)送數(shù)據(jù)和接收數(shù)據(jù),這就是所謂的全雙工通信。

在這里擴(kuò)展一下,串口通信還有一個(gè)功能叫做全功能串口通信,也叫標(biāo)準(zhǔn)串口。因?yàn)樵趦蓚€(gè)設(shè)備間進(jìn)行數(shù)據(jù)傳輸,有些設(shè)備處理速度比較快,有些數(shù)據(jù)比較慢。為了保證數(shù)據(jù)能正常傳輸,在RX、TX的基礎(chǔ)上,還增加了幾個(gè)控制引腳,最后成了9個(gè)引腳,也就是常見的DB9這個(gè)東西,如下圖所示。

圖片

但是,如今很多控制器、人機(jī)界面、PLC等使用串口通信中一般不使用標(biāo)準(zhǔn)串口,而是直接使用RX、TX、GND三根線來(lái)通信的。

485

485的出現(xiàn),是為了解決232通信距離受限的問(wèn)題。

485通信只需要+、-兩根線,或者也叫A、B兩根線。A,B兩根線的差分電平信號(hào)就是作為數(shù)據(jù)信號(hào)傳輸。由于發(fā)送與接收都是用這兩根線,也就是說(shuō)每次只能用作發(fā)送或者只能用作接收。所以,485是半雙工通信。

圖片

485就是這樣犧牲了232全雙工的效率來(lái)達(dá)到自己傳輸距離遠(yuǎn)的代價(jià)。

422

422的出現(xiàn),是為了既實(shí)現(xiàn)232的全雙工通信方式,又能像485這樣提高傳輸距離。422也常被標(biāo)注為485-4,而485被標(biāo)注為485-2。因?yàn)?85-2是2根線,485-4是4根線,下圖是422的示意圖。

圖片

422就是把232的RX分成兩根線,RX+,RX-,把TX分成TX+,TX-。這樣就可以同時(shí)發(fā)送和同時(shí)接收了,還可以像485這樣,有較遠(yuǎn)的傳輸距離??墒沁@樣一種很有優(yōu)勢(shì)的通信方式,卻用的不多,最常用到的是232跟485。

串口通信常見問(wèn)題

電腦使用USB轉(zhuǎn)串口可以和設(shè)備通信上,換成屏與設(shè)備就通信不上了

1)有可能電腦USB轉(zhuǎn)串口接到設(shè)備上,使用的是標(biāo)準(zhǔn)串口功能,也就是除了RX,TX,GDN外,還使用了其它引腳。比如像歐姆龍PLC,三菱PLC,在實(shí)際與屏的通信中,就需要接某些引腳短接的情況。

2)電腦與控制器或PLC通信時(shí),是掃描波特率參數(shù),自適應(yīng)的,屏通信可能參數(shù)沒(méi)有設(shè)備好。在三菱,基恩士等PLC,就存在變化波特率進(jìn)行通信交互的過(guò)程。

3)也有可能是接線方式不對(duì)。因?yàn)橛行〥B9,還需要公頭,母頭。如果不注意的話,也會(huì)存在把TX接到TX上,把RX接到RX上,這樣需要注意的地方。

4) 在這里補(bǔ)充一下,有時(shí)候可能會(huì)使用一些串口助手發(fā)送測(cè)試數(shù)據(jù)與控制器通信,有些串口助手的奇偶校驗(yàn)是不起作用,這個(gè)要提醒一下。

這A家的屏可以和設(shè)備通信,換成B家的屏就通信不上了

1) 首先確認(rèn)一下接線是否正確了,RX和TX是否兼容。

2) 地線是否沒(méi)有接。

3) 除了RX,TX,GND,是否還有其它引腳需要短接的。

4) 通信協(xié)議是否一致或不完善,波特率是否一樣。

以前不接地線可以通信,換個(gè)設(shè)備為什么需要接地線了

這個(gè)問(wèn)題和上一個(gè)類似,因?yàn)橛行┰O(shè)備使用了隔離電源。以前不接地可以通信,有可能實(shí)際上地線已經(jīng)接了,所以才可以通信??赡軗Q了個(gè)帶隔離電源的,兩個(gè)設(shè)備的地是隔離的,就需要在串口上把地線接起來(lái)。這個(gè)我是自身經(jīng)歷過(guò)的,有個(gè)客戶老說(shuō)他的設(shè)備通信不上,后來(lái)拍個(gè)照我給我,他地線沒(méi)有接,他說(shuō)以前不接地線可以通信的。于是我就給他科普了一下。

一個(gè)設(shè)備是232,另一個(gè)設(shè)備是422,沒(méi)有轉(zhuǎn)換設(shè)備,怎么辦

這個(gè)情況我遇到過(guò),客戶的設(shè)備是422通信的,但是我手上并沒(méi)有422設(shè)備,只有232通信可以測(cè)試。因此就需要把422轉(zhuǎn)成232進(jìn)行通信。

剛才也講了422和232的接線,因?yàn)檫@兩個(gè)都是全雙工的,接收和發(fā)送都是分到的,而422只是以一種差分信號(hào)進(jìn)行傳輸。

把422的Rx+與232的TX接,422的RX-與232的GND接。

把422的TX+與232的RX接,422的TX-與232的GDN接。

這樣,422設(shè)備要發(fā)送數(shù)據(jù)的,就可以發(fā)送到了232的RX上。232的TX發(fā)數(shù)據(jù)后,由于TX和GND也形成了差分信號(hào)給422,422就可以接收到數(shù)據(jù)了。

用232通信沒(méi)問(wèn)題,用485通信沒(méi)問(wèn)題,使用232轉(zhuǎn)485之后就通信不穩(wěn)定

232和485從通信原理上,最大一個(gè)差別是全雙工和半雙工的區(qū)別??墒菓?yīng)用層發(fā)送數(shù)據(jù)和接收數(shù)據(jù)才不管底下是全雙工還是半雙工。

但是485就得管了。因?yàn)榧热皇前腚p工,就得嚴(yán)格保證通路上只能有發(fā)送或只能有接收的數(shù)據(jù),一旦同時(shí)有發(fā)送和接收,數(shù)據(jù)就會(huì)沖突了。所以解決的辦法就是主站設(shè)備,也就是主動(dòng)命令的一方就需要嚴(yán)格控制好發(fā)送數(shù)據(jù)命令的節(jié)奏了。當(dāng)然有些232轉(zhuǎn)485的設(shè)備做的比較好了,可以優(yōu)化這個(gè),但是主站還是要控制,比較把通信速率調(diào)節(jié)慢一些。

要想實(shí)現(xiàn)兩個(gè)屏或兩個(gè)主站通過(guò)485訪問(wèn)modbus設(shè)備,有什么好的辦法

在485通信中,基本上是一主多從。但是遇到一些客戶實(shí)際使用中,有客戶想用兩個(gè)屏來(lái)訪問(wèn)一個(gè)modbus設(shè)備的。目前暫時(shí)還沒(méi)有好的辦法。等這個(gè)功能出來(lái)后,再來(lái)給大家演示操作吧。

串口通信的弱點(diǎn)

1)信號(hào)干擾的問(wèn)題

建議使用帶屏蔽線,接線要嚴(yán)格,比如要接地。有些485通信上,還考慮接上終端電阻來(lái)匹配。如果是232,盡量不要讓線太長(zhǎng)。通信協(xié)議上盡量避免長(zhǎng)報(bào)文的數(shù)據(jù)通信。

2)波特率匹配的問(wèn)題

因?yàn)橛行┰O(shè)備的計(jì)算的波特率是存在誤差的,特別是一些控制器,由于使用的晶振不一樣。因此在一些波特率比如9600波特率就存在誤差。存在誤差帶來(lái)的影響是什么呢。因?yàn)榻邮辗绞峭ㄟ^(guò)時(shí)間來(lái)計(jì)算一個(gè)位的。那么如果一個(gè)報(bào)文過(guò)長(zhǎng),就會(huì)存在誤差積累的問(wèn)題,算著算著就偏了。所以,這也是串口通信不穩(wěn)定的一些地方,在使用上應(yīng)注意避免發(fā)送太長(zhǎng)數(shù)據(jù)的包。

3)在一些可能會(huì)存在干擾的情況,可以考慮使用奇校驗(yàn)或者偶校驗(yàn)

因?yàn)殡m說(shuō)出現(xiàn)錯(cuò)誤的可能性不大,但既然存在干擾,如果加了校驗(yàn),至少可以把錯(cuò)誤的報(bào)文過(guò)濾掉??偤帽葲](méi)有校驗(yàn)然后通信數(shù)據(jù)錯(cuò)了不知道。或者盡量使用一些帶校驗(yàn)的協(xié)議,防止數(shù)據(jù)出錯(cuò)。

4) 串口通信本來(lái)就比較慢,請(qǐng)降低對(duì)數(shù)據(jù)響應(yīng)的要求

因?yàn)榇谕ㄐ疟旧砭捅?a target="_blank">以太網(wǎng)慢。而且,串口通信并不是能像CPU那樣多線程處理。因?yàn)榫鸵粋€(gè)口一個(gè)線數(shù)據(jù)出去,即便你應(yīng)用到程序再怎么用多線程處理數(shù)據(jù),但是最底下也只有一個(gè)口出去,一次也只能傳一個(gè)位,一個(gè)字節(jié)過(guò)去。因?yàn)橛锌蛻粼谑褂?600的波特率通信,但是又希望多少的數(shù)據(jù)可以在多少毫秒內(nèi)得到響應(yīng)。

但是串口通信還是要事實(shí)求是,所以正確認(rèn)識(shí)串口通信對(duì)應(yīng)用,對(duì)開發(fā),對(duì)溝通都有著很大的幫助的。

為什么不用同步通信

剛才提到,同步通信需要依賴于時(shí)鐘信號(hào)。這就存在一個(gè)問(wèn)題,這個(gè)時(shí)鐘信號(hào)是誰(shuí)來(lái)發(fā)起呢。在同步通信中,往往需要一個(gè)主設(shè)備發(fā)起時(shí)鐘信號(hào)讀從模塊的數(shù)據(jù)。在實(shí)際中,有屏讀PLC,有屏讀屏的數(shù)據(jù)。而單純地從異步串口通信來(lái)說(shuō),是沒(méi)有主從之說(shuō),雙方都是平等的角色,都可以互發(fā)信息,互收信息。而同步通信一般是應(yīng)用于CPU讀一些模塊,由CPU發(fā)起時(shí)鐘信號(hào),比如讀SD卡模塊,就可以通過(guò)SPI方式,還有一些傳感器模塊。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    15884

    瀏覽量

    175354
  • STM32
    +關(guān)注

    關(guān)注

    2257

    文章

    10828

    瀏覽量

    352459
  • 串口通信
    +關(guān)注

    關(guān)注

    34

    文章

    1601

    瀏覽量

    55235
  • GND
    GND
    +關(guān)注

    關(guān)注

    2

    文章

    525

    瀏覽量

    38446
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    常見串口通信的幾個(gè)問(wèn)題請(qǐng)教?

    有關(guān)常見串口通信的幾個(gè)問(wèn)題請(qǐng)教論壇里的專家? 1、常見串口通信CAN,DP,PN,ETHER IP/TCP,ETHERCAT等,這些串口協(xié)議
    發(fā)表于 04-04 16:30

    STM32G030J6芯片串口下載程序常見問(wèn)題哪些?

    STM32G030J6芯片串口下載程序常見問(wèn)題哪些?
    發(fā)表于 11-26 07:25

    STM32串口通訊常見的問(wèn)題哪些?如何解決?

    STM32串口通訊常見的問(wèn)題哪些?如何解決?
    發(fā)表于 12-06 06:44

    UART串口通訊硬件常見的注意事項(xiàng)哪些

    串口通訊的數(shù)據(jù)格式是怎樣的?串口通訊硬件常見的注意事項(xiàng)哪些?
    發(fā)表于 12-06 07:28

    常見通信協(xié)議哪些?

    常見通信協(xié)議哪些?串口電平的標(biāo)準(zhǔn)是什么?
    發(fā)表于 01-20 07:28

    常見串口哪些

    一、常見串口? 常見串口UART口(Universal Asynchronous Receiver Transmitter:通用異步收發(fā)
    發(fā)表于 02-17 07:04

    STM32中串口的一些常見問(wèn)題哪些?

    STM32中串口的一些常見問(wèn)題哪些?
    發(fā)表于 02-18 08:00

    在移植STM32的USB轉(zhuǎn)串口驅(qū)動(dòng)到SylixOS時(shí)常見的問(wèn)題哪些?怎么解決?

    在移植STM32的USB轉(zhuǎn)串口驅(qū)動(dòng)到SylixOS時(shí)常見的問(wèn)題哪些?怎么解決?
    發(fā)表于 02-21 07:37

    常見串行通信接口哪些?

    常見串行通信接口哪些?串口配置的一般步驟是怎樣的?
    發(fā)表于 02-28 07:27

    常見的充電方式哪些?

    常見的充電方式哪些? 常見的充電方式以下三種:    1. 恒流充電:在充電過(guò)程中保持恒定的電流給電池充電,是最
    發(fā)表于 11-05 09:25 ?4333次閱讀

    stm32_常見串口、串口通信分類、UART編程套路以及注意事項(xiàng)

    一、常見串口? 常見串口UART口(Universal Asynchronous Receiver Transmitter:通用異步收發(fā)
    發(fā)表于 12-20 19:26 ?2次下載
    stm32_<b class='flag-5'>常見</b><b class='flag-5'>串口</b>、<b class='flag-5'>串口</b>通信分類、UART編程套路以及注意事項(xiàng)

    串口通信是什么,常見的問(wèn)題以及解決方法

    (Universal Synchronous/Asynchronous Receiver/Transmitter)——通用同/異步串行接收/發(fā)送器。其中最常見串口通信的時(shí)序如下圖:
    的頭像 發(fā)表于 11-18 10:19 ?2955次閱讀

    【分享】什么是串口通信?串口常見通信問(wèn)題如何解決?

    在之前的文章中小編介紹了什么是CAN總線,包括CAN總線的數(shù)據(jù)格式和通信特點(diǎn)等方面的內(nèi)容,今天將分享串口通信相關(guān)知識(shí)內(nèi)容。CAN總線、串口通信都屬于比較常見的有線傳輸方式。前文指路《還不
    的頭像 發(fā)表于 06-21 17:45 ?2127次閱讀
    【分享】什么是<b class='flag-5'>串口</b>通信?<b class='flag-5'>串口</b><b class='flag-5'>常見</b>通信問(wèn)題如何解決?

    STM32串口中斷及DMA接收常見的幾個(gè)問(wèn)題

    STM32串口中斷及DMA接收常見的幾個(gè)問(wèn)題
    的頭像 發(fā)表于 10-26 16:41 ?3173次閱讀
    STM32<b class='flag-5'>串口</b>中斷及DMA接收<b class='flag-5'>常見</b>的幾個(gè)問(wèn)題

    串口通信常見的錯(cuò)誤和故障排除方法

    在進(jìn)行串口通信時(shí),確實(shí)可能會(huì)遇到一些常見的錯(cuò)誤和問(wèn)題。
    的頭像 發(fā)表于 03-02 14:19 ?3367次閱讀