基于AVR单片机USART与PC机的串行通信

发布者:幸福满溢最新更新时间:2020-01-15 来源: elecfans关键字:AVR单片机  USART  PC机  串行通信 手机看文章 扫描二维码
随时随地手机看文章

PC机发送字符给单片机控制发光管亮,同时将其传回PC机,其中单片机的发送和接收都采用查询方式


1、USART的主要特点

通用同步和异步串行接收器和转发器(USART) 是一个高度灵活的串行通讯设备。主要特点为:

全双工操作( 独立的串行接收和发送寄存器)

异步或同步操作

主机或从机提供时钟的同步操作

高精度的波特率发生器

支持5, 6, 7, 8, 或9 个数据位和1 个或2 个停止位

支持的奇偶校验操作

数据过速检测? 帧错误检测

噪声滤波,包括错误的起始位检测,以及数字低通滤波器 三个独立的中断:发送结束中断, 发送数据寄存器空中断,以及接收结束中断

多处理器通讯模式

倍速异步通讯模式


2、异步串行收发器

USART 分为了三个主要部分: 时钟发生器,发送器和接收器。控制寄存器由三个单元共享。时钟发生器包含同步逻辑,通过它将波特率发生器及为从机同步操作所使用的外部输入时钟同步起来。XCK ( 发送器时钟) 引脚只用于同步传输模式。发送器包括一个写缓冲器,串行移位寄存器,奇偶发生器以及处理不同的帧格式所需的控制逻辑。写缓冲器可以保持连续发送数据而不会在数据帧之间引入延迟。由于接收器具有时钟和数据恢复单元,它是USART 模块中最复杂的。恢复单元用于异步数据的接收。除了恢复单元,接收器还包括奇偶校验,控制逻辑,移位寄存器和一个两级接收缓冲器UDR。接收器支持与发送器相同的帧格式,而且可以检测帧错误,数据过速和奇偶校验错误。


3、时钟产生

1)USART支持4种模式的时钟

时钟产生逻辑为发送器和接收器产生基础时钟。USART 支持4 种模式的时钟:正常的异步模式,倍速的异步模式,主机同步模式,以及从机同步模式。USART 控制位UMSEL和状态寄存器C (UCSRC) 用于选择异步模式和同步模式。倍速模式( 只适用于异步模式) 受控于UCSRA 寄存器的U2X。使用同步模式 (UMSEL = 1) 时,XCK 的数据方向寄存器(DDR_XCK)决定时钟源是由内部产生(主机模式)还是由外部生产(从机模式)。仅在同步模式下XCK 有效。

基于AVR单片机USART与PC机的串行通信

2)内部时钟用于异步模式和同步主机模式

USART 的波特率寄存器UBRR 和降序计数器相连接,一起构成可编程的预分频器或波特率发生器。降序计数器对系统时钟计数,当其计数到零或UBRRL 寄存器被写时,会自动装入UBRR 寄存器的值。当计数到零时产生一个时钟,该时钟作为波特率发生器的输出时钟,输出时钟的频率为fosc/(UBRR+1)。发生器对波特率发生器的输出时钟进行2、8或16 的分频,具体情况取决于工作模式。波特率发生器的输出被直接用于接收器与数据恢复单元。数据恢复单元使用了一个有2、8或16个状态的状态机,具体状态数由UMSEL、U2X 与 DDR_XCK 位设定的工作模式决定。Table 60 给出了计算波特率(位/秒)以及计算每一种使用内部时钟源工作模式的UBRR值的公式。

基于AVR单片机USART与PC机的串行通信

3)倍速工作模式

通过设定UCSRA 寄存器的U2X 可以使传输速率加倍。该位只对异步工作模式有效。当工作在同步模式时,设置该位为“0”。设置该位把波特率分频器的分频值从16 降到8,使异步通信的传输速率加倍。此时接收器只使用一半的采样数对数据进行采样及时钟恢复,因此在该模式下需要更精确的系统时钟与更精确的波特率设置。发送器则没有这个要求。


4)外部时钟(这些东西感觉都是扯淡的~~呵呵)

同步从机操作模式由外部时钟驱动,如Figure 70 所示。

输入到XCK 引脚的外部时钟由同步寄存器进行采样,用以提高稳定性。同步寄存器的输出通过一个边沿检测器,然后应用于发送器与接收器。这一过程引入了两个CPU 时钟周期的延时,因此外部XCK 的最大时钟频率由以下公式限制:fsck要注意fosc 由系统时钟的稳定性决定,为了防止因频率漂移而丢失数据,建议保留足够的裕量。


5)同步时钟操作

