微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > 开源可编程手环学习第七步--模数转换

开源可编程手环学习第七步--模数转换

时间:10-02 整理:3721RD 点击:

第一节       模数转换硬件电路


     本实验将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



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top