技术文档

avr单片机原理 pdf 小5带你飞(8)—AVR(ATmega 328P)单片机片内ADC的原理和使用(1)

小编 2024-11-24 技术文档 23 0

小5带你飞(8)—AVR(ATmega 328P)单片机片内ADC的原理和使用(1)

ATmega328p内部集成了一个10位的逐次逼近的A/D转换器。该转换器与一个8通道的模拟多路复用器连接。它能够对来自端口A的8路单端输入电压进行采样。

ADC转换模块的原理图

看一下它的基本特性:

10位分辨率

0.5 LSB积分非线性

±2 LSB绝对精度

13 -~260µs转换时间

最高采样速率76.9 kSPS/s

6路可选的单端输入通道

2路额外多路复用单端输入通道(TQFP 、QFN/MLF)

温度传感器输入通道

ADC读取的结果可设置为左端对其

0~Vcc ADC输入电压范围

可选择1.1v ADC参考电压

自由连续转换模式和单次转换模式

在ADC转换完成时中断

睡眠模式噪音消除

ADC的供电和参考电压:

ADC由独立的专用的模拟电压引脚AVCC供电,AVCC和VCC的电压差别不能大于±0.3V。

ADC的参考电源可以是芯片内部的1.1v的参考电源,也可以是AVCC,也可以采用外部参考电源,使用外部参考电源的时候,外部参考电源可由引脚AREF接入,使用内部参考电压源的时候,可以通过在AREF引脚外部并接一个电容来提高ADC的抗噪性能。这个电容一般可为0.1uF

与ADC有关的寄存器:

ADMUX:多路复用选择寄存器

bit6、bit7 :ADC参考电压选择。如果在转换过程中改变了设置,则只有等待当前转换结束后才起作用。如果在 AREF引脚上施加了外部参考电压,则内部参考电压将不能被选择。这个参考电压的选择见下图:

还是解释一下:

00 :AREF,内部基准源关闭

01 :AVCC,AREF外接滤波电容

10 : 保留

11 :1.1v内部基准电压源,AREF外接滤波电容

bit5:转换结果对齐位。置位左对齐,清位右对齐

bit4:一个保留位

bit3~bit0:模拟通道选择位

就是选择连接到哪个通道上,这个没啥说的。看表就好了,如下:

2. ADCSRA:ADC控制和状态寄存器A

bit7:ADC使能位。置位则启动ADC功能,清位ADC功能关闭

bit6:ADC开始转换。

在单次转换模式下,该位置位将启动一次ADC转换,在连续转换模式下,该位置位,将启动首次转换

bit5:ADC自动触发使能位。

该位置位,则启动ADC自动触发功能。

bit4:ADC中断标志位

ADC转换结束且数据寄存器被更新后该位置位,如果ADIE及SREG寄存器中的全局中断使能位I被置位,

则ADC转换结束中断服务程序被执行,同时该位被硬件清零,也可以通过软件写1清零。

bit3:ADC中断使能位。如果该位及SREG寄存器中的全局中断使能位I被置位,则ADC转换结束中断将被使能。

bit2~bit0:ADC预分频器的选择。这三位决定ADC输入时钟与CPU时钟之间的分频系数,如下表:

3. ADCL 、 ADCH :ADC数据寄存器

分别是左对齐的和右对齐的数据

ADC转换结束后,转换结果将存在这两个寄存器当中。首先ADMUX寄存器当中的ADLAR和MUXn影响转换结果在寄存器中的存放形式。当ADCL被读取时,ADC数据寄存器在读取ADCH之前不会更新,如果转换结果为左对齐且只需要8位的精度,那么仅需要读取ADCH就可以了,否则需先读取ADCL然后读取ADCH。

4.ADCSRB :ADC控制和状态寄存器B

bit2~bit0:ADC自动触发源的选择

说明一下吧:

000:连续转换模式

001:模拟比较器

010:外部中断请求0

011:定时器/计数器0比较匹配A

100:定时器/计数器0溢出

101: 定时器/计数器0比较匹配B

110:定时器DIDR0数器1溢出

111:定时器/计数器1捕捉事件

5. DIDR0:数字输入禁用寄存器0

说明一下:

bit5~bit0 :当这些位置位,相应的ADC引脚的数字输入缓存区被禁止,相应的PIN寄存器读取的时候都为0,

模拟信号运用于ADC5~ADC0,是不需要这么做的,ADC6和ADC7是没有缓存区的。

下面来看看ADC的基本使用步骤:

ADC输入端口初始化

基准电压的设置,数据对齐方式的设置,通道的选择。(ADMUX寄存器的配置)

AD使能,启动装换,中断的设置(ADCSRA寄存器的设置)

触发源的选择(ADCSRB寄存器的设置)

选择中断号,编写中断服务程序,读取ADC的数据(ADCL 、 ADCH )

好的,关于ADC的寄存器就写这么多了,下一篇我们来写ADC的驱动程序。

更多内容请关注头条号:小5嵌入式

小5带你飞(15)—AVR(ATmega 328P)单片机USART的原理和使用(1)

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

还是先来看涉及到的寄存器:

UDRn – USART I/O 数据寄存器n

这个其实两个寄存器,其实一个是读一个是写。USART 发送数据缓冲寄存器和 USART 接收数据缓冲寄存器共享相同的 I/O 地址,称为USART 数据寄存器或 UDR。将数据写入 UDR 时实际操作的是发送数据缓冲器存器(TXB),读 UDR 时实际返回的是接收数据缓冲寄存器 (RXB) 的内容。