使用同步模式时(UMSEL = 1)XCK 引脚被用于时钟输入( 从机模式) 或时钟输出( 主机模式)。时钟的边沿、数据的采样与数据的变化之间的关系的基本规律是:在改变数据输出端TxD 的XCK 时钟的相反边沿对数据输入端RxD 进行采样。


4、帧格式

串行数据帧由数据字加上同步位( 开始位与停止位) 以及用于纠错的奇偶校验位构成。

1)数据帧格式

1 个起始位

5、 6、 7、 8 或9 个数据位

无校验位、奇校验或偶校验位

1或2 个停止位


数据帧以起始位开始;紧接着是数据字的最低位,数据字最多可以有9 个数据位,以数据的最高位结束。如果使能了校验位,校验位将紧接着数据位,最后是结束位。当一个完整的数据帧传输后,可以立即传输下一个新的数据帧,或使传输线处于空闲状态。Figure72 所示为可能的数据帧结构组合。括号中的位是可选的。

基于AVR单片机USART与PC机的串行通信

数据帧的结构由UCSRB 和 UCSRC 寄存器中的UCSZ2:0、 UPM1:0、USBS 设定。接收与发送使用相同的设置。设置的任何改变都可能破坏正在进行的数据传送与接收。USART的字长位UCSZ2:0确定了数据帧的数据位数;校验模式位UPM1:0用于使能与决定校验的类型; USBS 位设置帧有一位或两位结束位。接收器忽略第二个停止位,因此帧错误(FE) 只在第一个结束位为”0” 时被检测到。


2)校验位的计算

校验位的计算是对数据的各个位进行异或运算。如果选择了奇校验,则异或结果还需要取反。校验位与数据位的关系如下:

基于AVR单片机USART与PC机的串行通信

注意:校验位位于最后一个数据位与第一个停止位之间。


5、USART的寄存器及设置

1)USART I/O数据寄存器

基于AVR单片机USART与PC机的串行通信

USART 发送数据缓冲寄存器和USART 接收数据缓冲寄存器共享相同的I/O 地址,称为USART 数据寄存器或UDR。将数据写入UDR 时实际操作的是发送数据缓冲器存器(TXB),读UDR 时实际返回的是接收数据缓冲寄存器(RXB) 的内容。在5、6、7 比特字长模式下,未使用的高位被发送器忽略,而接收器则将它们设置为0。只有当UCSRA寄存器的UDRE标志置位后才可以对发送缓冲器进行写操作。如果UDRE没有置位,那么写入UDR 的数据会被USART 发送器忽略。当数据写入发送缓冲器后,若移位寄存器为空,发送器将把数据加载到发送移位寄存器。然后数据串行地从TxD 引脚输出。接收缓冲器包括一个两级FIFO,一旦接收缓冲器被寻址FIFO 就会改变它的状态。因此不要对这一存储单元使用读- 修改- 写指令(SBI 和CBI)。使用位查询指令(SBIC 和SBIS)时也要小心,因为这也有可能改变FIFO 的状态

2)USART控制和状态寄存器A

基于AVR单片机USART与PC机的串行通信

Bit 7 – RXC: USART 接收结束

接收缓冲器中有未读出的数据时RXC 置位,否则清零。接收器禁止时,接收缓冲器被刷新,导致RXC 清零。RXC 标志可用来产生接收结束中断( 见对RXCIE 位的描述)。


Bit 6 – TXC: USART 发送结束发送移位缓冲器中的数据被送出,且当发送缓冲器 (UDR) 为空时TXC 置位。执行发送结束中断时TXC 标志自动清零,也可以通过写1 进行清除操作。TXC 标志可用来产生发送结束中断( 见对TXCIE 位的描述)。


Bit 5 – UDRE: USART 数据寄存器空UDRE标志指出发送缓冲器(UDR)是否准备好接收新数据。UDRE为1说明缓冲器为空,已准备好进行数据接收。UDRE标志可用来产生数据寄存器空中断(见对UDRIE位的描述)。复位后UDRE 置位,表明发送器已经就绪。


Bit 4 – FE: 帧错误如果接收缓冲器接收到的下一个字符有帧错误,即接收缓冲器中的下一个字符的第一个停止位为0,那么FE 置位。这一位一直有效直到接收缓冲器(UDR) 被读取。当接收到的停止位为1 时, FE 标志为0。对UCSRA 进行写入时,这一位要写0。


Bit 3 – DOR: 数据溢出数据溢出时DOR 置位。当接收缓冲器满( 包含了两个数据),接收移位寄存器又有数据,若此时检测到一个新的起始位,数据溢出就产生了。这一位一直有效直到接收缓冲器(UDR) 被读取。对UCSRA 进行写入时,这一位要写0。


Bit 2 – PE: 奇偶校验错误当奇偶校验使能(UPM1 = 1),且接收缓冲器中所接收到的下一个字符有奇偶校验错误时UPE 置位。这一位一直有效直到接收缓冲器 (UDR) 被读取。对UCSRA 进行写入时,这一位要写0。


