408|0

5088

帖子

0

资源

纯净的硅(高级)

CC2640R2F之ADC篇 [复制链接]

现在提供一个自己写的ADC子程序,多人验证过都可以使用。
子程序如下:

#include "AppAdc.h"
#include <inc/hw_types.h>
#include <ti/sysbios/family/arm/m3/Hwi.h>
#include <inc/hw_memmap.h>
#include <driverlib/aux_wuc.h>
#include <driverlib/aux_adc.h>
#include <inc/hw_aux_evctl.h>
#include <inc/hw_adi.h>
#include <inc/hw_adi_4_aux.h>
#include <inc/hw_aux_anaif.h> // Will change name to anaif
uint32_t AdcOneShotRead(uint8_t auxIo,uint8 reg)
{
    uint32_t turnedOnClocks = 0;
    //////////// Config clock/////////////////////
    // Only turn on clocks that are not already enabled. Not thread-safe, obviously.
    turnedOnClocks |= AUXWUCClockStatus(AUX_WUC_ADC_CLOCK) ? 0 : AUX_WUC_ADC_CLOCK;
    turnedOnClocks |= AUXWUCClockStatus(AUX_WUC_ADI_CLOCK) ? 0 : AUX_WUC_ADI_CLOCK;
    turnedOnClocks |= AUXWUCClockStatus(AUX_WUC_ANAIF_CLOCK) ? 0 : AUX_WUC_ANAIF_CLOCK;
    // Enable clocks and wait for ready
    AUXWUCClockEnable(turnedOnClocks);
    while(AUX_WUC_CLOCK_OFF == AUXWUCClockStatus(turnedOnClocks));
    /////// Seclect auxIO  /////////////
    AUXADCSelectInput(auxIo);
    ////////// Enable ///////////
    AUXADCEnableSync(AUXADC_REF_FIXED, AUXADC_SAMPLE_TIME_2P7_US, AUXADC_TRIGGER_MANUAL);
//    delay(10);
    //Scaling disable
    if(reg) AUXADCDisableInputScaling();    //本条没屏蔽,最大的ADC电压为1.49V,适合低电压检测
    AUXADCGenManualTrigger();       // Trigger sample
//    HWREG(AUX_ANAIF_BASE + AUX_ANAIF_O_ADCTRIG) = (1 << AUX_ANAIF_ADCTRIG_START_S);
    uint32_t adcValue = AUXADCReadFifo();
    AUXADCDisable();//Power_Saving
    return adcValue;
}

第一行是自己定义的一个头文件。
函数返回4字节的AD结果。
函数形参auxIo,代表对哪个通道进行采集。

此帖出自无线连接论坛

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

最新文章 更多>>
    关闭
    站长推荐上一条 1/4 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表