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

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

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

串口通信概念

電子工程師 ? 來源:ttokpm.com ? 作者:本站 ? 2008-10-14 10:25 ? 次閱讀

串口通信概念

1,什么是串口?

2,什么是RS-232?

3,什么是RS-422?

4,什么是RS-485?

5,什么是握手?

1,什么是串口?

串口是計(jì)算機(jī)上一種非常通用設(shè)備通信的協(xié)議(不要與通用串行總線Universal Serial Bus或者USB混淆)。大多數(shù)計(jì)算機(jī)包含兩個(gè)基于RS232的串口。串口同時(shí)也是儀器儀表設(shè)備通用的通信協(xié)議;很多GPIB兼容的設(shè)備也帶有RS- 232口。同時(shí),串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)。

串口通信的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。它很簡單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信。比如IEEE488定義并行通行狀態(tài)時(shí),規(guī)定設(shè)備線總常不得超過20米,并且任意兩個(gè)設(shè)備間的長度不得超過2米;而對于串口而言,長度可達(dá)1200米。

典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成:(1)地線,(2)發(fā)送,(3)接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時(shí)在另一根線上接收數(shù)據(jù)。其他線用于握手,但是不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。對于兩個(gè)進(jìn)行通行的端口,這些參數(shù)必須匹配:

a,波特率:這是一個(gè)衡量通信速度的參數(shù)。它表示每秒鐘傳送的bit的個(gè)數(shù)。例如300波特表示每秒鐘發(fā)送300個(gè)bit。當(dāng)我們提到時(shí)鐘周期時(shí),我們就是指波特率例如如果協(xié)議需要4800波特率,那么時(shí)鐘是4800Hz。這意味著串口通信在數(shù)據(jù)線上的采樣率為4800Hz。通常電話線的波特率為 14400,28800和36600。波特率可以遠(yuǎn)遠(yuǎn)大于這些值,但是波特率和距離成反比。高波特率常常用于放置的很近的儀器間的通信,典型的例子就是 GPIB設(shè)備的通信。

b,數(shù)據(jù)位:這是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,實(shí)際的數(shù)據(jù)不會(huì)是8位的,標(biāo)準(zhǔn)的值是5、7和8位。如何設(shè)置取決于你想傳送的信息。比如,標(biāo)準(zhǔn)的ASCII碼是0~127(7位)。擴(kuò)展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡單的文本(標(biāo)準(zhǔn) ASCII碼),那么每個(gè)數(shù)據(jù)包使用7位數(shù)據(jù)。每個(gè)包是指一個(gè)字節(jié),包括開始/停止位,數(shù)據(jù)位和奇偶校驗(yàn)位。由于實(shí)際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語 “包”指任何通信的情況。

c,停止位:用于表示單個(gè)包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。適用于停止位的位數(shù)越多,不同時(shí)鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時(shí)也越慢。

d,奇偶校驗(yàn)位:在串口通信中一種簡單的檢錯(cuò)方式。有四種檢錯(cuò)方式:偶、奇、高和低。當(dāng)然沒有校驗(yàn)位也是可以的。對于偶和奇校驗(yàn)的情況,串口會(huì)設(shè)置校驗(yàn)位(數(shù)據(jù)位后面的一位),用一個(gè)值確保傳輸?shù)臄?shù)據(jù)有偶個(gè)或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對于偶校驗(yàn),校驗(yàn)位為0,保證邏輯高的位數(shù)是偶數(shù)個(gè)。如果是奇校驗(yàn),校驗(yàn)位位1,這樣就有3個(gè)邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡單置位邏輯高或者邏輯低校驗(yàn)。這樣使得接收設(shè)備能夠知道一個(gè)位的狀態(tài),有機(jī)會(huì)判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。

2,什么是RS-232?

