天天看點

RS232接口是如何工作的?

RS232簡介

RS232是個人計算機​上的通訊接口​之一,由電子工業協會​(Electronic Industries Association,EIA) 所制定的異步傳輸​标準接口。通常 RS-232 接口以9個引腳​ (DB-9) 或是25個引腳 (DB-25) 的型态出現,一般個人計算機上會有兩組 RS-232 接口,分别稱為 COM1 和 COM2。

串行接口是将FPGA連接配接到PC的簡單方法。 我們隻需要一個發射器和接收器子產品。

RS-232接口具有以下特征:

使用9針連接配接器“DB-9”(舊PC使用25針“DB-25”)。

允許雙向全雙工通信(PC可以同時發送和接收資料)。

可以以大約10KBytes / s的最大速度進行通信。

DB-9連接配接器

RS232接口是如何工作的?

您可能已經在PC背面看到了此連接配接器。

它有9個引腳,但3個重要的引腳是:

引腳2:RxD(接收資料)。

引腳3:TxD(發送資料)。

引腳5:GND(接地)。

隻需3根電線,即可發送和接收資料。

資料通常由8位的塊(我們稱之為位元組)發送并被“序列化”:首先發送LSB(資料位0),然後發送位1,...和MSB(位7)。...

異步通信

該接口使用異步協定。 這意味着沒有時鐘信号沿資料傳輸。 接收器必須有一種方法将自己“計時”到輸入資料位。

在RS-232的情況下,這是這樣做的:

電纜的兩側事先就通信參數(速度,格式......)達成一緻。 這是在通信開始之前手動完成的。

隻要線路空閑,發送器就會發送“空閑”(=“1”)。

發送器在發送的每個位元組之前發送“start”(=“0”),以便接收器可以确定位元組即将到來。

發送8位位元組資料。

發送器在每個位元組後發送“停止”(=“1”)。

the byte 0x55發送示意:

RS232接口是如何工作的?

Byte 0x55 is 01010101 in binary.

But since it is transmitted LSB (bit-0) first, the line toggles like that: 1-0-1-0-1-0-1-0.

Here's another example:

RS232接口是如何工作的?

Here the data is 0xC4, can you see it?

The bits are harder to see. That illustrates how important it is for the receiver to know at which speed the data is sent.

How fast can we send data?

速度以波特率指定,即每秒可以發送多少位。 例如,1000個波特表示每秒1000比特,或者每個比特持續一毫秒。

RS-232接口的常見實作(如PC中使用的那樣)不允許使用任何速度。 如果你想使用123456波特,那你就不走運了。 你必須達到某種“标準”速度。 常見的價值觀是:

  • 1200 bauds.
  • 9600 bauds.
  • 38400 bauds.
  • 115200 bauds (usually the fastest you can go).

在115200波特,每個位持續(1/115200)=8.7μs。 如果傳輸8位資料,則持續8 x8.7μs=69μs。 但每個位元組需要額外的啟動和停止位,是以實際需要10 x8.7μs=87μs。 這意味着最高速度為每秒11.5KBytes。

在115200波特,一些帶有錯誤晶片的PC需要一個“長”停止位(1.5或2位長......),這使得最大速度降至每秒10.5KBytes左右。

實體層

電線上的信号使用正/負電壓方案。

使用-10V(或-5V和-15V之間)發送“1”。

使用+ 10V(或5V和15V之間)發送“0”。

是以空閑線路帶有像-10V的東西。

Links

  • How the RS-232 serial interface works
  • AnIntroduction to RS232 Serial Communications
  • Voltage Waveshapes​, part of this hugeSerial HOWTO
  • https://baike.baidu.com/item/UART/4429746