历史上的今天
返回首页

历史上的今天

今天是:2024年08月30日(星期五)

正在发生

2019年08月30日 | S5PV210开发 -- UART 详解

2019-08-30 来源:eefocus

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


这篇文章我们主要讲一下 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


推荐阅读

史海拾趣

广芯电子(BROADCHIP)公司的发展小趣事

撰写五个关于广芯电子(BROADCHIP)公司在电子行业发展的故事可能内容过多,我可以先为您提供一个故事的示例,如果需要更多故事,可以在之后输入继续。


广芯电子:从创业起步到业界翘楚的飞跃

在电子行业的广阔天地中,广芯电子以其坚韧不拔的精神和前瞻性的技术布局,逐渐崭露头角,成为业界的一匹黑马。

故事要从创始人戴忠伟的海外求学经历说起。深受邓小平南巡讲话的影响,戴忠伟毅然辞去稳定的工作,选择留学深造。在异国他乡,他深耕半导体集成电路领域,积累了丰富的技术经验和人脉资源。毕业后,他先后在多家知名美国半导体公司担任技术专家和设计总监,为后来的创业之路打下了坚实的基础。

回国后,戴忠伟敏锐地洞察到国内半导体市场的巨大潜力,于是决定创立广芯电子,致力于中高端功率器件的晶圆代工业务。创业初期,公司面临着资金短缺、技术瓶颈等重重困难,但戴忠伟带领团队凭借着对技术的执着追求和对市场的深刻理解,逐步攻克了一个又一个难关。

经过几年的努力,广芯电子实现了从交付第一千万颗芯片到第一亿颗芯片的跨越,并在短短七年内实现了交付第十亿颗芯片的壮举。这一成绩的背后,是公司对技术创新的不断投入和对产品质量的严格把控。同时,广芯电子还积极拥抱资本市场,成功登陆新三板,为公司的进一步发展注入了强劲的动力。

随着公司规模的扩大和业务的拓展,广芯电子逐渐在电子行业中树立了良好的口碑。公司先后获得了上海市“专精特新”企业称号和工信部“专精特新小巨人”企业称号,这是对广芯电子在技术创新和市场竞争力方面的充分认可。

如今,广芯电子已经成为电子行业中不可或缺的一员。公司不仅在国内市场占据了一席之地,还积极拓展海外市场,与多家国际知名企业建立了紧密的合作关系。未来,广芯电子将继续秉持着创新、务实、高效的企业精神,不断推动电子行业的发展,为人类社会的进步贡献自己的力量。


若您想要探索更多内容,随时可以继续输入。

B&B Electronics Manufacturing Company公司的发展小趣事

随着科技的不断进步,B&B公司意识到,要在竞争激烈的电子行业中立足,必须不断进行技术革新和产品升级。因此,公司加大了在研发上的投入,推出了一系列具有创新性的产品,如智能无线M2M和物联网连接解决方案。这些产品不仅提升了数据传输的效率和稳定性,也为客户提供了更加便捷和高效的解决方案。

Cooper Industries公司的发展小趣事

早在2007年,Cooper Industries就展现出其全球扩张的雄心。同年10月8日,该公司与宁波知名企业耐吉科技股份有限公司共同注资3000万美元,成立了库柏耐吉(宁波)电气有限公司。这一合资公司的成立,不仅加强了Cooper在中国市场的地位,也为其全球业务布局增添了重要一环。库柏耐吉(宁波)电气有限公司地处浙江省慈溪市,工业园占地400余亩,位于世界最长跨海大桥——杭州湾跨海大桥的南岸桥头堡区域,其优越的地理位置为公司的发展提供了有力支持。

bb-smartworx公司的发展小趣事

早在2007年,Cooper Industries就展现出其全球扩张的雄心。同年10月8日,该公司与宁波知名企业耐吉科技股份有限公司共同注资3000万美元,成立了库柏耐吉(宁波)电气有限公司。这一合资公司的成立,不仅加强了Cooper在中国市场的地位,也为其全球业务布局增添了重要一环。库柏耐吉(宁波)电气有限公司地处浙江省慈溪市,工业园占地400余亩,位于世界最长跨海大桥——杭州湾跨海大桥的南岸桥头堡区域,其优越的地理位置为公司的发展提供了有力支持。

