|
1. 概述 c*`=o(S UART, Universal Asynchronous Receiver-Transmitter, 通用异步收发器; R(N5K4J 串口:在嵌入式里指的是UART口,常用TTL电平即3.3V或者5.0V; hha^:, COM口:在台式机上常用的口,DB9那种接口,接口协议只有两种RS232和RS485; \Dr?}D RS232电平即负逻辑电平,定义+5V~+12V为逻辑0,-5V~-12V为逻辑1。 Kq2,J&Ca3 UART口、COM口指的是物理接口形式; YVB\9{H? TTL、RS232和RS485指的是电平逻辑标准; p1(<F_Kta TTL电平和RS232电平转换专用芯片有MAX232,TTL电平转USB芯片有CP2102、PL2303、FT230等用USB来扩展串口数量。 AF-uTf xdd;!HK, *S=zJyAO 2. 硬件结构 l<=Y.P_2 与IIC、SPI 等接口一样,都属于串行通信接口,但是UART只有数据线收和发,并无时钟线,故为异步串行通信接口,可以实现全双工通信;在嵌入式系统中,常用与控制系统与外设通信,包括控制器与控制器,控制器与终端设备。线路简单,成本低,传输距离远,但传输速度慢。 \t\ZyPxn VCC:供电pin,一般是3.3V,在实际使用中一般不接,不影响使用; .@(9v.:_u GND:接地pin,板内共地时可以不单独接,板间通信时候必须接上; 7>>6c7e RX:接收数据pin; 0*}%v:uN9 TX:发送数据pin; 需要注意TX RX的参考系,不要接反了,电平需要兼容; *&lNzz5&
LHJjPf)F 如果收发是有关联关系的,很多情况下需要关注流控。 6l-V%3- UART CTS/RTS用于硬流控,协调双方收发,保证数据不丢失。Clear to send Request To Send JVeb$_0k A---------B 0x]WW|se* TX --> RX x7l3&;yDv RX <-- TX 1Ydym2 RTS ---> CTS 2[R{IV8e CTS <--- RTS U k*HRudt 芯片A通过UART发送数据,当芯片B拉高RTS时,A就会暂停发送, ?oO<PR}y 当芯片B拉低RTS时,A又会继续发送。 V[T`I a\ 比如 WIFI模组与AP的串口连接: l2LUcI$ x \5s#9 fd}
Ul WN%KATA 3. 通信协议 [exIK UART使用的是异步串行通信;以字符为传输单位,一位一位的顺序输送;通信中两个字符间的时间间隔是不固定的 ,然而同一个字符内两个相邻位之间的时间间隔是固定的。 Q]d3a+dK 数据的传送速率用波特率来表示,即每秒钟传送的二进制位数; OfSHZ;, 一般选波特率都会有9600,19200,115200等选项。 !R.*Vn[
传输时序如下: k9pOY]_Y :RE.m d 起始位:先发一个逻辑0,表示传输字符的开始; 4PzCm k 依靠检测起始位来实现发送与接收方的时间自同步的。 V)8d1S 数据位:可以是4、5、6、7、8位逻辑0或者1,构成一个字符,如ASCII码8位数据位,从最低位开始传送,靠时钟定位;方向为LSB。 R<jt$--H 奇偶校验位:数据位加上这一位后,使得“1”的位数为偶数(偶校验)或奇数(奇校验)以此来校验数据传送的正确性; u!VAAX 停止位:他是一个字符数据的结束标志,可以是1位、1.5位、2位的高电平。适用于停止位的位数越多,不同时钟同步的容忍程度越大,数据传输率同时也越低。 o|?bvFC 空闲位:处于逻辑“1”状态,表示当前线路上没有数据传送。 Vx6/Rehj *.]M1 UART传输数据的顺序:刚开始传输一个起始位,接着传输数据位,接着传输校验位(可不需要此位),最后传输停止位。 这样一帧的数据就传输完了。 1IRlFC 传输方向:数据位从高位(MSB)开始传输还是从低位(LSB)开始传输。比如传输A, 42wa9UL<Ka 如果MSB就是01000001,如果LSB就是10000010。协议规定为LSB方向。 Zw`vPvb! 帧间隔:即传送数据的帧与帧之间的间隔大小,可以用位或者时间为计量。 v2uyn
|