你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32g030c8t6 adc 读取值不正确

[复制链接]
王东丶 提问时间:2022-9-2 16:13 / 未解决
用了    ADC1_IN10  ADC1_IN11  ADC1_IN15 只有10 和11 的adc值正确 IN15的值不正确,

模式选择的是 sequencer set to not fully configurable 求大佬看看

void MX_ADC1_Init(void)
{
    ADC_ChannelConfTypeDef sConfig = {0};

    /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
    */
    hadc1.Instance = ADC1;
    hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2;
    hadc1.Init.Resolution = ADC_RESOLUTION_12B;
    hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
    hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
    hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
    hadc1.Init.LowPowerAutoWait = DISABLE;
    hadc1.Init.LowPowerAutoPowerOff = DISABLE;
    hadc1.Init.ContinuousConvMode = DISABLE;
    hadc1.Init.NbrOfConversion =3;
    hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
    hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
    hadc1.Init.DMAContinuousRequests = DISABLE;
    hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;
    hadc1.Init.SamplingTimeCommon1 = ADC_SAMPLETIME_12CYCLES_5;
    hadc1.Init.OversamplingMode = DISABLE;
    hadc1.Init.TriggerFrequencyMode = ADC_TRIGGER_FREQ_HIGH;

    sConfig.Channel = ADC_CHANNEL_10;
    sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;
    if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
    {
        Error_Handler();
    }

    sConfig.Channel = ADC_CHANNEL_11;
    sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;
    if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
    {
        Error_Handler();
    }

    sConfig.Channel = ADC_CHANNEL_15;
    sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;
    if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
    {
        Error_Handler();
    }

}

收藏 评论4 发布时间:2022-9-2 16:13

举报

4个回答
xmshao 回答时间:2022-9-2 16:32:11
如果硬件及电源方面没问题的话,很可能就出在ADC的配置序列模式的选择了。对于STM32G0系列,ADC扫描模式可以有两种,分别是不完全配置序列模式和完全配置序列模式。你若用到通道15的话,请选择不完全配置序列模式.不知你的CubeMx版本是不是还比较低,现在是6.6版本了。
王东丶 回答时间:2022-9-2 16:55:56
xmshao 发表于 2022-9-2 16:32
如果硬件及电源方面没问题的话,很可能就出在ADC的配置序列模式的选择了。对于STM32G0系列,ADC扫描模式可 ...

谢谢 我去看看
wenyangzeng 回答时间:2022-9-2 20:52:23
从代码看:ADC_RANK_CHANNEL_NUMBER应该是一个固定数值的变量


而3个通道都使用:sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;

结果就只转换1个通道而已
废鱼 回答时间:2022-9-4 19:31:53
检查一下IO的配置,另外可以单独测试15是否正常。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版