找回密码
 立即注册

使用微信账号登录

只需一步,快速开始

查看: 4419|回复: 5

[TI] CC2541蓝牙学习——ADC

[复制链接]

暂无签到数据

发表于 2019-5-31 15:03:17 | 显示全部楼层 |阅读模式
CC2541的ADC支持多达14位的模拟数字转换与高达12位的有效位数。它包括一个模拟多路转换器,具有多达8个各自可独立配置的通道,一个参考电压发生器。转换结果通过DMA写入存储器。还具有若干运行模式。
ADC主要特性如下:
  • 可选的抽取率,设置了7~12位的分辨率;
  • 8个独立输入通道,可接受单端或差分信号;
  • 参考电压可选为内部,外部单端,外部差分,或AVDD5;
  • 产生中断请求;
  • 转换结束时的DMA触发;
  • 温度传感器输入;
  • 电池测量功能。
  • P0引脚上的信号可以作为ADC输入来使用。在下面,这些引脚叫做AIN0—AIN7引脚,输入脚AIN0—AIN7与ADC连接。
    输入脚可配置成单端或差动输入。如选择差动输入,包含成对输入AIN0-AIN1,AIN2-AIN3,AIN4-AIN5和AIN6-AIN7;注意这些引脚既不能加载负电压,也不能加载大于VDD的电压。
    除了输入脚AIN0-AIN7外,片上的温度传感器也可以用来作为ADC温度测量的输入。如要实现这个功能,需设置寄存器TR0.ADCTM和ATEST.ATESTCTRL。
    单端输入AIN0至AIN7可代表通道号0至7,通道号8至11分别代表差动输入AIN0-AIN1,AIN2-AIN3,AIN4-AIN5,AIN6-AIN7;通道12表示GND,通道13表示温度传感器,通道15表示AVDD5/3。这些值在ADCCON2.SCH和ADCCON3.SCH中设置。


  • 我们看到ADCCON2和ADCCON3这两个寄存器的定义基本相同,但是用法不同,ADCCON2用于ADC序列转换的配置,而ADCCON3则用于单个ADC通道的配置。所谓ADC序列就是多个ADC通道按照次序分别转换。注意:不是同时转换的,从图1我们也可以看出,ADC的模拟输入接一个选择器,同一时刻只能选择一个通道接入进行ADC转换。
    如果选择片上的温度传感器作为ADC温度测量的输入,则需要通过配置寄存器TR0和ATEST来获得片上温度,不过这个温度测量误差很大,我们一般不用,这里也就不给出例程了。
    启用片内温度采集配置寄存器:
    1 TR0 |= 0x01;2 ATEST |= 0x01;

  • 1、ADC序列转换
    ADC序列转换无需CPU的参与,ADC能够完成一个序列的转换,并通过DMA把结果写入内存。
    寄存器APCFG影响转换序列,来自I/O引脚的8位模拟输入不一定是程序设置的模拟输入。如某一通道是序列的一部分,但在APCFG中相应模拟输入是禁止的,那此通道将被跳过。当使用差动输入时,两个输入脚在APCFG寄存器中必须被设置成模拟输入。
    ADCCON2.SCH用来定义ADC输入的转换序列。如ADCCON2.SCH被设为小于8,转换序列包含一个通道(从0到ADCCON2.SCH中设置的通道号),当ADCCON2.SCH值设为8至12时,序列是差动输入,从通道8至程序设置的通道号;当大于12时,序列包含只选择的通道。

    2、单个ADC转换
    除了序列转换外,ADC可以通过编程执行单个转换。通过写入ADCCON3寄存器可以触发一个转换,转换立即启动,除非一个转换序列正在进行中,这种情况下,当序列完成后,马上执行单个转换。
    3、寄存器ADCCON1
    ADC的数字转换结果可以通过寄存器ADCCON1获得,寄存器ADCCON1的定义如下图所示。
    • ADCCON1.EOC:转换结束状态位,当转换结束时设高电平,当读取ADCH时低电平。
    • ADCCON1.ST位用来启动序列转换的,当这位设高电平、ADCCON1.STSEL是11且当前无转换运行时序列启动开始。当序列转换结束时,这位自动清除为低电平。
    • ADCCON1.STSEL位用来选择哪个事件将启动一个新的序列转换。此项选择有:外部引脚P2.0上升沿事件,之前序列的结束事件,定时器通道0比较事件,或ADCCON1.ST设1事件。

    4、ADC转换结果
    数字转换结果以2进制补码形式表示的,最高位是符号位。
    对于单端输入配置,由于ADC输入不能接负电压,转换结果总是正的当输入信号等于参考电压VREF时达到最大转换结果。
    对于差分输入配置,ADC输入电压为两个引脚的电压之差,两脚的输入信号不同,结果可能是负的;当采样率为512,模拟输入Vconv=VREF时,12MSB的数字转换结果为2047,当模拟输入等于-VREF时,转换结果为-2048。
    通过读ADCCON2.SCH位,知道正在转换的是哪个通道,在序列转换中,ADCL和ADCH中的结果是前一个通道ADC转换的值。如转换序列已结束,ADCCON2.SCH将有一个大于最后通道数一个以上的值,但如最后写入ADCCON2.SCH中的通道数是12或更大,读回的是相同的值。

    5、ADC参考电压
    模数转换的参考电压可选择于内部产生电压,AVDD5脚电压,应用于AIN7输入脚的外部电压,或应用于AIN6-AIN7输入的差动电压。内部参考电压对于CC2541来说是1.25V,比较小,能转换的最大模拟电压最大也只能是1.25V,AVDD5脚电压一般为3.3V,精度也不是很高。转换结果的准确度依靠于参考电压的稳定性和噪声度,所以对于要求较高的ADC转换建议从AIN7输入脚接入高精度的参考电压。

    6、ADC转换时间
    ADC只能运行于32MHZ XOSC。执行一个转换的时间依靠于被选择的采样率,一般上,转换时间由以下公式所得:
    Tconv=(decimation rate+16)*0.25us.
    可见分辨率越高,转换时间越长。
  • 7、ADC中断
    只有单通道ADC转换才有ADC中断,序列ADC转换没有ADC中断。
    The ADC generates an interrupt when a single conversion triggered by writing to ADCCON3 has completed.No interrupt is generated when a conversion from the sequence is completed.

    8、ADC DMA触发
    每完成一个序列转换,ADC将产生一个DMA触发。单独转换完成不产生DMA触发。
    在ADCCON2.SCH中设置8个通道,每个通道都有一个DMA触发。当通道转换中准备好一个采样时,将激活一个DMA触发。DMA触发命名为ADC_CHsd,s是单端通道,d是差动通道。
    另外,当ADC序列转换通道中准备好一个新数据时,一个DMA触发(ADC_CHALL)将激活。

    单个ADC转换读取ADC值的程序如下:
    [url=][/url]
    1 /****************************************************************************** 2 *函 数 名:InitADC 3 *功    能:ADC初始化 4 *入口参数:参考电压 reference、转换通道 channel、分辨率resolution 5 *出口参数:ADC转换结果 6 ******************************************************************************/ 7 uint Read_advalue(uchar reference, uchar channel, uchar  resolution) 8 { 9   uint value; 10   uchar tmpADCCON3 = ADCCON3;11   12   APCFG |= 1 << channel ; //设置ADC输入通道,模拟I/O使能13   14   ADCCON3  = (reference | resolution | channel);15   ADCIF = 0;                         //16 17   while(!ADCIF);               //等待 AD 转换完成









本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册  

×
楼主热帖
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
连续签到天数:1天
签到总天数:2天
签到总奖励:11金币
发表于 2019-9-4 09:45:28 | 显示全部楼层

我看帖总是不回贴。现在后悔了。
我要增加积分!!!!
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:2天
签到总天数:11天
签到总奖励:99金币
发表于 2019-9-10 17:34:57 | 显示全部楼层
T&#244;i mu&#7889;n t&#259;ng &#273;i&#7875;m c&#7911;a t&#244;i! ! ! !
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:1天
签到总奖励:4金币
发表于 2020-1-8 01:15:26 | 显示全部楼层
很有用 谢谢
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:1天
签到总奖励:4金币
发表于 2020-1-8 21:52:53 | 显示全部楼层
积分积分积分ss
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:3天
签到总天数:244天
签到总奖励:3382金币
发表于 2022-10-17 19:23:35 | 显示全部楼层
学习高手路径
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

小黑屋|手机版|我爱蓝牙网 - 52Bluetooth

GMT+8, 2024-4-29 03:59 , Processed in 0.497008 second(s), 19 queries , Gzip On, MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表