Bit 1 – U2X: 倍速发送这一位仅对异步操作有影响。使用同步操作时将此位清零。此位置1 可将波特率分频因子从16 降到8,从而有效的将异步通信模式的传输速率加倍。


Bit 0 – MPCM: 多处理器通信模式设置此位将启动多处理器通信模式。MPCM 置位后, USART 接收器接收到的那些不包含地址信息的输入帧都将被忽略。发送器不受MPCM设置的影响。


3)USART控制和状态寄存器B

基于AVR单片机USART与PC机的串行通信

Bit 7 – RXCIE: 接收结束中断使能

置位后使能RXC 中断。当RXCIE 为1,全局中断标志位SREG 置位, UCSRA 寄存器的RXC 亦为1 时可以产生USART 接收结束中断。


Bit 6 – TXCIE: 发送结束中断使能置位后使能TXC 中断。当TXCIE 为1,全局中断标志位SREG 置位,UCSRA 寄存器的TXC 亦为1 时可以产生USART 发送结束中断。


Bit 5 – UDRIE: USART 数据寄存器空中断使能置位后使能UDRE 中断。当UDRIE 为1,全局中断标志位SREG 置位,UCSRA 寄存器的UDRE 亦为1 时可以产生USART 数据寄存器空中断。


Bit 4 – RXEN: 接收使能

置位后将启动USART 接收器。RxD 引脚的通用端口功能被USART 功能所取代。禁止接收器将刷新接收缓冲器,并使 FE、DOR 及PE 标志无效。


Bit 3 – TXEN: 发送使能

置位后将启动将启动USART 发送器。TxD 引脚的通用端口功能被USART 功能所取代。TXEN 清零后,只有等到所有的数据发送完成后发送器才能够真正禁止,即发送移位寄存器与发送缓冲寄存器中没有要传送的数据。发送器禁止后,TxD引脚恢复其通用I/O功能。


Bit 2 – UCSZ2: 字符长度

UCSZ2与UCSRC寄存器的UCSZ1:0结合在一起可以设置数据帧所包含的数据位数(字符长度)。


Bit 1 – RXB8: 接收数据位 8

对9 位串行帧进行操作时,RXB8 是第9 个数据位。读取UDR 包含的低位数据之前首先要读取RXB8。


Bit 0 – TXB8: 发送数据位8

对9 位串行帧进行操作时,TXB8 是第9 个数据位。写UDR 之前首先要对它进行写操作。

关键字:AVR单片机  USART  PC机  串行通信 引用地址:基于AVR单片机USART与PC机的串行通信

上一篇:如何解决AVR单片机上电复位工作混乱的问题
下一篇:基于AVR单片机中的EEPROM和FLASH的区别及使用方法解析

推荐阅读最新更新时间:2024-11-08 15:27

PC红外串行通信原理分析
我们知道,在红外通信中(例如电视机、电风扇、DVD等家电的遥控器),其载波频率通常为38KHz。也有一些系统使用32KHz,36KHz,40KHz,56KHz等载波频率,但是比较少见。我们可以用T0或T1脚产生38KHz的波特率,然后把串口TXD送出的信号也叠加到上面(调制),这样就形成线外信号的载波传输,调制后再通过红外发光二极管发送出去。接收则使用3端红外接收模块。红外接收模块的载波频率固定为38KHz,集成了红外线的接收、放大、解调等功能,解调后的数据直接输入UART的RXD引脚。通信的波特率设置为2400bps(38KHz的载波频率不适于更高的波特率)。    为了避免发射时造成对本机的干扰,我们采用了半双工的通信方式。
[嵌入式]
开关电源技术:PC机电源内部结构分析
我们要看电源是由什么组成的,最好的方法是我们打开电源的外壳,看看电源的内部结构。 二极管组成,另一种是将四个二极管封装在一起。而后一种的方式就被称为全桥。全桥和二极管所能承受的最低耐压程度和最大电流是有限值的:耐压应不低于700V,最大电流应不大于1A。 4.开关三极管 开关三极管是开关电源的中心枢纽,它主要负责将直流电送到开关变压器上。其耐压程度不能小于800V,输出的电流通常不能小于5A。开关三极管是容易损坏的部件,而它又是开关电源的核心。所以开关三极管的质量和对于电源的好坏是息息相关的。 5.开关变压器 电源中,在两个散热片之间的金属线包就是我们看到的开关变压器。它的主要作用就是将高压转变为低压,根据电磁学的原理,
[电源管理]
基于89C51单片机的数字视频监控系统键盘及报警控制卡设计
  键盘是数字视频监控录像系统中最重要的输入设备之一,是人机接口的重要组成部分。目前常用的工业控制计算机键盘除配置电子锁开关防止非法键盘输入外,与 PC键盘并没有多大区别。这种键盘不仅键数多,操作不灵活,而且通常只能作为输入设备,主机无法通过键盘与外设进行通信。本文在分析PC机键盘通信方式的基础上,设计出以89C51单片机为核心的数字视频监控系统键盘及报警控制卡,该卡具有键盘通信和输入输出报警两种功能,采用标准PCI卡的结构,但不占用主机硬件资源。其中,报警部分有4路输入和4路输出,可以与标准的报警传感器相连;键盘部分有16个键,通信方式与PC机完全兼容。采用这种控制卡,不仅可以节省视频监控系统中常用的专用报警解码器,而且能够实现
