S5PV210开发 -- UART 详解

发布者:SparklingEyes最新更新时间:2019-08-30 来源: eefocus关键字:S5PV210  传输格式  UART 手机看文章 扫描二维码
随时随地手机看文章

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


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


关键字:S5PV210  传输格式  UART 引用地址:S5PV210开发 -- UART 详解

上一篇:S5PV210开发 -- QT4.8 移植
下一篇:S5PV210开发 -- 串口驱动开发

推荐阅读最新更新时间:2024-11-03 22:23

串口UART学习笔记
一、谈谈对串口UART的理解 1.交代计算机中常见的几种硬件(CPU和外设)通信方式:GPIO/UART/IIC/SPI/1-WIRE。 2.UART的定义:通用串行异步收发器。 串行和并行的对比:距离 速度 抗干扰性 2.1 异步:CPU的速度要远远快于外设,势必要考虑数据同步(发玩还要确保接收正确) 数据同步方法:异步和同步 同步:“低放高取”。不仅仅需要数据线,还需要一根时钟控制信号线。利用时钟控制信号线来实现双方的数据同步。 IIC总线和SPI总线就是采用同步方式。 3.UART串口的三种工作方式:单工、半双工、全双工。 二、如何利用异步实现UART的数据同步 答案在UART的数据传
[单片机]
51单片机——UART
对于单片机来说,通信则与传感器、存储芯片、外围控制芯片等技术紧密结合,成为整个单片机系统的“神经中枢”。 1、初步认识 一位一位的发送出去的,要发送 8 次才能发送完一个字节。 STC89C52有两个引脚是专门用来做 UART串行通信的,一个是 P3.0一个是 P3.1,它们还分别有另外的名字叫做 RXD和TXD,由它们组成的通信接口就叫做串行接口,简称串口。 波特率:发送二进制数据位的速率,习惯上用 baud 表示;即我们发送一位二进制数据的持续时间=1/baud。 通信过程:在UART 通信的时候,一个字节是 8 位,规定当没有通信信号发生时,通信线路保持高电平,当要发送数据之前,先发一位 0 表示起始位,然后
[单片机]
51单片机——<font color='red'>UART</font>
LM3S9B96 UART打印字符串功能
调试的时候,可以观察某个变量的值,前提是需要用JLINK进行调试。其实,程序全速运行时,可以看某个变量值是多少。这就用到UART的打印字符串的功能。 1. UARTprintf函数:这与C语言中的printf函数类似,可以输出一个字符串,可以格式化输出一个变量的数值。用法如下: UARTprintf( Uart2 is ready - ); // 输出一句话 char test = 14; UARTprintf( test is %d\n , test); // 按十进制格式输出变量test的值 2. 下面是一个UART2打印功能的例子: #include inc/hw_memmap.h #include
[单片机]
ARM芯片学习(S5PV210开发)——GPIO控制LED
1、GPIO介绍 GPIO(general purpose input output):通用输入输出。GPIO就是芯片的引脚,是比较特殊的引脚,可以通过代码来操作,控制引脚的高低电平以及工作模式。与GPIO相对的就是固定功能的引脚,我们不能通过编程来控制其功能,比如芯片的电源引脚、时钟引脚等,这些引脚的功能在出厂的时候就固定了。 2、S5PV210的GPIO相关寄存器 GPJ0CON, (GPJ0 control)GPJ0控制寄存器,用来配置各引脚的工作模式 GPJ0DAT, (GPJ0 data)当引脚配置为input/output模式时,寄存器的相应位和引脚的电平高低相对应。 GPJ0PUD, (pull up down)
[单片机]
ARM芯片学习(<font color='red'>S5PV210</font>开发)——GPIO控制LED
S5PV210的IRAM应用
准备分析 IRAM的大小96k,其实前两个程序都在这里运行的,程序都小于16K。要实现的是从把IRAM从的前16k从IRAM的起始地址0xD0020000拷贝到0xD0024000 处,调用main。堆栈指针设置到了0xD003_7D80处。程序的链接地址是0xD0024010.用图表示如下。本程序只涉及到IRAM,重点为在于重定向。 资源工具 同《 S5PV210的LED应用(一)》 着手写程序 start.S中的代码拷贝很重要,Makefile中的链接地址很重要。 @********************************************************************
[单片机]
<font color='red'>S5PV210</font>的IRAM应用
示波器UART协议触发
  ZDS2022示波器百场技术交流会依然在如火如荼进行中,近期某客户跟我司FAE交流,他想稳定触发UART数据帧的第一个位,依次进行了“边沿触发”--“上升沿触发”设置,然后进行【Simple】单次触发,经测试多次,屏幕上偶尔出现“不在第一个上升沿触发,在后面的上升沿触发”,这到底是怎么回事呢?   首先,边沿触发并不会挑“边沿”或是只认第一个边沿,所以每一个符合触发条件的边沿,都是有可能触发的。实际上客户是想实现稳定触发UART数据帧的第一个位的功能,ZDS2022示波器本身就包含21种协议触发功能,不必使用边沿触发。   图1 屏幕上出现不在第一个边沿触发的情况   如何操作呢?我们按下【Trigger】键,将触发方
[测试测量]
示波器<font color='red'>UART</font>协议触发
【ARM】S5PV210芯片的启动流程
S5PV210芯片的设计者的思想 (1)芯片启动后执行iRom(BL0)的内容,进行时钟和看门狗等外设的初始化,将BL1和BL2拷贝到片内SRAM; (2)跳转到片内SRAM执行,完成外部SDRAM的初始化,并将OS从存储设备拷贝到SDRAM内; (3)跳转到SRAM内执行OS的起始代码。 由于U-BOOT的大小的限制,无法全部拷贝到片内的SRAM,所以U-BOOT的设计者设计了一下流程 (1)芯片启动后执行iRom(BL0)的内容,进行时钟和看门狗等外设的初始化,将BL1拷贝到片内SRAM; (2)跳转到片内SRAM内进行执行,完成SDRAM的初始化,将BL2拷贝到SDRAM内,执行。 (3)跳转到SDRAM内的BL2进行执行
[单片机]
【ARM】<font color='red'>S5PV210</font>芯片的启动流程
STM32 --UART串口通信
UART串口时序 UART串口协议参考下面文章: http://blog.csdn.net/gogomusic/article/details/54767502 UART串口配置 1)串口时钟使能。串口作为 STM32 的一个外设,其时钟由外设时钟使能寄存器控制,这里我们使用的串口1是APB2ENR寄存器的第14位。(除了串口 1 的时钟使能在 APB2ENR 寄存器,其他串口的时钟使能位都在 APB1ENR 寄存器,而 APB2(72M)的频率一般是 APB1(36M)的一倍。) 2)串口复位。当外设出现异常的时候可以通过复位寄存器里面的对应位设置,实现该外设的复位,然后重新配置这个外设达到让其重新工作的目
[单片机]
STM32 --<font color='red'>UART</font>串口通信
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved