串列埠通訊學習

2021-05-22 15:53:15 字數 4666 閱讀 9651

1,什麼是串列埠?

2,什麼是rs-232?

3,什麼是rs-422?

4,什麼是rs-485?

5,什麼是握手?

1,什麼是串列埠?

串列埠是計算機上一種非常通用裝置通訊的協議(不要與通用序列匯流排universal serial bus或者usb混淆)。大多數計算機包含兩個基於rs232的串列埠。串列埠同時也是儀器儀表裝置通用的通訊協議;很多gpib相容的裝置也帶有rs-232口。同時,串列埠通訊協議也可以用於獲取遠端採集裝置的資料。

串列埠通訊的概念非常簡單,串列埠按位(bit)傳送和接收位元組。儘管比按位元組(byte)的並行通訊慢,但是串列埠可以在使用一根線傳送資料的同時用另一根線接收資料。它很簡單並且能夠實現遠距離通訊。比如ieee488定義並行通行狀態時,規定裝置線總常不得超過20公尺,並且任意兩個裝置間的長度不得超過2公尺;而對於串列埠而言,長度可達1200公尺。

典型地,串列埠用於ascii碼字元的傳輸。通訊使用3根線完成:(1)地線,(2)傳送,(3)接收。由於串列埠通訊是非同步的,埠能夠在一根線上傳送資料同時在另一根線上接收資料。其他線用於握手,但是不是必須的。串列埠通訊最重要的引數是波特率、資料位、停止位和奇偶校驗。對於兩個進行通行的埠,這些引數必須匹配:

a,波特率:這是乙個衡量通訊速度的引數。它表示每秒鐘傳送的bit的個數。例如300波特表示每秒鐘傳送300個bit。當我們提到時鐘週期時,我們就是指波特率例如如果協議需要4800波特率,那麼時鐘是4800hz。這意味著串列埠通訊在資料線上的取樣率為4800hz。通常**線的波特率為14400,28800和36600。波特率可以遠遠大於這些值,但是波特率和距離成反比。高波特率常常用於放置的很近的儀器間的通訊,典型的例子就是gpib裝置的通訊。

b,資料位:這是衡量通訊中實際資料位的引數。當計算機傳送乙個資訊包,實際的資料不會是8位的,標準的值是5、7和8位。如何設定取決於你想傳送的資訊。比如,標準的ascii碼是0~127(7位)。擴充套件的ascii碼是0~255(8位)。如果資料使用簡單的文字(標準 ascii碼),那麼每個資料報使用7位資料。每個包是指乙個位元組,包括開始/停止位,資料位和奇偶校驗位。由於實際資料位取決於通訊協議的選取,術語「包」指任何通訊的情況。

c,停止位:用於表示單個包的最後一位。典型的值為1,1.5和2位。由於資料是在傳輸線上定時的,並且每乙個裝置有其自己的時鐘,很可能在通訊中兩台裝置間出現了小小的不同步。因此停止位不僅僅是表示傳輸的結束,並且提供計算機校正時鐘同步的機會。適用於停止位的位數越多,不同時鐘同步的容忍程度越大,但是資料傳輸率同時也越慢。

d,奇偶校驗位:在串列埠通訊中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當然沒有校驗位也是可以的。對於偶和奇校驗的情況,串列埠會設定校驗位(資料位後面的一位),用乙個值確保傳輸的資料有偶個或者奇個邏輯高位。例如,如果資料是011,那麼對於偶校驗,校驗位為0,保證邏輯高的位數是偶數個。如果是奇校驗,校驗位位1,這樣就有3個邏輯高位。高位和低位不真正的檢查資料,簡單置位邏輯高或者邏輯低校驗。這樣使得接收裝置能夠知道乙個位的狀態,有機會判斷是否有雜訊干擾了通訊或者是否傳輸和接收資料是否不同步。

2,什麼是rs-232?