RS-232 (ANSI/EIA-232標(biāo)準(zhǔn))是IBM-PC及其兼容機(jī)上的串行連接標(biāo)準(zhǔn)。可用于許多用途,比如連接鼠標(biāo)、打印機(jī)或者M(jìn)odem,同時(shí)也可以接工業(yè)儀器儀表。用于驅(qū)動(dòng)和連線的改進(jìn),實(shí)際應(yīng)用中RS-232的傳輸長度或者速度常常超過標(biāo)準(zhǔn)的值。RS-232只限于PC串口和設(shè)備間點(diǎn)對點(diǎn)的通信。RS- 232串口通信最遠(yuǎn)距離是50英尺。

DB-9針連接頭

-------------

\ 1 2 3 4 5 /

\ 6 7 8 9 /

-------

從計(jì)算機(jī)連出的線的截面。

RS-232針腳的功能:

數(shù)據(jù):

TXD(pin 3):串口數(shù)據(jù)輸出

RXD(pin 2):串口數(shù)據(jù)輸入

握手:

RTS(pin 7):發(fā)送數(shù)據(jù)請求

CTS(pin 8):清除發(fā)送

DSR(pin 6):數(shù)據(jù)發(fā)送就緒

DCD(pin 1):數(shù)據(jù)載波檢測

DTR(pin 4):數(shù)據(jù)終端就緒

地線:

GND(pin 5):地線

其他

RI(pin 9):鈴聲指示

3,什么是RS-422?

RS -422(EIA RS-422-A Standard)是Apple的Macintosh計(jì)算機(jī)的串口連接標(biāo)準(zhǔn)。RS-422使用差分信號,RS-232使用非平衡參考地的信號。差分傳輸使用兩根線發(fā)送和接收信號,對比RS-232,它能更好的抗噪聲和有更遠(yuǎn)的傳輸距離。在工業(yè)環(huán)境中更好的抗噪性和更遠(yuǎn)的傳輸距離是一個(gè)很大的優(yōu)點(diǎn)。

4,什么是RS-485?

RS -485(EIA-485標(biāo)準(zhǔn))是RS-422的改進(jìn),因?yàn)樗黾恿嗽O(shè)備的個(gè)數(shù),從10個(gè)增加到32個(gè),同時(shí)定義了在最大設(shè)備個(gè)數(shù)情況下的電氣特性,以保證足夠的信號電壓。有了多個(gè)設(shè)備的能力,你可以使用一個(gè)單個(gè)RS-422口建立設(shè)備網(wǎng)絡(luò)。出色抗噪和多設(shè)備能力,在工業(yè)應(yīng)用中建立連向PC機(jī)的分布式設(shè)備網(wǎng)絡(luò)、其他數(shù)據(jù)收集控制器、HMI或者其他操作時(shí),串行連接會(huì)選擇RS-485。RS-485是RS-422的超集,因此所有的RS-422設(shè)備可以被 RS-485控制。RS-485可以用超過4000英尺的線進(jìn)行串行通行。

DB-9 引腳連接

-------------

\ 1 2 3 4 5 /

\ 6 7 8 9 /

-------

從計(jì)算機(jī)連出的線的截面。

RS-485和RS-422的引腳的功能

數(shù)據(jù):TXD+(pin 8),TXD-(pin 9),RXD+(pin 4),RXD-(pin 5)

握手:RTS+(pin 3),RTS-(pin 7),CTS+(pin 2),CTS-(pin 6)

地線:GND (pin 1)

5,什么是握手?

RS -232通行方式允許簡單連接三線:Tx、Rx和地線。但是對于數(shù)據(jù)傳輸,雙方必須對數(shù)據(jù)定時(shí)采用使用相同的波特率。盡管這種方法對于大多數(shù)應(yīng)用已經(jīng)足夠,但是對于接收方過載的情況這種使用受到限制。這時(shí)需要串口的握手功能。在這一部分,我們討論三種最常用的RS-232握手形式:軟件握手、硬件握手和 Xmodem。

