semionlg 发表于 2017-4-16 18:08:46

STM32L053如何获得多通道AD

1 目前采用CUBEMX生成了多通道的初始化,只有配置

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

    /**Configure for the selected ADC regular channel to be converted.
    */
sConfig.Channel = ADC_CHANNEL_1;
if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
{
    Error_Handler();
}

    /**Configure for the selected ADC regular channel to be converted.
    */
sConfig.Channel = ADC_CHANNEL_2;
if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
{
    Error_Handler();
}

    /**Configure for the selected ADC regular channel to be converted.
    */
sConfig.Channel = ADC_CHANNEL_3;
if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
{
    Error_Handler();
}

    /**Configure for the selected ADC regular channel to be converted.
    */
sConfig.Channel = ADC_CHANNEL_4;
if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
{
    Error_Handler();
}

    /**Configure for the selected ADC regular channel to be converted.
    */
sConfig.Channel = ADC_CHANNEL_5;
if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
{
    Error_Handler();
}

但是没有启动


2另外,我读取这个AD,采用查询方式的时候,如何获得4个通道的数据呢?

开心/xin男孩 发表于 2017-6-29 08:57:41

没有理解想要表达什么,是代码有问题,还是想请教怎么写代码?

黑夜之狼 发表于 2017-6-29 09:30:05

每次只能读取单通道,你只能读完一个,然后切换,再读

五哥1 发表于 2017-6-29 10:48:17

重要的事情是看官方的CUBE的例程。

wenyangzeng 发表于 2017-6-29 11:03:41

本帖最后由 wenyangzeng 于 2017-6-29 13:11 编辑

楼主万事具备,只欠东风。

使能扫描模式
hadc1.Init.ScanConvMode = ENABLE;

启动ADC
HAL_ADC_Start(&hadc1);

读取ADC
HAL_ADC_PollForConversion(&hadc1, 4);Value = HAL_ADC_GetValue(&hadc1);
DMA方式:
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)& ADC_Result,4);

ST官方代码很多可以参考呀。

supermiao123 发表于 2017-6-29 12:53:54

需要设置采样序列,可以找个例程看看:)

jcx0324 发表于 2017-6-29 14:23:58

可以采用DMA去读

无薪税绵 发表于 2017-6-29 21:22:52

楼主应该是未使能ADC。

yygkqzh 发表于 2017-6-30 23:43:26

多通道建议使用DMA模式,直接读取缓存区数据即可

lulugl 发表于 2017-7-2 08:30:59

学习楼上的大神们
页: [1]
查看完整版本: STM32L053如何获得多通道AD