S5PV210开发 -- UART 详解

如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/78532740

上一篇文章系统的讲了一下通信的分类,包括并行通信,串行通信。串行通信的分类,包括同步通信,异步通信。

这篇文章我们主要讲一下 UART

 

串口编程,我们并不陌生。之前讲过RS485通信,参看:UNIX再学习 -- RS485 串口编程

再者,参看:日常生活小技巧 -- UART 回环测试

一、基本概念

 

参看:UART -- 维基百科

UART 是 Universal Asynchronous Receiver/Transmitter,通用异步收发器(异步串行通信口)的英文缩写,它包括了RS232、RS449、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。 而RS232、RS449、RS423、RS422和RS485等,是对应各种异步串行通信口的接口标准和总线标准,它规定了通信口的电气特性、传输速率、连接特性和接口的机械特性等内容。实际上是属于通信网络中的物理层(Physical Layer)的概念,与通信协议没有直接关系。而通信协议,是属于通信网络中的资料链接层(Data Link Layer)的概念。 COM是PC(个人计算机)上,异步串行通信口的简写。由于历史原因,IBM的PC外部接口配置为RS232,成为实际上的PC界默认标准。所以,现在PC机的COM均为RS232。若配有多个异步串行通信口,则分别称为COM1、COM2... 。

二、UART数据传输格式

在讲之前先感慨两句,UART这部分的总结,真真的网上看了好多的资料。但都讲的很零碎,没有个所以然。看的我很纠结,不知道从何讲起。

还好我们之前有讲过串口编程,并非对 UART一无所知。那就从 TTL 和 RS232 电平说起。

(1)TTL 和 RS232 电平

RS232 电平
逻辑1:-3V~-15V
逻辑0:+3V~+15V

TTL 电平
逻辑1:+2V~+5V
逻辑0:+0V~+0.8V

 

TTL 电平和 RS232 电平我会再开一篇详细来讲。这里就是要了解一下SP3232 芯片。

我们查看原理图,串口电路部分:

你能区分 SP3232 芯片引脚哪边是TTL电平,哪边是 RS232 电平吗?(傻纸问题,哈哈)

我们介绍UART基本概念的时候,也提到了现在PC机的COM均为RS232,但是单片机的电平是TTL电平。

所以要用一个电平转化芯片 SP3232,然后使得单片机和PC通过串口进行通信。

上图标的很清楚啦,PC_TXD0、PC_RXD0 在PC端,为RS232电平

(2)数据传输格式

 

空闲位: 从一个字符的停止位结束到下一个字符的起始位开始,表示线路处于空闲状态,为逻辑 1。

起始位:必须是持续1bit时间的逻辑 0 电平,标志着传输一个字符的开始,接收方可用起始位使自己的接收时钟与发送方的数据同步。

数据位:紧跟在起始位之后,是通信中的真正有效信息。数据位的位数可以由通信双方共同约定,一般可以是5位、6位、7位或8位,标准的ASCII码是0~127(7位),扩展的ASCII码是0~255(8位)。传输数据时先传送字符的低位,后传送字符的高位。

    这里有几个知识点需要知道:

    ASCII 码,参看:C语言再学习 -- ASCII码表(转)

    MSB 和 LSB,参看:C语言再学习-- 大端小端详解(转)

    思考:

    传输数据时先传送字符的低位,后传送字符的高位。

    因为通常我们的PC是小端的,如果没有另外说明,通常可以假定数据首先传输最低有效位(LSB)。

    在标准ASCII码中 127 转化成二进制为 0111 1111,即最有效高位一直为 0。只需传输 7 位即可

    在扩展ASCII码中 255 转化成二进制为 1111 1111,需要传输 8 位。