[单片机]
	基于89C51单片机的数字视频监控系统键盘及报警控制卡设计
数字温度传感器TC77与AVR单片机的接口设计
  AVR系列的单片机内部集成了TWI(Two-wire SerialInterface)总线。该总线具有I2C总线的特点,即接线简单,外部硬件只需两个上拉电阻,使用时钟线SCL和数据线SDA就可以将128个不同的设备互连到一起;而且支持主机和从机操作,器件可以工作于发送器模式或接收器模式,数据传输率高达400 kHz。正因为TWI总线具有这么多的优点,因此受到了使用者的青睐。   由于该总线与传统的I2C总线极其相似。因此不少人误以为TWI总线就是I2C总线,其实这只是一种简单化的理解。TWI总线是对I2C总线的继承和发展。它定义了自已的功能模块和寄存器,寄存器各位功能的定义与I2C总线并不相同;而且TWI总线引入了状奁寄
[单片机]
数字温度传感器TC77与<font color='red'>AVR单片机</font>的接口设计
avr单片机的数码管显示时钟设计
//数码管数据P0口,数码管控制P2口 #include #include #includePACe.h》 #include #include #definecodePROGMEM #defineucharunsignedchar #defineuintunsignedint codeconstucharLED_7[16]={0x28,0x7E,0xA2,0x62,0x74,0x61,0x21,0x7A,0x20,0x60,0xff};//commonof+ codeconstucharposi ti on[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; uchar TI me[
[单片机]
<font color='red'>avr单片机</font>的数码管显示时钟设计
利用串口调试精灵或PC的超级终端调试串口的程序
;利用串口调试精灵或PC端的超级终端,波特率设为9600,数据位8位, ;停止位1位,无校验位. ;首选从PC机向串串口发送一个字符如"2",单片机收到后返发收到这个数如"2-PIC16"给电脑. ;注意实验板的设定:S4,S5,S1要全部到OFF,S13第6,7脚一定要ON. ;烧写时注意振荡方式XT,WDT要禁止. LIST P=16F877 INCLUDE "P16F877.INC" ;*********************************** __CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_
[单片机]
基于AVR 单片机的中频电源测试系统设计
1 引言 电参数的测量和监控是电力系统的重要组成部分,本文从测试系统的工程学实际出发,完成了对中频电源系统的电压、电流、频率、功率因数、有功功率等参数的测量和实时监控,较好的实现了中频电源测试系统的功能和工程要求。AVR 单片机相对传统的 51 系列单片机,具有更高的集成度和更强的功能,与 C 语言有很好的兼容性,RISC 指令架构使其运行速度可达 1MIPS/MHZ。随着其越来越广泛的应用,必将取代 51 系列成为单片机的主流。其主要功能包括看门狗、FLASH 程序存储器、E2PROM、A/D 转换器、定时器、计数器、USART 接口等多种功能,这使得本测试系统的硬件实现变得简单,可靠。 2 硬件结构设计与实现 本文所提及的中
[单片机]
基于AVR 单片机的中频电源测试系统设计
基于AVR单片机的多功能电源设计
随着 嵌入式 系统设计技术的发展,在设计和仿真中,系统工程师对 电源 的要求也越来越高。在 嵌入式 系统设计是使用8031 单片机 和74系列集成 电路 时,所有使用74系列集成 电路 的电路板都使用单一的5 V 电源 供电就可以了。当时的供电电源部分不是一个需要太多注意的单元,基本上5 V的电源能满足所有的数字 集成电路 设计的需要。而近几年来,随着技术的发展, 集成电路 里的三极管变得越来越小并且工作的电压越来越低,使得嵌入式系统开发的重点从系统的速度,转到低功耗设计上。因此在同一个嵌入式系统中,存在多种不同电压的电源供电,从低于1 V到高于5 V都存在。而且在系统的稳定性和可靠性测试时,还要 模拟 不同的电源故障情况下,比如
[电源管理]
小广播
设计资源 培训 开发板 精华推荐

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

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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