a,軟件握手:我們討論的第一種握手是軟件握手。通常用在實(shí)際數(shù)據(jù)是控制字符的情況,類似于GPIB使用命令字符串的方式。必須的線仍然是三根:Tx, Rx和地線,因?yàn)榭刂谱址趥鬏斁€上和普通字符沒有區(qū)別,函數(shù)SetXModem允許用戶使能或者禁止用戶使用兩個(gè)控制字符XON和OXFF。這些字符在通信中由接收方發(fā)送,使發(fā)送方暫停。

例如:假設(shè)發(fā)送方以高波特率發(fā)送數(shù)據(jù)。在傳輸中,接收方發(fā)現(xiàn)由于CPU忙于其他工作,輸入buffer已經(jīng)滿了。為了暫時(shí)停止傳輸,接收方發(fā)送XOFF,典型的值是十進(jìn)制19,即十六進(jìn)制13,直到輸入buffer空了。一旦接收方準(zhǔn)備好接收,它發(fā)送XON,典型的值是十進(jìn)制17,即十六進(jìn)制11,繼續(xù)通信。輸入buffer半滿時(shí),LabWindows發(fā)送XOFF。此外,如果XOFF傳輸被打斷,LabWindows會(huì)在buffer達(dá)到75%和 90%時(shí)發(fā)送XOFF。顯然,發(fā)送方必須遵循此守則以保證傳輸繼續(xù)。

b,硬件握手:第二種是使用硬件線握手。和Tx和Rx線一樣,RTS/CTS和DTR/DSR一起工作,一個(gè)作為輸出,另一個(gè)作為輸入。第一組線是RTS (Request to Send)和CTS(Clear to Send)。當(dāng)接收方準(zhǔn)備好接收數(shù)據(jù),它置高RTS線表示它準(zhǔn)備好了,如果發(fā)送方也就緒,它置高CTS,表示它即將發(fā)送數(shù)據(jù)。另一組線是DTR(Data Terminal Ready)和DSR(Data Set Ready)。這些現(xiàn)主要用于Modem通信。使得串口和Modem通信他們的狀態(tài)。例如:當(dāng)Modem已經(jīng)準(zhǔn)備好接收來自PC的數(shù)據(jù),它置高DTR線,表示和電話線的連接已經(jīng)建立。讀取DSR線置高,PC機(jī)開始發(fā)送數(shù)據(jù)。一個(gè)簡單的規(guī)則是DTR/DSR用于表示系統(tǒng)通信就緒,而RTS/CTS用于單個(gè)數(shù)據(jù)包的傳輸。

在LabWindows,函數(shù)SetCTSMode使能或者禁止使用硬件握手。如果CTS模式使能,LabWindows使用如下規(guī)則:

當(dāng)PC發(fā)送數(shù)據(jù):

RS-232庫必須檢測CTS線高后才能發(fā)送數(shù)據(jù)。

當(dāng)PC接收數(shù)據(jù):

如果端口打開,且輸入隊(duì)列有空接收數(shù)據(jù),庫函數(shù)置高RTS和DTR。

如果輸入隊(duì)列90%滿,庫函數(shù)置低RTS,但使DTR維持高電平。

如果端口隊(duì)列近乎空了,哭喊數(shù)置高RTS,但使DRT維持高電平。

如果端口關(guān)閉,庫函數(shù)置低RTS和DTR。

c,XModem握手:最后討論的握手叫做XModem文件傳輸協(xié)議。這個(gè)協(xié)議在Modem通信中非常通用。盡管它通常使用在Modem通信中, XModem協(xié)議能夠直接在其他遵循這個(gè)協(xié)議的設(shè)備通信中使用。在LabWindows中,實(shí)際的XModem應(yīng)用對用戶隱藏了。只要PC和其他設(shè)備使用 XModem協(xié)議,在文件傳輸中就使用LabWindows的XModem函數(shù)。函數(shù)是XModemConfig,XModemSend和 XModemReceive。

