` 本帖最后由 kevinrliu 于 2015-10-29 13:34 编辑
本实验将P01作为模数转换接口,使用两个电阻分压来测量电池的电压,如下图所示:
开发板系列教程:http://pan.baidu.com/s/1bnBJsMr
手环DIY开源学习教程:http://pan.baidu.com/s/1eQlUGiI 阅读软件:http://pan.baidu.com/s/1o6ELGCE 淘宝小店:shop115904315.taobao.com
第二节 ADC寄存器
2.1 GPADC介绍 DA14580集成一个高速超低功耗的10位通用模数转换器。可以工作于单端模式也可以工作于差分模式。ADC模块有一个1.2V的电压校准器,作为满量程的参考电压。 该ADC模块是10位动态模数转换,转换时间为65ns;最大的采样率为3.3MHz;超低功耗(在100KHz的采样速率下典型供电电流为5uA);有单端与差分两个输入比例;有4个单端或者2个差分输入通道;电池检测功能;斩波器功能;偏移和零刻度调整;公共端模式输入电平调整。
2.2 寄存器介绍
2.2.1 ADC控制寄存器
15位:使LDO输出为0V; 14位:打开LDO; 13位:通过相反的ADC符号获取两个采样值来取消内部的偏置电压,强烈建议用于DC的测量; 12位:在中间刻度采样。 11位:ADC模式选择,’0’为差分模式,’1’为单端模式; 10位:’0’表示默认模式,’1’表示输入和输出的相反信号来取消内部的偏置与低频; 9:6位:ADC输入选择,这个设置必须在GP_ADC_START位使能之前。如果GP_ADC_SE=1即为单端模式,则0000表示选择P00引脚,其余见上图,没有在上图中出现的组合值时被忽略的。如果GP_ADC_SE=0即为差分模式,则0000表示P00与p01,其他任意组合表示P02与P03。 5位:ADC中断控制,’0’关闭ADC中断,’1’使能ADC中断; 4位:ADC中断标志位,’1’表示模数转换准备好并且已经产生一个中断,在写任何值到GP_ADC_CLEAR_INT_REG之前必须被清除; 3位:ADC时钟选择,’0’表示使用内部高速ADC时钟,’1’表示使用数字时钟; 2位:保留不使用,保持0; 1位:’0’表示ADC转换准备好,’1’表示开始一次转换,在转换之后该位被清零,产生ADC中断; 0位:’0’表示关闭ADC并处于复位状态,’1’表示使能ADC并开始采样。
2.2.2 ADC第二控制寄存器15:4位:保留不使用; 3位:对LDO增加20uA的常量负载电流使ADC参考电压的纹波最小; 2位:使能LDO的动态负载电流使ADC参考电压的纹波最小; 1位:输入电压值,’0’表示输入电压最大1.2V,’1’表示输入电压通过3倍衰减最大3.6V; 0位:使能几个信号的延时功能。 2.2.3 ADC正偏移寄存器15:10位:保留不使用; 9:0位:正值偏移调整。 2.2.4 ADC负偏移寄存器15:10位:保留不使用; 9:0位:负值偏移调整。 2.2.5 ADC清除中断寄存器 15:0位:写任何值到该寄存器,清除ADC中断,读取则返回0。 2.2.6 ADC结果寄存器15:10位:保留不使用; 9:0位:ADC转换结果。 2.2.7 ADC延时寄存器15:8位:保留不使用; 7:0位:定义LDO使能的延时值。 2.2.8 ADC第二延时寄存器15:8位:定义ADC开始的延时值,默认为17us; 7:0位:定义ADC使能的延时值,默认为16us。 2.3 寄存器配置讲解#define GP_ADC_CTRL_REG (* ( volatile uint16*)0x50001500) #define GP_ADC_CTRL2_REG (* ( volatile uint16*)0x50001502) #define GP_ADC_OFFP_REG (* ( volatile uint16*)0x50001504) #define GP_ADC_OFFN_REG (* ( volatile uint16*)0x50001506) #define GP_ADC_CLEAR_INT_REG (* ( volatile uint16*)0x50001508) #define GP_ADC_RESULT_REG (* ( volatile uint16*)0x5000150A) #define GP_ADC_DELAY_REG (* ( volatile uint16*)0x5000150C) #define GP_ADC_DELAY2_REG (* ( volatile uint16*)0x5000150E) ADC初始化寄存器配置: 使能LDO,单端模式,默认符号,则GP_ADC_CTRL_REG =0x4800; 使能ADC,则GP_ADC_CTRL_REG =0x4801; 增加常量电流减少纹波,输入最大电压为3.6V,允许信号延时,则GP_ADC_CTRL2_REG =0x4800; 选择P01作为输入引脚,则GP_ADC_CTRL_REG =0x4841; 读取转换结果,先启动转换GP_ADC_CTRL_REG |= 0x0002;等待转换完成while(GP_ADC_CTRL_REG&0x0002);清除中断标志GP_ADC_CLEAR_INT_REG=0;读取结果adc_result =GP_ADC_RESULT_REG;
第三节 ADC实验
实验需要使用的模块有:手环,Jlink调试工具,一根手环下载调试线。 将JLINK通过下载调试线连接到手环的USB调试接口,JLINK插在有拨码开关的一端,注意丝印标注一一对应,将JLINK插上电脑的USB口,如下图所示: 打开ADC实验的Keil工程Simple_ADC.uvproj,位于目录:.. 4_实战教程1_裸机篇3_模数转换实验模数转换实验,如下图所示: 使用手环调试下载线连接好Jlink,编译,点击DEBUG,然后点击全速运行,根据电池电量,LED亮的数量随着变化,如下图所示:
开发板系列教程:http://pan.baidu.com/s/1bnBJsMr
手环DIY开源学习教程:http://pan.baidu.com/s/1eQlUGiI 阅读软件:http://pan.baidu.com/s/1o6ELGCE 淘宝小店:shop115904315.taobao.com
`
|