1、 UART串行异步通信串行异步通信本节内容:1、数据通信原理。、数据通信原理。2、串行异步收发器(、串行异步收发器(UART)。)。3、UART驱动程序设计。驱动程序设计。数据通信方式数据通信方式 数据通信的基本方式可分为数据通信的基本方式可分为并行通信和串行通信并行通信和串行通信两种:两种:并行通信:利用多条数据线将数据的各位同时传送。并行通信:利用多条数据线将数据的各位同时传送。其特点是传输速度快,适用于短距离通信。其特点是传输速度快,适用于短距离通信。串行通信:利用一条数据线将数据一位位地顺序传送,特点串行通信:利用一条数据线将数据一位位地顺序传送,特点 是通信线路简单,成本低,适用于远
2、距离通信。是通信线路简单,成本低,适用于远距离通信。数据传送方式:数据传送方式:单工方式:数据始终是从单工方式:数据始终是从A设备发送设备发送B设备设备半双工方式:既能从半双工方式:既能从A设备传送到设备传送到B设备,也能从设备,也能从B设备传送到设备传送到 A设备,但在任何时刻都不能在两个方向上同时设备,但在任何时刻都不能在两个方向上同时 传送,即每次只能有一个设备发送,另一个设备传送,即每次只能有一个设备发送,另一个设备 接收。接收。全双工方式:允许通信双方同时进行发送和接收,这时,全双工方式:允许通信双方同时进行发送和接收,这时,A设设 备在发送的同时也可以接收,备在发送的同时也可以接收
3、,B设备也一样。设备也一样。ABABAB数据通信协议数据通信协议 通信协议:是指通信的双方约定的一些规则。一般情况通信协议:是指通信的双方约定的一些规则。一般情况下通信硬件线路越简单,需要的软件协议越复杂,协议占用下通信硬件线路越简单,需要的软件协议越复杂,协议占用数据量越多。数据量越多。异步通信数据格式:空闲位、起始位、奇偶检验位、停异步通信数据格式:空闲位、起始位、奇偶检验位、停止位。止位。异步串行通信协议:异步串行通信协议:1位起始位位起始位-8位数据位位数据位1位校验位位校验位1位停止位位停止位起始位:先发一个逻辑起始位:先发一个逻辑“0”信号,表示传输字符的开始信号,表示传输字符的开
4、始数据位:紧接在起始位之后,从最低位开始传送,发送速率靠数据位:紧接在起始位之后,从最低位开始传送,发送速率靠 时钟定位时钟定位奇偶校验位奇偶校验位:数据位加上这一位后,使得数据位加上这一位后,使得“1”的位数为偶数(的位数为偶数(偶检验)或者奇数(奇校验),以此校验数据传输的偶检验)或者奇数(奇校验),以此校验数据传输的 正确性。正确性。停止位:它是一个字符数据的结束标志停止位:它是一个字符数据的结束标志空闲位:处于逻辑空闲位:处于逻辑“1”状态,表述当前线路上没有数据传输。状态,表述当前线路上没有数据传输。波特率波特率 波特率是衡量数据传送速率的指标,单位为位波特率是衡量数据传送速率的指标
5、,单位为位/秒(秒(bit/s)或比特。)或比特。记录每秒钟传送的二进制位数。记录每秒钟传送的二进制位数。RS-232c串口规范串口规范 RS-232标准(协议)的全称是标准(协议)的全称是EIA-RS-232C标准,其标准,其中中EIA(Electronic industry association)代表美国代表美国电子工业协会,电子工业协会,RS(recommeded standard)代表推)代表推荐标准,荐标准,232是标识号,是标识号,c代表代表RS232的最新一次修改(的最新一次修改(1969)常用物理标准还有常用物理标准还有EIA-RS-232-C EIA-RS-422-A EI
6、A-RS-423A EIA-RS-485 RS-232C接线方式接线方式 RS-232C串口的接线方式有全串口连线、串口的接线方式有全串口连线、3线连接等方式线连接等方式 3线连接方式:线连接方式:RXD,TXD和和GNDRS-232C的通讯距离和速度的通讯距离和速度 RS-232C能够可靠进行数据传输的最大通讯距离为能够可靠进行数据传输的最大通讯距离为15米米 传输速度一般都可以达到传输速度一般都可以达到115200bps甚至更高,标准串口能够提供的甚至更高,标准串口能够提供的传输速度主要有以下波特率:传输速度主要有以下波特率:1200bps 2400bps 4800bps 9600bps
7、19200bps 38400bps 57600bps 115200bpsUART原理原理 通用异步收发器简称通用异步收发器简称UART,用来传输串行数据,用来传输串行数据 发送时:发送时:CPU将并行数据写入将并行数据写入UART,UART按照一定的格按照一定的格 式在一根线上串行发出数据。式在一根线上串行发出数据。接收时:接收时:UART检测另一根线上的信号,收集串行数据放检测另一根线上的信号,收集串行数据放 在缓冲区中,在缓冲区中,CPU即可读取即可读取UART获得这些数据。获得这些数据。UART连线图:连线图:(1)UART之间以全双工方式传输数据,之间以全双工方式传输数据,TXD用于发
8、送,用于发送,RXD用于接用于接 收,收,GND用于给双方提供参考电压。用于给双方提供参考电压。(2)TXD、RXD数据线以数据线以“位位”最小单位传输数据。最小单位传输数据。(3)帧:由具有完整意义的、不可分隔的若干位组成,它包含开始位、)帧:由具有完整意义的、不可分隔的若干位组成,它包含开始位、数据位、校验位和停止位。数据位、校验位和停止位。(4)发送数据前,)发送数据前,UART之间要约定好波特率、数据传输格式之间要约定好波特率、数据传输格式 6410UARTPCUARTUART原理:原理:UART使用标准使用标准TTL/CMOS逻辑电平(逻辑电平(0-5v,0-3.3v)来表示数据,高
9、电)来表示数据,高电平位平位1,低电平位,低电平位0:为了增强数据的抗干扰能力。提高传输长度,通常将:为了增强数据的抗干扰能力。提高传输长度,通常将TTL/CMOS转位转位RS-232逻辑电平(逻辑电平(3-12v表示表示0,-3-12V表示表示1)。数据传输流程:数据传输流程:(1)平时数据线处于平时数据线处于“空闲空闲”状态(状态(1状态)状态)(2)当要发送数据时,)当要发送数据时,UART改变改变TXD数据线的状态(变为数据线的状态(变为0状态)状态)并维持并维持1位的时间,这样接收方检测到开始位后,一位位的检测位的时间,这样接收方检测到开始位后,一位位的检测 数据线的状态得到所传输的
10、数据。数据线的状态得到所传输的数据。(3)UART一帧中可以有一帧中可以有5、6、7、或、或8位数据,发送方一位位地改位数据,发送方一位位地改 变数据线的状态将它们发送出去,首先发送最低位。变数据线的状态将它们发送出去,首先发送最低位。(4)如果用校验功能,)如果用校验功能,UART在发送完数据位后,还要发送在发送完数据位后,还要发送1个校验位。个校验位。最后,发送停止位,数据线恢复到最后,发送停止位,数据线恢复到“空闲空闲”状态(状态(1状态)状态)S3c6410是是UART:功能:支持可编程的波特率、红外发送功能:支持可编程的波特率、红外发送/接受,可插入一个接受,可插入一个或两个停止位,
11、支持或两个停止位,支持5-8位数组宽度和奇偶校验。位数组宽度和奇偶校验。UART单元组成:单元组成:(1)、一个波特率发生器)、一个波特率发生器 (2)、一个发送器)、一个发送器 (3)、一个接收器)、一个接收器 (4)、一个控制单元)、一个控制单元 S3C6410X.pdf S3C6410的的UART (1)S3C6410通用异步接收和发送器(通用异步接收和发送器(UART)提供了)提供了 四个独立的异步串行四个独立的异步串行I/O端口。端口。(2)每个异步串行)每个异步串行I/O端口通过中断或者直接存储器存取端口通过中断或者直接存储器存取 (DMA)模式来操作。换句话说,)模式来操作。换句
12、话说,UART是通过产生一是通过产生一 个中断或者个中断或者DMA请求,在请求,在CPU和和UART之间传输数据的。之间传输数据的。(3)UART使用系统时钟的时间可以支持的比特率最高为使用系统时钟的时间可以支持的比特率最高为 115200b/s.每个每个UART的通道包含了两个的通道包含了两个64字节收发字节收发FIFO存存 储器。储器。(4)S3C6410的的UART包括可编程波特率,红外线的传送包括可编程波特率,红外线的传送/接收,一接收,一 个或两个停止位插入,个或两个停止位插入,5位,位,6位,位,7位或位或8位数据的宽度和奇偶校位数据的宽度和奇偶校 验。验。控制控制UART相关寄存
13、器:相关寄存器:共共9个,分为两组:个,分为两组:6个控制寄存器个控制寄存器 和和 3个指示传送状态寄存器个指示传送状态寄存器。控制寄存器:控制寄存器:线路控制寄存器(线路控制寄存器(ULCONn)控制寄存器(控制寄存器(UCONn)FIFO控制寄存器(控制寄存器(UFCONn)MODEM控制寄存器(控制寄存器(UMCONn)发送寄存器(发送寄存器(UTXHn)和接收寄存器()和接收寄存器(URXHn)波特率因子寄存器(波特率因子寄存器(UBRDIVn)指示传送状态寄存器:指示传送状态寄存器:状态寄存器(状态寄存器(UTRSTATn)错误状态寄存器(错误状态寄存器(USERSTATn)FIFO
14、状态寄存器(状态寄存器(UFSTATn)UART驱动程序设计驱动程序设计 串口初始化发送数据功能接收数据功能UART初始化初始化 设置UART通道管脚设置波特率设置数据传输格式选择通道工作模式初始化初始化UART通道管脚通道管脚 ok6410开发板串口是配置开发板串口是配置UART0端口端口 例如:例如:GPA口控制口控制 配置配置GPACON寄存器,禁止上下拉电阻。寄存器,禁止上下拉电阻。GPACON&=0X0ff GPACON|=0X22;GPAUD=0 x00;设置波特率设置波特率 S3C6410 UART的时钟源有两种选择:的时钟源有两种选择:PCLK,EXT_UCLK,通过通过UCO
15、Nn11:10进行设置进行设置 UBRDIVn=(int)(UART CLOCK/(buad rate*16)-1 例如:时钟源选择例如:时钟源选择 时钟源采用时钟源采用PCLK UCON0=(UCON0&=(0X310))|(0X210);波特率设置波特率设置#define PCLK 66000000 baud=115200 UBRDIV0=(U32)(PCLK/baud/16)-1);设置传输格式设置传输格式 通过通过ULCON可以设置传输格式:数据位、校验位、停止位、流控等。可以设置传输格式:数据位、校验位、停止位、流控等。#define WORLD_LEN (0X30)#define
16、STOP_BIT (0X02)#define PARITY_MODE (0X03)#define IRD_MODE (0 x06)ULCON0=(ULCON0&(0Xff)|WORLD_LEN|STOP_BIT|PARITY_MODE|IRD_MODE 设置通过工作方式:设置通过工作方式:通过通过UCONn3:0设置设置UART中断方式中断方式 通过通过UFCONn设置是否使用设置是否使用FIFO、FIFO触发阀值(即发送触发阀值(即发送FIFO中中有多少个数据时产生中断、接收有多少个数据时产生中断、接收FIFO中有多少个数据时产生中断)中有多少个数据时产生中断)a、不使用、不使用FIFO时,
17、可以认为时,可以认为FIFO的深度为的深度为1,使用,使用FIFO时,时,FIFO的深度为的深度为64.b、使用使用FIFO时,通过时,通过UFSTATn检测检测FIFO是否已满、其中有多是否已满、其中有多 少个数据。少个数据。中断为脉冲方式,不产生接收错误状态中断,发射接收均为正常模式中断为脉冲方式,不产生接收错误状态中断,发射接收均为正常模式 UCON0=(UCON0|0X05);FIFO禁止禁止 UFCON0=UFCON0|0X0;流控禁止流控禁止 UMCON0=UMCON0|0X0;发送数据:发送数据:将要发送的数据写入将要发送的数据写入UTXHn,UART会将它保持到发送会将它保持到
18、发送 缓冲区中,并自动发出去。缓冲区中,并自动发出去。接收数据:接收数据:当当UART收到数据,保存到接收缓冲区中,收到数据,保存到接收缓冲区中,CPU读取读取 URXHn寄存器,即可获得数据。寄存器,即可获得数据。发送、接收时机发送、接收时机 可以通过发送、接收中断来控制发送、接收时机。可以通过发送、接收中断来控制发送、接收时机。如果采用轮询模式,如果采用轮询模式,UTRSTATn寄存器用来表明数据是否已经发送完寄存器用来表明数据是否已经发送完毕、是否已经接收到数据。毕、是否已经接收到数据。UART基本接口设计基本接口设计 void uart_init(void)引脚配置引脚配置 波特率设置
19、波特率设置 工作模式工作模式 发送一个字节:发送一个字节:void uart_send_byte(unsigned char byte)当当UTRSTAT0发送缓冲为空发送缓冲为空 则将则将byte写入写入UTXH0 接收一个字节接收一个字节 unsigned char uart_recv_byte(void)当当URTSTAT0接收缓冲满接收缓冲满 则从则从URXH0接收一个字节接收一个字节 从函数返回该字节从函数返回该字节 例:编写程序实现例:编写程序实现PC与与6410之间的通信。之间的通信。(1)、初始化程序。)、初始化程序。(2)、发送数据子函数。)、发送数据子函数。(3)、接收数据子函数。)、接收数据子函数。