XModem使用介于如下參數(shù)的協(xié)議:start_of_data、end_of_data、neg_ack、wait_delay、 start_delay、max_tries、packet_size。這些參數(shù)需要通信雙方認(rèn)定,標(biāo)準(zhǔn)的XModem有一個(gè)標(biāo)準(zhǔn)的定義:然而,可以通過 XModemConfig函數(shù)修改,以滿足具體需要。這些參數(shù)的使用方法由接收方發(fā)送的字符neg_ack確定。這通知發(fā)送方其準(zhǔn)備接收數(shù)據(jù)。它開始嘗試發(fā)送,有一個(gè)超時(shí)參數(shù)start_delay;當(dāng)超時(shí)的嘗試超過max_ties次數(shù),或者收到接收方發(fā)送的start_of_data,發(fā)送方停止嘗試。如果從發(fā)送方收到start_of_data,接收方將讀取后繼信息數(shù)據(jù)包。包中含有包的數(shù)目、包數(shù)目的補(bǔ)碼作為錯(cuò)誤校驗(yàn)、packet_size字節(jié)大小的實(shí)際數(shù)據(jù)包,和進(jìn)一步錯(cuò)誤檢查的求和校驗(yàn)值。在讀取數(shù)據(jù)后,接收方會(huì)調(diào)用wait_delay,然后想發(fā)送方發(fā)送響應(yīng)。如果發(fā)送方?jīng)]有收到響應(yīng),它會(huì)重新發(fā)送數(shù)據(jù)包,直到收到響應(yīng)或者超過重發(fā)次數(shù)的最大值max_tries。如果一直沒有收到響應(yīng),發(fā)送方通知用戶傳輸數(shù)據(jù)失敗。

由于數(shù)據(jù)必須以pack_size個(gè)字節(jié)按包發(fā)送,當(dāng)最后一個(gè)數(shù)據(jù)包發(fā)送時(shí),如果數(shù)據(jù)不夠放滿一個(gè)數(shù)據(jù)包,后面會(huì)填充ASCII碼NULL(0)字節(jié)。這導(dǎo)致接收的數(shù)據(jù)比原數(shù)據(jù)多。在XModem情況下一定不要使用XON/XOFF,因?yàn)閄Modem發(fā)送方發(fā)出包的數(shù)目很可能增加到XON/OFF控制字符的值,從而導(dǎo)致通信故障。

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

    關(guān)注

    34

    文章

    1607

    瀏覽量

    55381
