发新帖本帖赏金 1.00元(功能说明)我要提问
返回列表
打印

HC32F460 KEUA 和JETA的ADC问题

[复制链接]
23510|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
HelloOK123|  楼主 | 2021-12-14 10:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,之前购买了几块HC32F460的开发板。其中也包括JETA型号的。
最近有个KEUA的型号需要调试,调试ADC时,发现数据不更新(同样的程序在JETA等开发板上都正常)。

//----以下是ADC的配置-----------
// ADC初始化
void AdcConfig(void)
{
    AdcClockConfig();
    AdcInitConfig();
    AdcChannelConfig();
}


// ADC时钟直接使用 ClkPeriSrcPclk
static void AdcClockConfig(void)
{
    /* Set bus clock division, depends on the system clock frequency. */
//    m_stcSysclkCfg.enPclk2Div = ClkSysclkDiv64;
//    m_stcSysclkCfg.enPclk4Div = ClkSysclkDiv16;


//    CLK_SysClkConfig(&m_stcSysclkCfg);
    CLK_SetPeriClkSource(ClkPeriSrcPclk);


}


void AdcInitConfig(void)
{
    stc_adc_init_t stcAdcInit;


    MEM_ZERO_STRUCT(stcAdcInit);


   stcAdcInit.enResolution = AdcResolution_12Bit;
    stcAdcInit.enDataAlign  = AdcDataAlign_Right;
    stcAdcInit.enAutoClear  = AdcClren_Disable;
    stcAdcInit.enScanMode   = AdcMode_SAOnce;; //单次采样
    /* 1. Enable ADC1. */
    PWC_Fcg3PeriphClockCmd(PWC_FCG3_PERIPH_ADC1, Enable);
    /* 2. Initialize ADC1. */
    ADC_Init(M4_ADC1, &stcAdcInit);
}




#define ADC1_SA_CHANNEL_COUNT       (3u)
void AdcChannelConfig(void)
{
    stc_adc_ch_cfg_t stcChCfg;
        uint8_t au8Adc1SaSampTime[ADC1_SA_CHANNEL_COUNT] = { 0x60,0x80,0x80};
    MEM_ZERO_STRUCT(stcChCfg);


    stcChCfg.u32Channel  = (ADC1_CH0 | ADC1_CH1| ADC1_CH2);
    stcChCfg.u8Sequence  = ADC_SEQ_A;
    stcChCfg.pu8SampTime = au8Adc1SaSampTime;
    /* 1. Set the ADC pin to analog mode. */
    AdcSetChannelPinMode(M4_ADC1, (ADC1_CH0 | ADC1_CH1| ADC1_CH2), Pin_Mode_Ana);  
    /* 2. Add ADC channel. */
    ADC_AddAdcChannel(M4_ADC1, &stcChCfg);

}

//---以下是测试的main程序----
int32_t main(void)
{
        UseXTAL();//使用外部16M晶振
        //ADC初始化
        AdcConfig();
        ADC_StartConvert(M4_ADC1);// ADC软起动
        while(1)
        {
                Ddl_Delay1ms(1000);
                ADC_GetAllData(M4_ADC1, m_au16Adc1Value, ADC1_CH_COUNT);//读取ADC结果
                ADC_ClrEocFlag(M4_ADC1, ADC_SEQ_A);
                ADC_StartConvert(M4_ADC1);// ADC软起动--重新启动
        }
}


以上代码,在JETA开发板中正常,但是在KEUA板子中,调试发现数值没有变化,即DR寄存器数值的值都没有变化
ADC_GetAllData 会调用 ADC_ReadAllData 读取ADCx->DR
static void ADC_ReadAllData(const M4_ADC_TypeDef *ADCx, uint16_t *pu16AdcData, uint8_t u8Length)
{
    uint8_t i;
    __IO const uint16_t *pu16DataReg = &(ADCx->DR0);

    for (i = 0u; i < u8Length; i++)
    {
        pu16AdcData = pu16DataReg;
    }
}

电路应该是没有问题的,万用表测量的相关ADC的IO管脚,都是有电平的,且电平也是在变化.
不知是哪个环节出了问题?
谢谢







使用特权

评论回复

相关帖子

沙发
734774645| | 2021-12-14 13:00 | 只看该作者
是不是没有接参考电压的引脚

使用特权

评论回复
板凳
734774645| | 2021-12-14 13:00 | 只看该作者
看看跟ADC相关的引脚是不是接了对应的电压

使用特权

评论回复

打赏榜单

HelloOK123 打赏了 1.00 元 2021-12-25

地板
HelloOK123|  楼主 | 2021-12-14 13:28 | 只看该作者
734774645 发表于 2021-12-14 13:00
看看跟ADC相关的引脚是不是接了对应的电压

谢谢,我看了,这个是60Pin的管脚,没有参考电压

使用特权

评论回复
5
martinhu| | 2021-12-15 10:29 | 只看该作者
ADC已经完成初始化了吗?
60PIN的型号,AVCC和AVSS就是参考电压和地,看看是否接的正确。应该和Vcc一样的电压

使用特权

评论回复
6
HelloOK123|  楼主 | 2021-12-15 15:50 | 只看该作者
martinhu 发表于 2021-12-15 10:29
ADC已经完成初始化了吗?
60PIN的型号,AVCC和AVSS就是参考电压和地,看看是否接的正确。应该和Vcc一样的电 ...

您好,ADC初始化了的。 现在问题的现象是: 同样的程序再JETA封装中可以用,换到了KETA后不正常。 电路我查看了,应该没有问题

使用特权

评论回复
7
珑恩| | 2021-12-15 16:00 | 只看该作者
主营电池连接器,刀片连接器等电子元器件,有需要可以联系13612710697

使用特权

评论回复
8
734774645| | 2022-1-21 13:09 | 只看该作者
感谢楼主打赏。

使用特权

评论回复
发新帖 本帖赏金 1.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

10

帖子

0

粉丝