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连接器


您可能已经在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发送示意:

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:

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
  • An Introduction to RS232 Serial Communications
  • Voltage Waveshapes, part of this huge Serial HOWTO
  • https://baike.baidu.com/item/UART/4429746

 

 

你可能感兴趣的:(Verilog/FPGA,实用总结区)