校验位:奇偶校验位仅占一位,用于进行奇校验或偶校验,奇偶检验位不是必须有的。如果是奇校验,需要保证传输的数据总共有奇数个逻辑高位;如果是偶校验,需要保证传输的数据总共有偶数个逻辑高位。

    这里有几个知识点需要知道:

    校验位可分为NONE(无校验位)、ODD(奇校验)、EVEN(偶校验),一般多为无校验位。

    奇偶校验,参看:奇偶校验 -- 百度百科   

    奇偶校验位是一个表示给定位数的二进制数中 1 的个数是奇数还是偶数的二进制数。奇偶校验位是最简单的错误检 测码。奇偶校验位有两种类型:偶校验位与奇校验位。如果一组给定数据位中 1 的个数是奇数,那么偶校验位就置为 1,从而使得总的 1 的个数是偶数;如果给定一组数据位中 1 的个数是偶数,那么奇校验位就置为 1,使得总的1 的个数保持奇数不变。

    举个栗子:假设传输的数据位为 01001100,如果是奇校验,则奇校验位为0(要确保总共有奇数个1),如果是 偶校验,则偶校验位为1(要确保总共有偶数个1)

    如果是采用奇校验,在传送每一个字节的时候另外附加一位作为校验位,校验位在数据位后面,当实际数据中“1”的个数为偶数的时候,这个校验位就是“1”,否则这个校验位就是“0”,这样就可以保证传送数据满足奇校验的要求。在接收方收到数据时,将按照奇校验的要求检测数据中“1”的个数,如果是奇数,表示传送正确,否则表示传送错误。

 

    如果传输过程中包括校验位在内的奇数个数据位发生改变,那么奇偶校验位将出错表示传输过程有错误发生。因此,奇偶校验位是一种错误检测码,但是由于没有办法确定哪一位出错,所以它不能进行错误校正。发生错误时必须扔掉全部的数据,然后从头开始传输数据。在噪声很多的媒介上成功传输数据可能要花费很长的时间,甚至根本无法实现。但是奇偶校验位也有它的优点,它是使用一位数据能够达到的最好的校验码,并且它仅仅需要一些异或门就能够生成。奇偶校验被广泛应用。

 

停止位:可以是是1bit、1.5bit或2bit,可以由软件设定。它一定是逻辑 1 电平,标志着传输一个字符的结束。

    由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供 计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

(3)举例说明TTL电平和RS232电平数据传输格式的不同

上面我们提到了 TTL 电平和 RS232 电平的逻辑电平是不同的,那么接下来我们举个栗子。

例如,对于16进制数据55aaH,当采用8位数据位、1位停止位传输时,无校验位。(先传第一个字节55,再传第二个字节aa,每个字节都是从低位向高位逐位传输)。我们来看它在一下 TTL 电平和 RS232 电平的信号线上的波形。

《1》TTL电平的串行数据帧格式

对于正逻辑的 TTL 电平,起始位是逻辑 0 为低电平;停止位和空闲位是逻辑 1 为高电平。

《2》RS-232电平的串行数据帧格式

 

对于正逻辑的 RS232 电平,起始位是逻辑 0 为高电平;停止位和空闲位是逻辑 1 为低电平。

 

 

 

上面提到 UART 包括了RS232、RS449、RS423、RS422和RS485等接口标准规范和总线标准规范。

我们最常见的是 RS232、RS485、RS422 这三个。下面我们一一的来详细讲解一下。

三、RS232

(1)接口标准

RS-232是美国电子工业联盟(EIA)制定的串行数据通信的接口标准,原始编号全称是EIA-RS-232(简称232,RS232)。它被广泛用于计算机串行接口外设连接。

RS-232-C接口(又称EIARS-232-C)是目前最常用的一种串行通讯接口。(“RS-232-C”中的“-C”只不过表示RS-232的版本,所以与“RS-232”简称是一样的)。

RS-232采取不平衡传输方式,即所谓单端通讯。由于其发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为3~7kΩ。所以RS-232适合本地设备之间的通信。

(2)常见连接器

常见的有 DB9 和 DB25,并且连接器分公/母头。

《1》DB9

首先它相关器件有很多。这里只是介绍最常见的。

DB9针串口鱼叉式公头母头:

 

DB9针串口焊板式公座母座:

 

 

串口线延长母对母/公对母/公对公:

 

讲到串口线,它有交叉线与直通线之分:

参看:串口线-交叉线与直通线之分

1:串口交叉线
串口线两头都一样都相同。都是公对公或者母对母串口线,这种线必须是交叉线。一端的第二针与另一端的第三针是通路的,说明此线是交叉线。
以下是判断方法:

2:串口直通线
如果用户串口设备与串口服务器连接使用公对母串口线,那必须使用公对母直通线。
一端公头的2对应,另一端母头的2,一端母头的3对应另一端公头的3.

 

DB9针串口焊板式PCB元件封装:

 

最后示例分析串口直通和交叉之分:

以联想台式机为例,通常PC上的串口为公头的:

或者笔记本电脑,通常用的 USB转串口线,也是公头的:

 

1:串口交叉线

2:串口直通线

引脚定义:

公头:

母头:

Pin2 TXD

Pin3 RXD

Pin5 GND

《2》DB25

(3)RS232收发器

这类芯片也有不少,我们就讲上面提到的 SP3232,查看相关手册和原理图。

《1》特性

