S08_10_Freescale HCS08单片机ADC编程应用课件

上传人:我*** 文档编号:144962814 上传时间:2020-09-14 格式:PPT 页数:40 大小:1.23MB
返回 下载 相关 举报
S08_10_Freescale HCS08单片机ADC编程应用课件_第1页
第1页 / 共40页
S08_10_Freescale HCS08单片机ADC编程应用课件_第2页
第2页 / 共40页
S08_10_Freescale HCS08单片机ADC编程应用课件_第3页
第3页 / 共40页
S08_10_Freescale HCS08单片机ADC编程应用课件_第4页
第4页 / 共40页
S08_10_Freescale HCS08单片机ADC编程应用课件_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《S08_10_Freescale HCS08单片机ADC编程应用课件》由会员分享,可在线阅读,更多相关《S08_10_Freescale HCS08单片机ADC编程应用课件(40页珍藏版)》请在金锄头文库上搜索。

1、Freescale 单片机原理及应用,Freescale HCS08单片机ADC编程应用,Slide 1,Slide 1,Freescale HCS08单片机ADC编程应用,Contents and Objectives: 理解HCS08的ADC模块原理 ADC如何启动 如何判断ADC转换结束 查询方式 中断方式 学会ADC模块设计 ADC模块寄存器功能 查询方式程序 中断方式程序 进一步认识“对MCU外部管脚/内部模块的控制正是通过Regs的控制来实现”,S08系列MCU内部的模数转换器ADC(Analog-to- Digital Converter)是一个逐次逼近型10位ADC,它集 成在

2、MCU内部,支持28个独立的模拟输入(AD0-AD27)。 MC9S08AW60系列的MCU仅使用了其中的18个输入通 道(AD0-AD15,AD26和AD27),这些输入通道通过 ADCH位进行选择,有些输入和I/O管脚复用。,Slide 2,8.1 概述,外部信号管脚 ADC模块支持高达28个独立的模拟输 入,它还有4个电源/参考/地连接管脚 模拟通道输入(ADx) ADC模块支持高达28个独立的模拟 输入。转换器的模拟输入通过ADCH 通道选择位选定。,Slide 3,8.1 概述,外部信号管脚 ADC模块支持高达28个独立的模拟输 入,它还有4个电源/参考/地连接管脚 模拟供电电源(V

3、DDAD) ADC模块使用VDDAD管脚供电, 只需要把VDDAD管脚连接到 VDD管脚,建议在VDDAD管脚 连接退耦电容。在有些封装中, VDDAD管脚内部连接到VDD。,Slide 4,8.1 概述,外部信号管脚 ADC模块支持高达28个独立的模拟输 入,它还有4个电源/参考/地连接管脚 模拟地(VSSAD) ADC模块使用VSSAD管脚接地,只 需要把VSSAD管脚连接到VSS管脚。 在有些封装中,VSSAD管脚内部连 接到VSS 。,Slide 5,8.1 概述,外部信号管脚 ADC模块支持高达28个独立的模拟输 入,它还有4个电源/参考/地连接管脚 高参考电压(VREFH) VRE

4、FH管脚是ADC模块的高参考电压 输入管脚,VREFH管脚可以被连接到 VDDAD管脚,也可以连接到一个外部 参考电压源,要求外部参考电压源不 能超过VDDAD,不能低于最小 VDDAD。在有些封装中,VREFH管 脚内部连接到VDDAD 。,Slide 6,8.1 概述,外部信号管脚 ADC模块支持高达28个独立的模拟输 入,它还有4个电源/参考/地连接管脚 低参考电压(VREFL) VREFL管脚是ADC模块的低参考电压 输入管脚,只需要把VREFL管脚连接 到VSSAD管脚。在有些封装中, VREFL管脚内部连接到VSSAD。,Slide 7,8.1 概述,外部信号管脚 ADC模块支持高

5、达28个独立的模拟输 入,它还有4个电源/参考/地连接管脚,Slide 8,8.1 概述,内部结构,Slide 9,8.2 功能描述,ADC管脚允许 3个8位管脚控制寄存器APCTL1、APCTL2、APCTL3(Pin Control Registers)用于禁止被用作模拟输入的I/O管脚的端口控制。 当ADPCx=0时,允许相应管脚的I/O控制,即管脚不作为ADC通道; 当ADPCx=1时,禁止相应管脚的I/O控制,即管脚作为ADC通道; 。,Slide 10,8.2 功能描述,ADC通道选择(28个通道),Slide 11,8.2 功能描述,ADC时钟选择和分频控制 总线时钟和ICGER

