打印

HC32L196使用ADC顺序扫描采样,采样值不更新

[复制链接]
4920|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
IchBinMarcel|  楼主 | 2021-8-10 16:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ADC, HC, pi, IO, gp, GPIO
我使用HC32L196上的PB13和PB14  进行AD采样,模式为顺序采样模式,但是发现采样值不更新,一直都是刚上电的值      
      下载视频         
代码如下:
///< 开启ADC/BGR GPIO外设时钟
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);

        Gpio_SetAnalogMode(GpioPortB, GpioPin13);        //PB13  TEMP
        Gpio_SetAnalogMode(GpioPortB, GpioPin14);        //PB14  HUMI
       
       
        stc_adc_cfg_t              stcAdcCfg;

    DDL_ZERO_STRUCT(stcAdcCfg);
    Sysctrl_SetPeripheralGate(SysctrlPeripheralAdcBgr, TRUE);
    Bgr_BgrEnable();        ///< 开启BGR
    ///< ADC 初始化配置
    stcAdcCfg.enAdcMode         = AdcScanMode;              ///<采样模式-扫描
    stcAdcCfg.enAdcClkDiv       = AdcMskClkDiv1;            ///<采样分频-1
    stcAdcCfg.enAdcSampCycleSel = AdcMskSampCycle8Clk;      ///<采样周期数-8
    stcAdcCfg.enAdcRefVolSel    = AdcMskRefVolSelAVDD;      ///<参考电压选择-VCC
    stcAdcCfg.enAdcOpBuf        = AdcMskBufDisable;         ///<OP BUF配置-关
    stcAdcCfg.enInRef           = AdcMskInRefDisable;       ///<内部参考电压使能-关
    stcAdcCfg.enAdcAlign        = AdcAlignRight;            ///<转换结果对齐方式-右
    Adc_Init(&stcAdcCfg);



stc_adc_sqr_cfg_t          stcAdcSqrCfg;

    DDL_ZERO_STRUCT(stcAdcSqrCfg);

    ///< 顺序扫描模式功能及通道配置
    ///< 注意:扫描模式下,当配置转换次数为n时,转换通道的配置范围必须为[SQRCH(0)MUX,SQRCH(n-1)MUX]
    stcAdcSqrCfg.bSqrDmaTrig = FALSE;
    stcAdcSqrCfg.enResultAcc = AdcResultAccEnable;
    stcAdcSqrCfg.u8SqrCnt    = 2;
    Adc_SqrModeCfg(&stcAdcSqrCfg);

    Adc_CfgSqrChannel(AdcSQRCH0MUX, AdcExInputCH20);  //PB13
    Adc_CfgSqrChannel(AdcSQRCH1MUX, AdcExInputCH21);  //PB14

    ///< ADC 中断使能
//    Adc_EnableIrq();
//    EnableNvic(ADC_DAC_IRQn, IrqLevel3, TRUE);

    ///< 启动顺序扫描采样
    Adc_SQR_Start();


然后用了一个函数来读取AD采样值
void get_ADC_Value(void)
{
    if(TRUE == Adc_GetIrqStatus(AdcMskIrqSqr))
    {              
        u32AdcRestult0   = Adc_GetSqrResult(AdcSQRCH0MUX);  //获取顺序扫描通道0  TEMP
        u32AdcRestult1   = Adc_GetSqrResult(AdcSQRCH1MUX);  //获取顺序扫描通道1  HUMI     
        Adc_ClrIrqStatus(AdcMskIrqSqr);
    }

}


有没有大神知道我哪里出错了?
谢谢!!

使用特权

评论回复

相关帖子

沙发
IchBinMarcel|  楼主 | 2021-8-10 16:52 | 只看该作者
很尴尬,看了芯片用户手册,原来是采样启动函数只调用了一次,闹笑话了。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

8

帖子

0

粉丝