收藏 人收藏

    評論

    相關(guān)推薦

    通信技術(shù):UART串口通信開源代碼實(shí)操!

    今天我們分享的是關(guān)于UART串口通信示例,歡迎大家探討
    的頭像 發(fā)表于 11-05 11:56 ?1301次閱讀
    <b class='flag-5'>通信</b>技術(shù):UART<b class='flag-5'>串口</b><b class='flag-5'>通信</b>開源代碼實(shí)操!

    差分信號在串口通信中的應(yīng)用

    差分信號和串口通信之間存在著密切的關(guān)系,它們都是現(xiàn)代通信系統(tǒng)中不可或缺的重要組成部分。以下將從差分信號的定義、特性及其在串口通信中的應(yīng)用等方
    的頭像 發(fā)表于 07-22 18:06 ?1081次閱讀

    USB轉(zhuǎn)串口串口卡的性能比較

    在當(dāng)今的電子設(shè)備中,串口通信是一種非常常見的通信方式。隨著技術(shù)的發(fā)展,USB接口逐漸取代了傳統(tǒng)的串口接口,但串口
    的頭像 發(fā)表于 07-15 15:21 ?643次閱讀

    串口通信的基本概念

    串口通信(Serial Communications)的基本概念可以歸納為以下幾個(gè)方面:
    的頭像 發(fā)表于 06-12 09:28 ?511次閱讀
    <b class='flag-5'>串口</b><b class='flag-5'>通信</b>的基本<b class='flag-5'>概念</b>

    什么是串口通信?它有哪些特點(diǎn)和應(yīng)用?

    在現(xiàn)代電子通信和計(jì)算機(jī)領(lǐng)域中,串口通信(Serial Communications)扮演著至關(guān)重要的角色。它是一種按位(bit)發(fā)送和接收字節(jié)的通信方式,能夠?qū)崿F(xiàn)數(shù)據(jù)的遠(yuǎn)距離傳輸和高效
    的頭像 發(fā)表于 05-23 16:23 ?2064次閱讀

    串口通信如何控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)?

    在自動(dòng)化控制系統(tǒng)中,步進(jìn)電機(jī)的控制是一項(xiàng)重要的技術(shù)任務(wù)。通過串口通信控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng),可以實(shí)現(xiàn)遠(yuǎn)程控制和自動(dòng)化操作,提高生產(chǎn)效率和降低人工成本。本文將詳細(xì)介紹串口通信控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的
    的頭像 發(fā)表于 04-19 16:23 ?1691次閱讀

    ?51單片機(jī)串口通信詳細(xì)介紹-小白必看

    51單片機(jī)串口通信是單片機(jī)與外部設(shè)備通信的重要方式,它基于串行通信的原理,以字節(jié)為單位進(jìn)行數(shù)據(jù)傳輸。在51單片機(jī)中,串口
    的頭像 發(fā)表于 04-17 09:33 ?1803次閱讀
    ?51單片機(jī)<b class='flag-5'>串口</b><b class='flag-5'>通信</b>詳細(xì)介紹-小白必看

    VC++串口通信詳解

    電子發(fā)燒友網(wǎng)站提供《VC++串口通信詳解.doc》資料免費(fèi)下載
    發(fā)表于 03-24 09:36 ?0次下載

    UART串口通信協(xié)議是什么?

    UART (Universal Asynchronous Receiver/Transmitter) 是一種通信接口協(xié)議,用于實(shí)現(xiàn)串口通信。它是一種簡單的、可靠的、廣泛應(yīng)用的串口
    的頭像 發(fā)表于 03-19 17:26 ?1187次閱讀

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

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

    QT串口通信的簡單使用

    QT串口通信是上位機(jī)和下位機(jī)通信常用的通信方式, 也是學(xué)習(xí)QT必須學(xué)會(huì)的基礎(chǔ)知識, 這篇就簡單介紹一下QT串口
    的頭像 發(fā)表于 01-15 09:27 ?1758次閱讀
    QT<b class='flag-5'>串口</b><b class='flag-5'>通信</b>的簡單使用

    單片機(jī)串口通信的接收與發(fā)送

    單片機(jī)串口通信是一種常見的通信方式,它可以實(shí)現(xiàn)單片機(jī)與外部設(shè)備的數(shù)據(jù)交換。在實(shí)際應(yīng)用中,單片機(jī)串口通信常用于與電腦、傳感器、LCD顯示屏等外
    的頭像 發(fā)表于 12-20 14:03 ?3395次閱讀

    單片機(jī)串口通信的接收與發(fā)送程序

    單片機(jī)串口通信的接收與發(fā)送程序 一、引言 單片機(jī)串口通信是一種常見的通信方式,廣泛應(yīng)用于各種嵌入式系統(tǒng)和工業(yè)控制領(lǐng)域。通過
    的頭像 發(fā)表于 12-19 13:57 ?5466次閱讀

    用proteus和keil實(shí)現(xiàn)串口通信仿真

    前面一課講述了串行口通信的技術(shù)原理,本課通過安裝虛擬串口,用proteus和keil實(shí)現(xiàn)串口通信仿真。
    的頭像 發(fā)表于 11-27 16:42 ?5460次閱讀
    用proteus和keil實(shí)現(xiàn)<b class='flag-5'>串口</b><b class='flag-5'>通信</b>仿真

    串口通信原理分析

    現(xiàn)在的傳感器和執(zhí)行器種類越來越多,需要和控制器傳輸?shù)臄?shù)據(jù)也是多種多樣,只用GPIO來控制和讀取的話,只有0和1的狀態(tài),未免還是有點(diǎn)麻煩,各種各樣的通信方法也層出不窮,UART串口通信絕對是最為常用
    的頭像 發(fā)表于 11-27 10:51 ?779次閱讀
    <b class='flag-5'>串口</b><b class='flag-5'>通信</b>原理分析