6、CLK时钟可作为ADC模块时钟 ADC时钟具有频率范围,Slide 12,8.2 功能描述,ADC时钟选择和分频控制,Slide 13,8.2 功能描述,ADC时钟选择和分频控制 可以选用四种时钟源中的一种来作为ADC模块的时钟。然后再把这个时钟源分频后产生转换器的输入时钟ADCK。四种时钟源的选择通过ADICLK位的设定来完成。分频系数通过ADIV位被设成1、2、4或8。,Slide 14,8.2 功能描述,ADC时钟选择和分频控制 无论选定哪一个时钟源,其频率必须处在ADCK的许可频率范围之内: ADLPC = 0 时,0.4MHz fADCK 4MHz ADLPC = 1 时,0.4MH

7、z fADCK 8MHz,Slide 15,8.2 功能描述,ADC时钟选择和分频控制 总转换时间依赖于采样时间(由ADLSMP决定)、MCU总线频率、转换模式(8位或10位)和转换时钟频率(fADCK)。,Slide 16,8.2 功能描述,ADC时钟选择和分频控制 总转换时间依赖于采样时间(由ADLSMP决定)、MCU总线频率、转换模式(8位或10位)和转换时钟频率(fADCK)。,Slide 17,8.2 功能描述,转换控制 既可以按照10位模式转换,也可以按照8位模式转换,这取决于MODE位的设定。既可以采用软件启动转换,也可以采用硬件启动转换。另外,ADC模块也能配置成为低功耗操作、

8、长采样时间、连续转换以及采样值与软件设定值自动比较功能。 启动AD转换 若选用软件触发,那么写ADC1SC1(ADCH位不全为1)后将启动AD转换 若选用硬件触发,那么在一个硬件触发(ADHWT)事件之后将启动AD转换 若允许连续转换方式,那么转换结果传送到结果数据寄存器之后将启动下一次AD转换,Slide 18,8.2 功能描述,转换控制 软件触发和硬件触发,Slide 19,8.2 功能描述,转换控制 单次转换和连续转换,Slide 20,8.2 功能描述,转换控制 转换结束 当转换结果被传送到数据结果寄存器ADC1RH和ADC1RL时,一次转换结束。转换结束通过设置COCO位为1来指示。

9、如果AIEN位为1,在COCO位为1时还可以产生一次中断。,Slide 21,8.2 功能描述,转换控制 转换结束 当转换结果被传送到数据结果寄存器ADC1RH和ADC1RL时,一次转换结束。转换结束通过设置COCO位为1来指示。如果AIEN位为1,在COCO位为1时还可以产生一次中断。,Slide 22,8.2 功能描述,其余功能 自动比较功能 自动比较功能用于检测一个上门限电压或下门限电压。在输入信号被采样并转换之后,转换结果和二进制补码值ADC1CVH:ADC1VL相加,若选上门限比较(ACFGT=1),那么当结果大于或等于比较值时,COCO位变为1;若选用下门限比较(ACFGT=0),

10、那么当结果小于比较值时,COCO位变为1。和二进制补码比较值相加的结果值被传送到ADC1RH和ADC1RL中。,Slide 23,8.2 功能描述,管脚控制寄存器(APCTLx) ADPCx=0时,允许相应管脚的I/O控制;当ADPCx=1时,禁止相应管脚的I/O控制。 建议作为AD功能的管脚都禁止其IO控制。,Slide 24,8.3 内部寄存器,状态和控制寄存器1(ADC1SC1),Slide 25,8.3 内部寄存器,状态和控制寄存器1(ADC1SC1),Slide 26,8.3 内部寄存器,状态和控制寄存器2(ADC1SC2),Slide 27,8.3 内部寄存器,配置寄存器(ADC1

11、CFG),Slide 28,8.3 内部寄存器,配置寄存器(ADC1CFG),Slide 29,8.3 内部寄存器,结果数据寄存器(ADC1RH, ADC1RL ) ADC1RH包括10位转换结果的高2位。当配置为8位转换方式时,ADR8和ADR9等于0。 ADC1RL包括10位转换结果的低8位或者8位转换的所有8位结果。,Slide 30,8.3 内部寄存器,比较值寄存器(ADC1CVH, ADC1CVL ) ADC1CVH包括10位比较值的高2位。ADC1CVL包含10位比较值的低8位或者8位比较值的所有位。 如果允许比较功能,这两位用来和接下来的10位转换结果或8位结果的低8位进行比较。