2. UCSRnA – USART 控制和状态寄存器nA

Bit 7 – RXCn: USART 接收结束。接收缓冲器中有未读出的数据时 RXC 置位,否则清零。接收器禁止时,接收缓冲器被刷新,导致 RXC 清零。 RXC 标志可用来产生接收结束中断。

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

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

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

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

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

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

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

3.UCSRnB – USART 控制和状态寄存器nB

Bit 7 – RXCIEn: 接收结束中断使能。置位后使能 RXCn 中断。当 RXCIEn 为 1,全局中断标志位 SREG 置位, UCSRnA 寄存器的 RXCn 亦为 1 时可以产生 USART 接收结束中断。

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

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

Bit 4 – RXENn: 接收使能。置位后将启动 USART 接收器。 RxDn 引脚的通用端口功能被 USART 功能所取代。禁止接收器将刷新接收缓冲器,并使 FEn、 DORn 及 UPEn 标志无效。

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

Bit 2 – UCSZ2n: 字符长度。UCSZ2n与UCSRnC寄存器的UCSZn1:0结合在一起可以设置数据帧所包含的数据位数(字符长度 )。

Bit 1 – RXB8n: 接收数据位 8n。对 9 位串行帧进行操作时, RXB8 是第 9 个数据位。读取 UDRn包含的低位数据之前首先要读取 RXB8n。

Bit 0 – TXB8n: 发送数据位 8n。对 9 位串行帧进行操作时, TXB8 是第 9 个数据位。写 UDRn 之前首先要对它进行写操作。

4.UCSRnC – USART 控制和状态寄存器nC

Bits 7:6 – UMSELn1:0 USART 模式的选择。见下表:

Bits 5:4 – UPMn1:0: 奇偶校验模式。见下表:

Bit 3 – USBSn: 停止位的选择

Bit 2:1 – UCSZn1:0: 字符长度

Bit 0 – UCPOLn: 时钟极性

UBRRnL and UBRRnH – USART 波特率寄存器

Bit 11:0 – UBRR11:0: USART 波特率寄存器。这个 12 位的寄存器包含了 USART 的波特率信息。其中 UBRRH 包含了 USART 波特率高 4 位, UBRRnL 包含了低 8 位。波特率的改变将造成正在进行的数据传输受到破坏。写UBRRnL 将立即更新波特率分频器。

波特率的计算公式:

atnega328p的晶振频率为:16MHz,故看这样一个表,直接查表设定值就好了。

常用振荡器频率的UBRRn设置示例

总结一下串口使用的方法:

初始化。工作模式,帧结构等(UCSRnC)

波特率的设置。(UBRRnL ,UBRRnH)

中断的相关设置。(UCSRnB)

选择终端号,编写中断服务程序。

更多内容请关注头条号:小5嵌入式

相关问答

arm 单片机 avr 、51有什么区别?

简单的说,CPU构架不同,虽然都是8位的,但指令集不同,AVR是用RISC的,哈佛结构的总线;51是用CISC,冯诺衣曼结构的总线。跟AVR比,51是老掉牙的东西,内部资源...简...

单片机 教材,有什么推荐?

参考资料⒈《单片机原理及应用教程》徐煜明韩雁主编电子工业出版社⒉《MCS-51/96系列单片机原理及应用》孙涵芳徐爱卿主编北京航天航空大学出版社...

我在烧录 avr单片机 的时候烧录不了-ZOL问答

单片机配置写入是你对这片芯片下次再写或程序上电启动时的要求,数据校验是你这片芯片写完后是否还要校验一次(这提高了可靠性可要多花时间)9条回答:【推荐答案...

谈谈你对 单片机 的认识?

从大一的时候在大学图书馆看到关于AVR单片机的书籍,到参加竞赛、工作,我和单片机已经打了六七年的交道了吧。其间我都是在做产品的软件开发,与硬件工程师合作...

单片机 和ARM有什么区别?

欢迎大家关注狗哥,学习更多单片机干货1、单片机指单芯片上集成了控制器、存储器以及如定时器、SPI、IIC等外部设备于一体的片上系统,可以用来执行复杂的功能,...

51 单片机 的晶振电路组成?

源晶...1、最普通的模式,也就是外接无源晶振,然后每个晶振的一个脚都接一个20-30pF的电容到地。2、外接振荡源的模式,也就是利用有源晶振,脉冲输出后直接接X...

为什么很多 单片机 的工作电压是5v?

因为大多数芯片都是5V的TTL电平,要做到电平兼容,电平匹配,避免要电平转换操作,所有很多单片机的工作电压都是5V。TTL指的是TTL电平,0~5V之间,小于0.2V输出...因...

c52 单片机 开发板能干啥?

c52单片机开发板能可以作为烧写器(即编程器),将自己写好的程序写入单片机中,但烧写单片机的种类单一,型号也不会太多。2、可以利用开发板上的一些硬件做一些...

单片机 缺货原因?

还是有人捣鬼。有那些人有货源,花钱把货源全买断,然后市场上就会缺货,这时候他们可以再高价出售。因为芯片厂的产量是固定的,不可能一下子填补市场的空缺。这...

Arduino、arm、树莓派、 单片机 四者有什么不同?

首先arm是由软银设计的微处理器内核,既不是单片机也不是开源电子并且不是一种可以看到的实物,是ARM公司授权被封装在ARM系列CPU中的一种逻辑架构内核。手机中...

猜你喜欢