满足EIA/TIA-232-F标准,工作电压为+3.0V到+5.5V
满载最小数据速率:120Kbps
1uA的低功耗关断模式,接收器(SP3222E)有效
可与RS-232共同使用,电源低至+2.7V 
增强型ESD规范:  
±15kV人体放电模式 
±15kV IEC1000-4-2气隙放电 
±8kV IEC1000-4-2接触放电

《2》封装

《3》引脚说明

《4》相关电路图

四、RS485

(1)接口标准

电子工业协会(EIA)于1983 年制订并发布RS-485 标准,并经通讯工业协会(TIA)修订后命名为TIA/EIA-485-A,习惯地称之为RS-485 标准。
它是从RS-422基础上发展而来的,所以RS-485许多电气规定与RS-422相仿。如都采用平衡传输方式、都需要在传输线上接终接电阻等。RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信,而采用四线连接时,与RS-422一样只能实现点对多的通信,即只能有一个主(Master)设备,其余为从设备,但它比RS-422有改进,无论四线还是二线连接方式总线上可多接到32个设备。
RS-485与RS-422的不同还在于其共模输出电压是不同的,RS-485是-7V至+12V之间,而RS-422在-7V至+7V之间,RS-485接收器最小输入阻抗为12kΩ、RS-422是4kΩ;由于RS-485满足所有RS-422的规范,所以RS-485的驱动器可以在RS-422网络中应用。
RS-485与RS-422一样,其最大传输距离约为1219米,最大传输速率为10Mb/s。平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能使用规定最长的电缆长度。只有在很短的距离下才能获得最高速率传输。一般100米长双绞线最大传输速率仅为1Mb/s。[2] 

RS-485 标准是为弥补RS-232 通信距离短、速率低等缺点而产生的。RS-485 标准只规定了平衡发送器和接收器的电特性,而没有规定接插件、传输电缆和应用层通信协议

RS-485 标准与RS-232 不一样,数据信号采用差分传输方式(Differential Driver Mode),作用是可以抑制共模干扰。

(2)485转232接口

上面提到了,标准没有规定接插件,所以一般都是引出四根线:VCC,GND,TXD,RXD

常用的还有 485转232转换器

(3)RS485收发器

这里主要讲一下 SP3485

《1》特性

RS-485和RS-422收发器 
工作电压为+3.3V  
可与+0.5V的逻辑电路共同工作 
驱动器/接收器使能 z 
低功耗关断模式(SP3481) 
-7V~+12V的共模输入电压范围 
允许在同一串行总线上连接32个收发器 
与工业标准75176管脚配置兼容 
驱动器输出短路保护

《2》电路图和引脚

引脚说明:

Pin1-RO-接收器输出。
Pin2-RE-接收器输出使能(低电平有效)。
Pin3-DE-驱动器输出使能(高电平有效)。
Pin4-DI-驱动器输入。
Pin5-GND-连接地。
Pin6-A-驱动器输出/接收器输入(同相)。
Pin7-B-驱动器输出/接收器输入(反相)。
Pin8-Vcc

 

注意:将AB间120欧姆去掉,如果采用阻抗匹配的电缆,300米以内几乎可以不用加终端电阻。加终端电阻的缺点就是增大了线路的无用功耗,尤其是电池系统供电时,降低了电池的续航能力。我一开始没有将它去掉,导致只能发送数据,无法接收数据。

 

五、RS422

我用的并不多,所以只是简单简绍一下:

标准全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的特性。典型的RS-422是四线接口。实际上

还有一根信号地线,共5根线。其DB9连接器引脚定义。由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10个节点。即一个主设备(Master),其余为从设备(Slave),从设备之间不能通信,所以RS-422支持点对多的双向通信。接收器输入阻抗为4k,故发端最大负载能力是10×4k+100Ω(终接电阻)。RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)实现。
RS-422的最大传输距离为1219米,最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能达到最大传输距离。只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。

六、三者比较

参看:串行通信的基础知识- RS-232C / RS-422 / RS-485 -

七、需要了解的小知识点

双绞线,参看:双绞线 -- 百度百科

 

差分布线,参看:Altium Designer -- 差分布线原则

如何差分布线,参看:Altium Designer -- 精心总结

八、总结

扩展阅读:

Serial Communication

Universal Asynchronous Receiver/Transmitter (UART)

The USART of the AVR

Serial and UART Tutorial

 

这篇文章,写了好久。查阅相关资料应该是最多的一次了。最后发现还是有很多东西没有写,也是无语。

最近诸事不顺,搞的很焦虑。真的感觉人是很脆弱的,放宽心开心健康过好每一天,是多么珍贵。

如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/78532740

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

聚优致成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值