rs-232(ansi/eia-232標準)是ibm-pc及其相容機上的序列連線標準。可用於許多用途,比如連線滑鼠、印表機或者modem,同時也可以接工業儀器儀表。用於驅動和連線的改進,實際應用中rs-232的傳輸長度或者速度常常超過標準的值。rs-232只限於pc串列埠和裝置間點對點的通訊。rs-232串列埠通訊最遠距離是50英呎。

db-9針連線頭

/ 1 2 3 4 5 / 

/ 6 7 8 9 / 

從計算機連出的線的截面。

rs-232針腳的功能:

資料: 

txd(pin 3):串列埠資料輸出

rxd(pin 2):串列埠資料輸入

握手:rts(pin 7):傳送資料請求

cts(pin 8):清除傳送

dsr(pin 6):資料傳送就緒

dcd(pin 1):資料載波檢測

dtr(pin 4):資料終端就緒

地線:gnd(pin 5):地線

其他ri(pin 9):鈴聲指示

3,什麼是rs-422?

4,什麼是rs-485?

rs-485(eia-485標準)是rs-422的改進,因為它增加了裝置的個數,從10個增加到32個,同時定義了在最大裝置個數情況下的電氣特性,以保證足夠的訊號電壓。有了多個裝置的能力,你可以使用乙個單個rs-422口建立裝置網路。出色抗噪和多裝置能力,在工業應用中建立連向pc機的分布式裝置網路、其他資料收集控制器、hmi或者其他操作時,序列連線會選擇rs-485。rs-485是rs-422的超集,因此所有的rs-422裝置可以被rs-485控制。rs-485可以用超過4000英呎的線進行序列通行。

db-9 引腳連線

/ 1 2 3 4 5 / 

/ 6 7 8 9 / 

從計算機連出的線的截面。

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

資料: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和地線。但是對於資料傳輸,雙方必須對資料定時採用使用相同的波特率。儘管這種方法對於大多數應用已經足夠,但是對於接收方過載的情況這種使用受到限制。這時需要串列埠的握手功能。在這一部分,我們討論三種最常用的rs-232握手形式:軟體握手、硬體握手和xmodem。

a,軟體握手:我們討論的第一種握手是軟體握手。通常用在實際資料是控制字元的情況,類似於gpib使用命令字串的方式。必須的線仍然是三根:tx,rx和地線,因為控制字元在傳輸線上和普通字元沒有區別,函式setxmodem允許使用者使能或者禁止使用者使用兩個控制字元xon和oxff。這些字元在通訊中由接收方傳送,使傳送方暫停。

例如:假設傳送方以高波特率傳送資料。在傳輸中,接收方發現由於cpu忙於其他工作,輸入buffer已經滿了。為了暫時停止傳輸,接收方傳送xoff,典型的值是十進位制19,即十六進製制13,直到輸入buffer空了。一旦接收方準備好接收,它傳送xon,典型的值是十進位制17,即十六進製制11,繼續通訊。輸入buffer半滿時,labwindows傳送xoff。此外,如果xoff傳輸被打斷,labwindows會在buffer達到75%和90%時傳送xoff。顯然,傳送方必須遵循此守則以保證傳輸繼續。

b,硬體握手:第二種是使用硬體線握手。和tx和rx線一樣,rts/cts和dtr/dsr一起工作,乙個作為輸出,另乙個作為輸入。第一組線是rts(request to send)和cts(clear to send)。當接收方準備好接收資料,它置高rts線表示它準備好了,如果傳送方也就緒,它置高cts,表示它即將傳送資料。另一組線是dtr(data terminal ready)和dsr(data set ready)。這些現主要用於modem通訊。使得串列埠和modem通訊他們的狀態。例如:當modem已經準備好接收來自pc的資料,它置高dtr線,表示和**線的連線已經建立。讀取dsr線置高,pc機開始傳送資料。乙個簡單的規則是dtr/dsr用於表示系統通訊就緒,而rts/cts用於單個資料報的傳輸。

