打印

求助:ADC双通道同步采样该怎么设置?

[复制链接]
1189|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pltczw666|  楼主 | 2022-5-3 17:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 pltczw666 于 2022-5-3 23:20 编辑

请教各位大侠:ADC双通道同步采样该怎么设置?
以下是我的代码,不知哪里弄错了,请帮忙指导。谢谢。
void adc_config(void)
{
    /* system clocks configuration */
    adc_rcu_config();
    /* GPIO configuration */
    adc_gpio_config();
    /* TIMER configuration */
    adc_timer_config();
    /* DMA configuration */
//    adc_dma_config();

    /* ADC SCAN function enable */
    adc_special_function_config(ADC0, ADC_SCAN_MODE, ENABLE);
    adc_special_function_config(ADC0, ADC_CONTINUOUS_MODE, DISABLE);
    adc_special_function_config(ADC1, ADC_SCAN_MODE, ENABLE);
    adc_special_function_config(ADC1, ADC_CONTINUOUS_MODE, DISABLE);
    /* ADC trigger config */
    adc_external_trigger_source_config(ADC0, ADC_INSERTED_CHANNEL, ADC0_1_2_EXTTRIG_INSERTED_NONE);
    adc_external_trigger_source_config(ADC1, ADC_INSERTED_CHANNEL, ADC0_1_2_EXTTRIG_INSERTED_NONE);
    /* ADC mode config */
    adc_mode_config(ADC_MODE_FREE);
    /* ADC data alignment config */
    adc_data_alignment_config(ADC0, ADC_DATAALIGN_RIGHT);
    adc_data_alignment_config(ADC1, ADC_DATAALIGN_RIGHT);
    /* ADC channel length config */
    adc_channel_length_config(ADC0, ADC_INSERTED_CHANNEL, 1);
    adc_channel_length_config(ADC1, ADC_INSERTED_CHANNEL, 1);

    /* ADC temperature sensor channel config */
    adc_inserted_channel_config(ADC0, 0, ADC_CHANNEL_16, ADC_SAMPLETIME_28POINT5);
    /* ADC internal reference voltage channel config */
    adc_inserted_channel_config(ADC1, 0, ADC_CHANNEL_17, ADC_SAMPLETIME_28POINT5);

    /* ADC trigger config */
    adc_external_trigger_source_config(ADC0, ADC_INSERTED_CHANNEL, ADC0_1_EXTTRIG_INSERTED_T1_CH0);
    adc_external_trigger_source_config(ADC1, ADC_INSERTED_CHANNEL, ADC0_1_EXTTRIG_INSERTED_T1_CH0);
    /* ADC external trigger enable */
    adc_external_trigger_config(ADC0, ADC_INSERTED_CHANNEL, ENABLE);
    adc_external_trigger_config(ADC1, ADC_INSERTED_CHANNEL, ENABLE);

    /* ADC temperature and Vrefint enable */
    adc_tempsensor_vrefint_enable();

    /* 64 times sample, 2 bits shift */
    adc_oversample_mode_config(ADC0, ADC_OVERSAMPLING_ALL_CONVERT, ADC_OVERSAMPLING_SHIFT_2B, ADC_OVERSAMPLING_RATIO_MUL64);
    adc_oversample_mode_enable(ADC0);
    adc_oversample_mode_config(ADC1, ADC_OVERSAMPLING_ALL_CONVERT, ADC_OVERSAMPLING_SHIFT_2B, ADC_OVERSAMPLING_RATIO_MUL64);
    adc_oversample_mode_enable(ADC1);

    /* clear the ADC flag */
    adc_interrupt_flag_clear(ADC0, ADC_INT_FLAG_EOC);
    adc_interrupt_flag_clear(ADC0, ADC_INT_FLAG_EOIC);
    adc_interrupt_flag_clear(ADC1, ADC_INT_FLAG_EOC);
    adc_interrupt_flag_clear(ADC1, ADC_INT_FLAG_EOIC);
    /* enable ADC interrupt */
//    adc_interrupt_enable(ADC0, ADC_INT_EOIC);
//    adc_interrupt_enable(ADC1, ADC_INT_EOIC);

    /* enable ADC interface */
    adc_enable(ADC0);
    delay(1);   //delay 1ms
    /* ADC calibration and reset calibration */
    adc_calibration_enable(ADC0);
    /* enable ADC interface */
    adc_enable(ADC1);
    delay(1);   //delay 1ms
    /* ADC calibration and reset calibration */
    adc_calibration_enable(ADC1);
}

使用特权

评论回复
沙发
lifeforrent| | 2022-5-13 10:07 | 只看该作者
你贴出的代码没有问题,问题应该出在
    adc_rcu_config();  
    adc_gpio_config();
    adc_timer_config();这几句里

使用特权

评论回复
板凳
pltczw666|  楼主 | 2022-5-14 19:29 | 只看该作者
感谢楼上兄弟的回复,问题出在温度和参考电压都只能在ADC0采集。

使用特权

评论回复
地板
tpgf| | 2022-6-1 16:42 | 只看该作者
是不是需要重新排版了

使用特权

评论回复
5
drer| | 2022-6-1 16:48 | 只看该作者
需要调整配置的顺序吗

使用特权

评论回复
6
qcliu| | 2022-6-1 16:56 | 只看该作者
存在引脚冲突吗

使用特权

评论回复
7
coshi| | 2022-6-2 12:04 | 只看该作者
连续采样方式吗

使用特权

评论回复
8
kxsi| | 2022-6-2 12:13 | 只看该作者
是不是直接使能两个通道就可以啊

使用特权

评论回复
9
wiba| | 2022-6-2 12:25 | 只看该作者
必要要同步进行吗

使用特权

评论回复
10
kiwis66| | 2022-6-4 21:42 | 只看该作者
你这里同步的意思,是同频采集?

使用特权

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

本版积分规则

11

主题

46

帖子

0

粉丝