第3节异步串行通信
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UART
(1) UART之间以全双工方式传输数据,TXD用于发送,RXD用于接 收,GND用于给双方提供参考电压。 (2)TXD、RXD数据线以“位”最小单位传输数据。 (3)帧:由具有完整意义的、不可分隔的若干位组成,它包含开始位、 数据位、校验位和停止位。 (4)发送数据前,UART之间要约定好波特率、数据传输格式
例:编写程序实现PC与6410之间的通信。 (1)、初始化程序。 (2)、发送数据函数。 (3)、接收数据函数。
• • • • • •
课后习题 1、发送一个字符。 2、发送字符串。 3、发送变量的值。 *4、封装出printf(); *5、调试MODBUS协议
b、设置波特率
S3C6410 UART的时钟源有两种选择:PCLK,EXT_UCLK,通过 UCONn进行设置
UBRDIVn=(int)(UART CLOCK/(buad rate *16))-1
UCONn UBRDIVn
时钟源选择
时钟源采用PCLK UCON0=(UCON0&=~(0X3<<10))|(0X2<<10);
4、RS-232C接线方式 RS-232C串口的接线方式有全串口连线、3线连 接等方式 3线连接方式: RXD,TXD和GND RS-232C的通讯距离和速度 RS-232C能够可靠进行数据传输的最大通讯距离为15米 传输速度一般都可以达到115200bps甚至更高,标准串口 能够提供的传输速度主要有以下波特率: 1200bps 2400bps 4800bps 9600bps 19200bps 38400bps 57600bps 115200bps
c、设置工作方式: 通过UCONn设置UART中断方式
通过UFCONn设置是否使用FIFO、FIFO触发阀值(即发 送FIFO中有多少个数据时产生中断、接收FIFO中有多少 个数据时产生中断)
a、不使用FIFO时,可以认为FIFO的设置位1,使用FIFO时,
FIFO的深度为64.
b、 使用FIFO时,通过UFSTATn检测FIFO是否已满、其中有多 少个数据。
2、数据通信方向:
A B A B A B
单工方式:数据始终是从A设备发送B设备 半双工方式:既能从A设备传送到B设备,也能从B设备传送 到 A设备,但在任何时刻都不能在两个方向上同时 传送,即每次只能有一个设备发送,另一个设备 接收。 全双工方式:允许通信双方同时进行发送和接收,这时,A设 备在发送的同时也可以接收,B设备也一样。
(2)每个异步串行I/O端口通过中断或者直接存储器存取
(DMA)模式来操作。换句话说,UART是通过产生一 个中断或者DMA请求,在CPU和UART之间传输数据的。 (3)UART使用系统时钟的时间可以支持的比特率最高位 115200b/s.每个UART的通道包含了两个64字节收发FIFO存 储器。 (4)S3C6410的UART包括可编程波特率,红外线的传送/接收,一
2、波特率
波特率是衡量数据传送速率的指标,单位为位/秒(bit/s )或比特。 记录每秒钟传送的二进制位数。 例如数据传送速率为120字符/秒,每个字符为10位,则其传 送的波特率为10*120=1200bit/s,即1200波特率。
3、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 EIA-RS-423A EIA-RS-485 目前在PC机上的COM1、COM2接口,就是RS-232c
并维持1位的时间,这样接收方检测到开始位后,一位位低检测
数据线的状态得到所传输的数据。 (3)UART一帧中可以有5、6、7、或8位数据,发送方一位位地改 变数据线的状态将它们发送出去,首先发送最低位。 (4)如果用校验功能,UART在发送完数据位后,还要发送1个校验位。 最后,发送停止位,数据线恢复到“空闲”状态(1状态)
8、S3c6410是UART:
功能:支持可编程的波特率、红外发送/接受,可插入一 个 或两个停止位,支持5-8位数组宽度和奇偶校验。 UART单元组成: (1)、一个波特率发生器 (2)、一个发送器 (3)、一个接收器 (4)、一个控制单元
9、S3C6410的UART
(1)S3C6410通用异步接收和发送器(UART)提供了 四个独立的异步 串行I/O端口。
5、UART原理
通用异步收发器简称UART,用来传输串行数据 发送时:CPU将并行数据写入UART,UART按照一定的格 式在一根电线上串行发出数据。 接收时:UART检测另一根电线上的信号,收集串行数据放 在缓冲区中,CPU即可读取UART获得这些数据。
6、UART连线图:
PC 6410
UART
UART串行异步通信
本节内容:
一、数据通信简述。
二、串行异步收发器(UART)。
三、UART驱动程序设计。
一、数据通信简述 1、数据通信方式
数据通信的基本方式可分为并行通信和串行通信两种: 并行通信:利用多条数据线将数据的各位同时传送。 其特点是传输速度快,适用于短距离通信。 串行通信:利用一条数据线将数据一位位地顺序传送,特点 是通信线路简单,成本低,适用于远距离通信。
接收数据:
当UART收到数据,保存到接收缓冲区中,CPU读取 URXHn寄存器,即可获得数据。
发送一个字节:
void uart_send_byte(unsigned char byte) { 当UTRSTAT0发送缓冲为空 则将byte写入UTXH0 }
接收一个字节 unsigned char uart_recv_byte(void) { 当URTSTAT0接收缓冲满 则从UTXH0接收一个字节 从函数返回该字节 }
个或两个停止位插入,5位,6位,7位或8位数据的宽度和奇偶校
验。
10、控制UART相关寄存器:
共9个,分为两组:6个控制寄存器 和 3个指示传送状态寄存器。
控制寄存器: 线路控制寄存器(ULCONn) 控制寄存器(UCONn) FIFO控制寄存器(UFCONn) MODEM控制寄存器(UMCONn) 发送寄存器(UTXHn)和接收寄存器(URXHn) 波特率因子寄存器(UBRDIVn) 指示传送状态寄存器: 状态寄存器(UTRSTATn) 错误状态寄存器(USERSTATn) FIFO状态寄存器(UFSTATn)
d、中断为脉冲方式,不产生接收错误状态中断,发 射接收均为正常模式 UCON0=(UCON0|0X05); FIFO禁止 UFCON0=UFCON0|0X0; 流控禁止 UMCON0=UMCON0|0X0;
3、收发数据 发送数据:
将要发送的数据写入UTXHn,UART会将它保持到发送 缓冲区中,并自动发出去。
波特率设置
#define PCLK 66000000 baud=115200 UBRDIV0=(U32)((PCLK/baud/16)-1); 设置传输格式 通过ULCON可以设置传输格式:数据位、校验位、停止位、流控等。 #define WORLD_LEN (0X3<<0) #define STOP_BIT (0X0<<2) #define PARITY_MODE (0X0<<3) #define IRD_MODE (0x<<6) ULCON0=(ULCON0&(~0Xff))| WORLD_LEN| STOP_BIT| PARITY_MODE| IRD_MODE
3、数据通信协议 通信协议:是ቤተ መጻሕፍቲ ባይዱ通信的双方约定的一些规则 一般情况下通信硬件线路越简单,需要的软件协议 越复杂,协议占用数据量越多。
异步通信时,对数据格式有如下约定:规定有空闲位 、起始位、奇偶检验位、停止位。
二、异步串行通信 1、异步串行通信协议:
1位起始位--8位数据位—1位校验位—1位停止位 起始位:先发一个逻辑“0”信号,表示传输字符的开始 数据位:紧接在起始位之后。数据位的个数可以使4、5、6、 7、8,以最低位开始传送,靠时钟定位。 奇偶校验位:数据位加上这一位后,使得“1”的位数为偶数( 偶 检验)或者奇数(奇校验),以此校验数据传输的 正确性。 停止位:它是一个字符数据的结束标志 空闲位:处于逻辑“1”状态,表述当前线路上没有数据传输 。
7、UART原理:
UART使用标准TTL/CMOS逻辑电平(0-5v,0-3.3v)来表示数据,高电 平位1,低电平位0:为了增强数据的抗干扰能力。提高传输长度,通常将 TTL/CMOS转位RS-232逻辑电平(3-12v表示0,-3 --- -12V表示1) 。 数据传输流程: (1) 平时数据线处于“空闲”状态(1状态) (2)当要发送数据时,UART改变TXD数据线的状态(变为0状态)
三、UART驱动程序设计 1、设计框图
串口初始化
发送数据功能
接收数据功能
2、UART初始化 void uart_init(void) { 引脚配置 波特率设置 工作模式 }
设置UART通道管脚
设置波特率
设置数据传输格式
选择通道工作模式
a、初始化UART通道管脚 配置UART0端口 GPA口控制 配置GPACON寄存器,禁止上下拉电阻。 GPACON&=~0X0ff GPACON|=0X22; GPAUD=0x00;