Atmega90can32/64/128串口详解(一)
来源:互联网 发布:鬼才大小姐 知乎 编辑:程序博客网 时间:2024/06/06 01:11
下面以USART0为例:
先介绍一下与串口相关的寄存器:
***:USART I/O数据寄存器
很容易理解RXB0[7:0]即为串口读取缓冲区,TXB0为发送缓冲区
***:USART 控制和状态寄存器A-UCSR0A
Bit 7 – RXC0: USART 接收结束
接收缓冲器中有未读出的数据时 RXC 置位,否则清零。接收器禁止时,接收缓冲器被刷
新,导致 RXC 清零。 RXC 标志可用来产生接收结束中断
Bit 6 – TXC0: USART 发送结束
发送移位缓冲器中的数据被送出,且当发送缓冲器 (UDR) 为空时 TXC 置位。执行发送结
束中断时 TXC 标志自动清零,也可以通过写 1 进行清除操作。TXC 标志可用来产生发送
结束中断
Bit 5 – UDRE0: USART 数据寄存器空
UDRE标志指出发送缓冲器(UDR)是否准备好接收新数据。UDRE为1说明缓冲器为空,已
准备好进行数据接收。UDRE标志可用来产生数据寄存器空中断(见对 UDRIE位的描述)。
复位后 UDRE 置位,表明发送器已经就绪。
Bit 4 – FE0: 帧错误
如果接收缓冲器接收到的下一个字符有帧错误,即接收缓冲器中的下一个字符的第一个
停止位为 0 ,那么FE 置位。这一位一直有效直到接收缓冲器 (UDR) 被读取。当接收到的 停止位为 1 时, FE 标志为 0。对 UCSRA 进行写入时,这一位要写 0。
Bit 3 – DOR0: 数据溢出
数据溢出时 DOR 置位。当接收缓冲器满 ( 包含了两个数据 ),接收移位寄存器又有数据,
若此时检测到一个新的起始位,数据溢出就产生了。这一位一直有效直到接收缓冲器
(UDR) 被读取。对 UCSRA 进行写入时,这一位要写 0。
Bit 2 – PE0: 奇偶校验错误
当奇偶校验使能 (UPM1 = 1) ,且接收缓冲器中所接收到的下一个字符有奇偶校验错误时
UPE 置位。这一位一直有效直到接收缓冲器 (UDR) 被读取。对 UCSRA 进行写入时,这一 位要写 0。
Bit 1 – U2X0: 倍速发送
这一位仅对异步操作有影响。使用同步操作时将此位清零。
此位置 1 可将波特率分频因子从 16 降到 8 ,从而有效的将异步通信模式的传输速率加倍。
Bit 0 – MPCM0: 多处理器通信模式
设置此位将启动多处理器通信模式。 MPCM 置位后, USART 接收器接收到的那些不包
含地址信息的输入帧都将被忽略。发送器不受 MPCM 设置的影响。
***:USART 控制和状态寄存器B-UCSR0B
? Bit 7 – RXCIE0: 接收结束中断使能
置位后使能 RXC 中断。当 RXCIE 为 1 ,全局中断标志位SREG 置位, UCSRA 寄存器 的 RXC 亦为 1 时可以产生 USART 接收结束中断。
? Bit 6 – TXCIE0: 发送结束中断使能
置位后使能 TXC 中断。当 TXCIE 为 1 ,全局中断标志位SREG 置位,UCSRA 寄存器的 TXC 亦为 1 时可以产生 USART 发送结束中断。
Bit 5 – UDRIE0: USART 数据寄存器空中断使能
置位后使能 UDRE 中断。当 UDRIE 为 1 ,全局中断标志位SREG 置位,UCSRA 寄存器 的 UDRE 亦为 1 时可以产生 USART 数据寄存器空中断。
Bit 4 – RXEN0: 接收使能
置位后将启动 USART 接收器。 RxD 引脚的通用端口功能被 USART 功能所取代。禁止
接收器将刷新接收缓冲器,并使 FE 、 DOR 及 PE 标志无效。
? Bit 3 – TXEN0: 发送使能
置位后将启动将启动 USART 发送器。TxD 引脚的通用端口功能被 USART 功能所取代。
TXEN 清零后,只有等到所有的数据发送完成后发送器才能够真正禁止,即发送移位寄存
器与发送缓冲寄存器中没有要传送的数据。发送器禁止后,TxD 引脚恢复其通用I/O功能。
? Bit 2 – UCSZ02: 字符长度
UCSZ2与UCSRC寄存器的UCSZ1:0结合在一起可以设置数据帧所包含的数据位数(字符
长度 )。
? Bit 1 – RXB80: 接收数据位 8
对 9 位串行帧进行操作时, RXB8 是第 9 个数据位。读取 UDR 包含的低位数据之前首先 要读取 RXB8。
? Bit 0 – TXB80: 发送数据位 8
对 9 位串行帧进行操作时,TXB8 是第 9 个数据位。写 UDR 之前首先要对它进行写操作。
***:USART 控制和状态寄存器C-UCSR0C
UCSRC寄存器与UBRRH寄存器共用相同的I/O地址。
? Bit 6 – UMSEL0: USART 模式选择
通过这一位来选择同步或异步工作模式。
0 :异步
1 :同步
? Bit 5:4 奇偶校验模式
00:禁止
01:保留
10:偶检验
11:奇校验
? Bit 3 停止位选择
0 :一位停止位
1:两位停止位
? Bit 2:1 字符长度
UCSZ01和UCSZ00是与UCSR0B的UCSZ02一起使用用的,用来设置数据帧包含的数据位数
当UCSZ02为0时,00表示5位,01表示6位,10表示7位,11表示8位.当UCSZ02为1时,11表示9位.
详情参见文档
? Bit 0 UCPOL0 时钟极性
****:波特率寄存器 UBRRL与 UBRRH
这个 12 位的寄存器包含了 USART 的波特率信息。其中 UBRRH 包含了 USART 波特率高 4 位, UBRRL 包含了低 8 位。波特率的改变将造成正在进行的数据传输受到破坏。写 UBRRL 将立即更新波特率分频器。
UBRR的设置和这些参数有关:U2X0,CPU频率,波特率
当U2X0为0时,即异步正常模式下,UBRR的计算公式:
1、U2X0=0时的公式计算
UBRR0L= (F_CPU/BAUDRATE/16-1)%256;
UBRR0H= (F_CPU/BAUDRATE/16-1)/256;
2、U2X0=1时的公式计算
UBRR0L= (F_CPU/BAUDRATE/8-1)%256;
UBRR0H= (F_CPU/BAUDRATE/8-1)/256;
- Atmega90can32/64/128串口详解(一)
- Atmega90can32/64/128串口详解(二)
- 3.S5PV210串口通信详解(一)
- WIN32串口编程详解(一)
- WIN32串口编程详解(一)
- 串口调试(一)
- 串口驱动(一)
- 串口驱动(一)
- 串口学习(一)
- Win32 串口编程(一)
- Win32 串口编程(一)
- s3c2440串口驱动(一)
- JAVA 串口编程 (一)
- Win32 串口编程(一)
- STM32 串口DMA(一)
- JAVA 串口编程 (一)
- 串口转以太网(一)
- QT串口编程(一)
- 数据结构 树
- php过滤替换特殊字符 函数
- 我的git 常用指令
- Sqlite 的String 自动转成数字原因分析。。
- POJ 1789 Truck History 最小生成树
- Atmega90can32/64/128串口详解(一)
- 找零钱的张数最少(20元,10元,5元,1元)
- ADMM优化算法
- Windows8 解决VMware与Hyper-V不兼容共存方法
- mysql数据库管理常用命令
- iOS上如何实用第三方字体
- 软件测试__findbugs+ant使用导出Html缺陷文档
- Atmega90can32/64/128串口详解(二)
- Notepad++背景颜色设置