12、,Slide 31,8.3 内部寄存器,初始化ADC通道顺序: 在ADC模块能进行采样、转换之前,必须对它进行一序列初始化操作。典型初始化过程如下: 更新配置寄存器ADCCFG以选定输入时钟源和分频因子来产生内部时钟ADCK,此寄存器还用于选定采样时间和低功耗配置。 更新状态和控制寄存器2(ADSC2)以选定启动方式是硬件启动还是软件启动,是否允许比较功能等。 更新状态和控制寄存器1(ADSC1)以选定是采用连续转换还是单次转换,是否允许转换结束中断等。此时也选定对哪一个通道上的电压进行转换。,Slide 32,8.4 ADC应用举例,ADC模块配置如下:10位单次转换、低功耗、对通道1采用长

13、采样时间、ADCK时钟由总线时钟除以1得来,软件启动、禁止比较功能、允许ADC中断 。写出ADC初始化子程序ADC_Init。 经过分析,知ADC寄存器取值如表9-9所示:,Slide 33,8.4 ADC应用举例,ADC模块配置如下:10位单次转换、低功耗、对通道1采用长采样时间、ADCK时钟由总线时钟除以1得来,软件启动、禁止比较功能、允许ADC中断 。写出ADC初始化子程序ADC_Init。,Slide 34,8.4 ADC应用举例,ADC_Init:; ADC模块初始化 MOV#$98, ADC1CFG; 低功耗长采样,10位模式,ADC时钟总线时钟/1 MOV#$00, ADC1SC

14、2 ; 软件启动ADC,禁止比较功能 MOV#$41, ADC1SC1 ; 允许ADC中断,对ADC1通道启动单次转换 CLI; 开总中断 RTS,ADC模块配置如下:10位单次转换、低功耗、对通道1采用长采样时间、ADCK时钟由总线时钟除以1得来,软件启动、禁止比较功能、允许ADC中断 。写出ADC初始化子程序ADC_Init。 ADC_Init之后,一旦对ADC1通道(即PTB1管脚)电压进行采样、AD转换之后,如何判断ADC转换结束: 软件延时转换时间 查询COCO标志位状态 通过MCU的中断机制 一次转换结束后,如何启动下一次AD转换 因为采用单次软件启动方式,所以通过写ADC1SC1

15、来启动下一次转换 若采用连续转换方式,该如何修改初始化代码?如何启动下一次转换?如何读取转换结果?,Slide 35,8.4 ADC应用举例,ADC_Init:; ADC模块初始化 MOV#$98, ADC1CFG; 低功耗长采样,10位模式,ADC时钟总线时钟/1 MOV#$00, ADC1SC2 ; 软件启动ADC,禁止比较功能 MOV#$41, ADC1SC1 ; 允许ADC中断,对ADC1通道启动单次转换 CLI; 开总中断 RTS,Slide 36,8.4 ADC应用举例,ADC的中断向量表首地址为$FFD0,读取ADC1通道10位电压值,保存到$70- $71单元的完整程序例子:,

16、Slide 37,8.4 ADC应用举例,org$0070 ADC_RDS.B2; 保存ADC结果 org$1860 ADC_Init: ; ADC模块初始化 RTS ADC_IRQ: LDA ADC1RH; 读结果高位 STA ADC_R ; 保存 LDA ADC1RL; 读结果低位,同时清零COCO STA ADC_R+1 ; 保存 MOV #$41, ADC1SC1 ; 启动ADC1通道下一次单次转换 RTI; 中断返回 Main:JSR ADC_Init ; ADC模块初始化 BRA $ ; 等待按键按下 org$FFD0 ; ADC中断矢量地址 dc.wADC_IRQ org$FFFE ; 复位矢量地址 dc.wMain,注:一定要先读高位再读低位,用ADC0通道采样分压电阻电压,用8位LED实时显示结果,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号