同步异步通信接口USART
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
unsigned char ucsrc ucsrc=UBRRH ucsrc=UCSRC return ucsrc
波特率的设置和偏差
pp.380-383,表13-7~13-10给出相应与常用频率的晶 体,UBRR的设定值。误差小于±0.5%。
USART的基本操作
USART初始化
➢波特率设定 ➢数据帧结构设定 ➢发送和接收使能 Void USART_Init(unsigned int baud)
{ UBRRH=(unsigned char baud>>8); UBRRL=(unsigned char baud); UCSRB=(1<<RXEN)|(1<<TXEN); UCSRC=(1<<URSEL)|(1<<USBS)|(3<<UCSZ0) }
USART的基本操作
数据发送:5~8位
➢循环检测数据寄存器空标志UDRE,为1数据可写入UDR Void USART_Transmit(unsigned char data)
第十三、十四章
同步/异步通信接口USART
AVR的异步传输接口USART
USART特点:
➢全双工操作:独立的接收和发送数据寄存器 ➢支持同步和异步传输 ➢同步操作时可由主机或从机同步 ➢独立的高精度波特率发生器 ➢扩展的,支持5~9位数据位和1~2位停止位的数据帧格式 ➢硬件支持的奇偶校验 ➢3个独立的中断源:发送完成,接收完成和发送数据寄存器空 ➢支持多机通信模式 ➢支持倍速异步通信模式
AVR的异步传输接口USART
数据帧格式:
➢除波特率外,通信双方还必须采用相同的数据帧格式 ➢1位起始位:0 ➢5~8或9位数据位 ➢1位可选的无校验/奇校验/偶校验位 ➢1~2位停止位:1
USART相关的寄存器
USART数据寄存器UDR
RXB[7:0] TXB[7:0]
➢UDR实际上由两个物理上分离的寄存器RXB和TXB组成,它们 采用相同的I/O地址。 ➢写UDR实际是写TXB ➢读UDR实际是读RXB ➢如果数据寄存器不为空,写入的数据将被忽略
{ while(!(UCSRA & (1<<UDRE)));
UDR=data;
}
USART的基本操作
数据发送:9位
➢先将第9位数据写入UCSRB的TXB8标志位中 ➢再将低8位数据写入UDR中 Void USART_Transmit(unsigned int data)
{ while(!(UCSRA & (1<<UDRE))); UCSRB &= ~(1<<TXB8); //第9位为0 if(data & 0x0100) //第9位为1
}
USART的基本操作
数据接收:9位
➢先从UCSRB的RXB8标志位中读取第9位数据 ➢再从UDR中读取低8位数据
unsigned int USART_Receive(void)
{
unsigned char status,resh,resl; while(!(UCSRA & (1<<RXC))); status=UCSRA; resh=UCSRB; resl=UDR; if(status & (1<<FE)|(1<<DOR)|(1<<PE))
return -1; resh=(resh>>1)&0x01; return ((resh<<8)|resl);
}
基于USART接口基本通信的实现和测试
供测试使用的USART数据发送和接收程序 ATmega16由TXD发送数据,由RXD接收并通过7段LED显示 ➢电路图:见Proteus及实验开发板电路图 ➢程序分析:见程序
UCSRB |= (1<<TXB8); UDR=data }
USART的基本操作
数据接收:5~8位
➢循环检测接收完成标志位RXC,置1则从UDR中读取收到的数据 unsigned char USART_Receive(void)
{ while(!(UCSRA & (1<<RXC)));
return UDR;
USART相关的寄存器
波特率寄存器UBRRL和UBRRH
URSEL - - -
UBRR[11:8]
UBRR[7:0]
➢URSEL:UCSRC/UBRRH选择,写UBRRH该位必须写入0 ➢UBRR[11:0]:USART波特率设置寄存器
USART相关的寄存器
对寄存器UCSRC/UBRRH的操作
➢写操作:URSEL写1,写入UCSRC;写0,写入UBRRH ➢读操作:第一次读的是UBRRH,连续第二次读的是UCSRC
AVR的异步传输接口USART
串行时钟发生器:支持四种时钟模式
➢普通异步模式 ➢双倍速异步模式:只能用于异步通信 ➢主机同步模式 ➢从机同步模式
AVR的异步传输接口USART
波特率发生器:
➢通信双方必须采用相同的波特率 ➢定义为每秒钟传输的二进制位数,一般为1200的整数倍 ➢波特率由UBRR寄存器的值决定,计算公式见pp.373,表13-1
USA来自百度文库T相关的寄存器
USART控制和状态寄存器B—UCSRB
RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8
➢RXCIE:接收完成中断允许 ➢TXCIE:发送完成中断允许 ➢UDRE:发送数据寄存器空中断允许 ➢RXEN:数据接收允许 ➢TXEN:数据发送允许 ➢UCSZ2:数据字位数大小,与UCSZ[1:0]一起使用 ➢RXB8:接收数据的第8位,为第9位数据,读URD之前读取 ➢TXB8:发送数据的第8位,为第9位数据,写URD之前写入
谢谢欣赏
THANK YOU FOR WATCHING
USART相关的寄存器
USART控制和状态寄存器C—UCSRC
URSEL UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL
➢URSEL:UCSRC/UBRRH选择,写UCSRC该位必须写入1 ➢UMSEL:USART工作模式选择,1同步,0异步 ➢UPM[1:0]:校验方式,0:无校验,1:保留,2:偶校验,3:奇校验 ➢USBS:停止位选择,0:1位停止位,1:2位停止位 ➢UCSZ[1:0]:字符长度,与USCZ2一起使用,见表13-5 ➢UCPOL:时钟极性选择,同步模式下有效,见表13-6
USART相关的寄存器
USART控制和状态寄存器A—UCSRA
RXC TXC UDRE FE DOR PE
U2X MPCM
➢RXC:USART接收完成,置1产生接收完成中断请求 ➢TXC:USART发送完成,置1产生发送完成中断请求 ➢UDRE:USART发送数据寄存器空,置1产生中断请求 ➢FE:接收帧出错,例如接收到停止位为0 ➢DOR:接收数据溢出出错 ➢PE:校验错误 ➢U2X:USART传输速率倍速,只在异步模式下有效 ➢MPCM:多机通信模式允许,数据帧若不包含地址信息将被忽略
波特率的设置和偏差
pp.380-383,表13-7~13-10给出相应与常用频率的晶 体,UBRR的设定值。误差小于±0.5%。
USART的基本操作
USART初始化
➢波特率设定 ➢数据帧结构设定 ➢发送和接收使能 Void USART_Init(unsigned int baud)
{ UBRRH=(unsigned char baud>>8); UBRRL=(unsigned char baud); UCSRB=(1<<RXEN)|(1<<TXEN); UCSRC=(1<<URSEL)|(1<<USBS)|(3<<UCSZ0) }
USART的基本操作
数据发送:5~8位
➢循环检测数据寄存器空标志UDRE,为1数据可写入UDR Void USART_Transmit(unsigned char data)
第十三、十四章
同步/异步通信接口USART
AVR的异步传输接口USART
USART特点:
➢全双工操作:独立的接收和发送数据寄存器 ➢支持同步和异步传输 ➢同步操作时可由主机或从机同步 ➢独立的高精度波特率发生器 ➢扩展的,支持5~9位数据位和1~2位停止位的数据帧格式 ➢硬件支持的奇偶校验 ➢3个独立的中断源:发送完成,接收完成和发送数据寄存器空 ➢支持多机通信模式 ➢支持倍速异步通信模式
AVR的异步传输接口USART
数据帧格式:
➢除波特率外,通信双方还必须采用相同的数据帧格式 ➢1位起始位:0 ➢5~8或9位数据位 ➢1位可选的无校验/奇校验/偶校验位 ➢1~2位停止位:1
USART相关的寄存器
USART数据寄存器UDR
RXB[7:0] TXB[7:0]
➢UDR实际上由两个物理上分离的寄存器RXB和TXB组成,它们 采用相同的I/O地址。 ➢写UDR实际是写TXB ➢读UDR实际是读RXB ➢如果数据寄存器不为空,写入的数据将被忽略
{ while(!(UCSRA & (1<<UDRE)));
UDR=data;
}
USART的基本操作
数据发送:9位
➢先将第9位数据写入UCSRB的TXB8标志位中 ➢再将低8位数据写入UDR中 Void USART_Transmit(unsigned int data)
{ while(!(UCSRA & (1<<UDRE))); UCSRB &= ~(1<<TXB8); //第9位为0 if(data & 0x0100) //第9位为1
}
USART的基本操作
数据接收:9位
➢先从UCSRB的RXB8标志位中读取第9位数据 ➢再从UDR中读取低8位数据
unsigned int USART_Receive(void)
{
unsigned char status,resh,resl; while(!(UCSRA & (1<<RXC))); status=UCSRA; resh=UCSRB; resl=UDR; if(status & (1<<FE)|(1<<DOR)|(1<<PE))
return -1; resh=(resh>>1)&0x01; return ((resh<<8)|resl);
}
基于USART接口基本通信的实现和测试
供测试使用的USART数据发送和接收程序 ATmega16由TXD发送数据,由RXD接收并通过7段LED显示 ➢电路图:见Proteus及实验开发板电路图 ➢程序分析:见程序
UCSRB |= (1<<TXB8); UDR=data }
USART的基本操作
数据接收:5~8位
➢循环检测接收完成标志位RXC,置1则从UDR中读取收到的数据 unsigned char USART_Receive(void)
{ while(!(UCSRA & (1<<RXC)));
return UDR;
USART相关的寄存器
波特率寄存器UBRRL和UBRRH
URSEL - - -
UBRR[11:8]
UBRR[7:0]
➢URSEL:UCSRC/UBRRH选择,写UBRRH该位必须写入0 ➢UBRR[11:0]:USART波特率设置寄存器
USART相关的寄存器
对寄存器UCSRC/UBRRH的操作
➢写操作:URSEL写1,写入UCSRC;写0,写入UBRRH ➢读操作:第一次读的是UBRRH,连续第二次读的是UCSRC
AVR的异步传输接口USART
串行时钟发生器:支持四种时钟模式
➢普通异步模式 ➢双倍速异步模式:只能用于异步通信 ➢主机同步模式 ➢从机同步模式
AVR的异步传输接口USART
波特率发生器:
➢通信双方必须采用相同的波特率 ➢定义为每秒钟传输的二进制位数,一般为1200的整数倍 ➢波特率由UBRR寄存器的值决定,计算公式见pp.373,表13-1
USA来自百度文库T相关的寄存器
USART控制和状态寄存器B—UCSRB
RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8
➢RXCIE:接收完成中断允许 ➢TXCIE:发送完成中断允许 ➢UDRE:发送数据寄存器空中断允许 ➢RXEN:数据接收允许 ➢TXEN:数据发送允许 ➢UCSZ2:数据字位数大小,与UCSZ[1:0]一起使用 ➢RXB8:接收数据的第8位,为第9位数据,读URD之前读取 ➢TXB8:发送数据的第8位,为第9位数据,写URD之前写入
谢谢欣赏
THANK YOU FOR WATCHING
USART相关的寄存器
USART控制和状态寄存器C—UCSRC
URSEL UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL
➢URSEL:UCSRC/UBRRH选择,写UCSRC该位必须写入1 ➢UMSEL:USART工作模式选择,1同步,0异步 ➢UPM[1:0]:校验方式,0:无校验,1:保留,2:偶校验,3:奇校验 ➢USBS:停止位选择,0:1位停止位,1:2位停止位 ➢UCSZ[1:0]:字符长度,与USCZ2一起使用,见表13-5 ➢UCPOL:时钟极性选择,同步模式下有效,见表13-6
USART相关的寄存器
USART控制和状态寄存器A—UCSRA
RXC TXC UDRE FE DOR PE
U2X MPCM
➢RXC:USART接收完成,置1产生接收完成中断请求 ➢TXC:USART发送完成,置1产生发送完成中断请求 ➢UDRE:USART发送数据寄存器空,置1产生中断请求 ➢FE:接收帧出错,例如接收到停止位为0 ➢DOR:接收数据溢出出错 ➢PE:校验错误 ➢U2X:USART传输速率倍速,只在异步模式下有效 ➢MPCM:多机通信模式允许,数据帧若不包含地址信息将被忽略