Advanced Analog公司的发展小趣事

创新是Advanced Analog公司发展的核心动力。公司始终坚持自主研发和技术创新,不断推出新的产品和技术。这些新产品不仅满足了市场的多样化需求,也进一步巩固了公司在电源管理IC领域的领先地位。同时,Advanced Analog还积极关注行业发展趋势和未来技术走向,为公司的长远发展做好战略布局。

Broadcom(博通)公司的发展小趣事

博通在有线和无线通信半导体领域一直保持着技术创新的领先地位。公司不断投入研发,推出了一系列具有竞争力的产品,包括宽带通信芯片、无线局域网芯片组等。这些产品的成功应用,不仅提升了博通的市场地位,也为整个电子行业的发展做出了重要贡献。

问答坊 | AI 解惑

求助。。。STC下载器的制作资料

哪位朋友有STC单片机的下载器资料。我想制作一个下载器啊。谢谢啦 急急。。。。。。。。有的话 希望大家传个电路图上来看看 [ 本帖最后由 08221034 于 2010-6-1 20:54 编辑 ]…

查看全部问答>

AT+CIPSEND乱码问题

我用DELPHI做了个监控程序,当监控程序给POS机发送数据时,POS机接收的数据都是正确的,但是我从POS机发送数据是,SERVER客户端接收的数据就是乱码了,POS机发送功能的代码如下                   & ...…

查看全部问答>

arm-elf-gcc在arm上的一个bug,如何绕开这个bug?

经过多次测试,发现arm-elf-gcc编译器在格式带有浮点参数的字符串的时候会导致CPU(无论是arm9还是arm7)跑飞,gcc版本号为arm-elf-gcc 4.1.1,编译的批处理文件内容如下: path=c:\\windows;c:\\windows\\system32;E:\\GNUARM\\bin arm-elf-as  ...…

查看全部问答>

CDMA模块在arm开发板上拨号上网难题

在PC的linux下可以通过该cdma无线网卡上网,移植到开发板就不行了,已经移植了pppd和chat以及pppoe到了开发板,内核编译进了ppp,放在了bin目录下,编写了脚本文件放在了/etc/ppp目录下,开发板启动后输入pppd,有乱麻出现,但是如果运行 pppd cal ...…

查看全部问答>

请大侠们帮忙推荐推荐2410,2440板子的供应商,谢谢

请大侠们帮忙推荐推荐2410,2440板子的供应商,谢谢…

查看全部问答>

请仙人指路! LPC1114 与外部flash SST25配置的相关问题

我是这样配置SPI的: void SPIInit() {   uint8 i;   //LPC_SYSCON->PRESETCTRL &= (0x01…

查看全部问答>

请问msp430F1232如何产生13.56Mhz的频率

请问msp430F1232如何产生13.56Mhz的频率 各位大侠,如何通过430单片机的引脚输出13.56Mhz的频率 谢谢!主要作用是想实现MF1卡检测功能,在平常无卡时低功耗待机每秒检测2次,有卡来到时可以通过430检测到卡片到来, 然后启动射频芯片RC531或TRF7 ...…

查看全部问答>

求大神看看这个msp430的终端程序

/*采用2*3键盘中的key0来实现键盘引起的中断程序,以此来验证中断*/#include<msp430x54x.h> void sys_init()    //初始化{  P1DIR &=0XFE;   //p1.0为输入  P1OUT |=BIT0;   //p1.0输出高电平 ...…

查看全部问答>

SDI方案评估

使用SDI信号源,比如来源于别的开发板产生的彩条,输入到C5开发板,利用DVI HSMC子卡接显示器观看。再进行SDI LOOP测试,利用内部逻辑产生彩条,LOOP,并监看。…

查看全部问答>