在labwindows,函式setctsmode使能或者禁止使用硬體握手。如果cts模式使能,labwindows使用如下規則:

當pc傳送資料:

rs-232庫必須檢測cts線高後才能傳送資料。

當pc接收資料:

如果埠開啟,且輸入佇列有空接收資料,庫函式置高rts和dtr。

如果輸入佇列90%滿,庫函式置低rts,但使dtr維持高電平。

如果埠佇列近乎空了,哭喊數置高rts,但使drt維持高電平。

如果埠關閉,庫函式置低rts和dtr。

c,xmodem握手:最後討論的握手叫做xmodem檔案傳輸協議。這個協議在modem通訊中非常通用。儘管它通常使用在modem通訊中,xmodem協議能夠直接在其他遵循這個協議的裝置通訊中使用。在labwindows中,實際的xmodem應用對使用者隱藏了。只要pc和其他裝置使用xmodem協議,在檔案傳輸中就使用labwindows的xmodem函式。函式是xmodemconfig,xmodemsend和xmodemreceive。

xmodem使用介於如下引數的協議:start_of_data、end_of_data、neg_ack、wait_delay、start_delay、max_tries、packet_size。這些引數需要通訊雙方認定,標準的xmodem有乙個標準的定義:然而,可以通過xmodemconfig函式修改,以滿足具體需要。這些引數的使用方法由接收方傳送的字元neg_ack確定。這通知傳送方其準備接收資料。它開始嘗試傳送,有乙個超時引數start_delay;當超時的嘗試超過max_ties次數,或者收到接收方傳送的start_of_data,傳送方停止嘗試。如果從傳送方收到start_of_data,接收方將讀取後繼資訊資料報。包中含有包的數目、包數目的補碼作為錯誤校驗、packet_size位元組大小的實際資料報,和進一步錯誤檢查的求和校驗值。在讀取資料後,接收方會呼叫wait_delay,然後想傳送方傳送響應。如果傳送方沒有收到響應,它會重新傳送資料報,直到收到響應或者超過重發次數的最大值max_tries。如果一直沒有收到響應,傳送方通知使用者傳輸資料失敗。

由於資料必須以pack_size個位元組按包傳送,當最後乙個資料報傳送時,如果資料不夠放滿乙個資料報,後面會填充ascii碼null(0)位元組。這導致接收的資料比原資料多。在xmodem情況下一定不要使用xon/xoff,因為xmodem傳送方發出包的數目很可能增加到xon/off控制字元的值,從而導致通訊故障。 

串列埠通訊學習(二)

好氣啊,學校給的韌體庫太老了,不支援f4idisco,只能先學用找的例程學一手理論應用了。工程的檔案列表 這些配置檔案先不看,關鍵的是main.c和usart.c main.c只有幾行 這個是對usart時鐘使能,這個味道,是陌生的味道。這個是管腳配置 預設模式 這個味道,是熟悉的味道。還是只需要寫...

串列埠通訊 串列埠通訊原理

1 rs232介面 rs232 c介面聯結器一般使用型號為db 9的9芯插頭座,只需3條介面線,即 傳送資料 接收資料 和 訊號地 即可傳輸資料,其9個引腳的定義如圖11 3所示。圖11 3 rs232 c介面聯結器定義 在rs232的規範中,電壓值在 3v 15v 一般使用 6v 稱為 0 或 o...

zigbee學習之串列埠通訊

糾錯 u0dbuf傳送緩衝區,但是我在中文手冊手冊上沒有找的到這個暫存器,手冊上只有u0buf,u0buf編譯會出錯,我去查了下英文手冊,才發現原來是翻譯人員翻譯錯誤了,只有u0dbuf,建議看英文手冊。串列埠通訊 p 2 接收端 p 3傳送端 微控制器和電腦的電頻不同,通過pl2303轉換,這是針...