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

有没有人用stm32cube的HAL 库做过多路ADC的DMA采样试验

[复制链接]
feiante 提问时间:2015-2-2 19:47 /
本帖最后由 feiante 于 2015-2-3 09:49 编辑

有没有人用stm32cube的HAL 库做过多路ADC的DMA采样试验,今天打算试试3路ADC的DMA采样,使用PA0,PA1,PA2这3个脚,感觉有问题,只能PA0采样到,PA1,PA2不能采样,除了3V就是4095.官方自带的例程只有1个通道的。原来F0的是成功的,使用了2路。谁做过F4的并成功的,参考一下配置

新建文件夹.rar

下载

5.3 MB, 下载次数: 89, 下载积分: ST金币 -1

这个是工程文件

收藏 评论6 发布时间:2015-2-2 19:47

举报

6个回答
feiante 回答时间:2015-2-3 10:44:05
感觉只有PA0能采集到
linshifaa 回答时间:2015-2-3 13:49:13
。。。。。。。
feiante 回答时间:2015-2-3 15:01:56

“。。。。。。。”是什么意思呢?不懂
dsjsjf 回答时间:2018-3-20 10:16:28
#define AdcFilterNum    80
#define AdcChannelNum   3
#define AdcDmaLengh     (AdcFilterNum * AdcChannelNum)

uint32_t ADC_ConvertedValue[AdcFilterNum][AdcChannelNum];

/* ADC1 init function */
static void MX_ADC1_Init(void)
{

  ADC_ChannelConfTypeDef sConfig;
  ADC_InjectionConfTypeDef sConfigInjected;

    /**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.ScanConvMode = ENABLE;
  hadc1.Init.ContinuousConvMode = ENABLE;
  hadc1.Init.DiscontinuousConvMode = DISABLE;
  hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
  hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  hadc1.Init.NbrOfConversion = 3;
  hadc1.Init.DMAContinuousRequests = ENABLE;
  hadc1.Init.EOCSelection = ADC_EOC_SEQ_CONV;
  if (HAL_ADC_Init(&hadc1) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

    /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
    */
  sConfig.Channel = ADC_CHANNEL_10;
  sConfig.Rank = 1;
  sConfig.SamplingTime = ADC_SAMPLETIME_480CYCLES;
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

    /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
    */
  sConfig.Channel = ADC_CHANNEL_15;
  sConfig.Rank = 2;
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

    /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
    */
  sConfig.Channel = ADC_CHANNEL_VREFINT;
  sConfig.Rank = 3;
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
}

/******************************************************************************************************
*        函 数 名: Start_AdConvert
*        功能说明: 启动AD转换
*                      采用DMA连续转换模式(多通道扫描)
*        形    参:无
*        返 回 值: 无
********************************************************************************************************/
void Start_AdConvert(void)
{
  HAL_ADC_Start_DMA(&hadc1, (ADC_ConvertedValue[0]), AdcDmaLengh);
}

开启转换后直接从ADC_ConvertedValue数组中取值

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

absdjko 回答时间:2018-11-12 17:26:12
dsjsjf 发表于 2018-3-20 10:16
#define AdcFilterNum    80
#define AdcChannelNum   3
#define AdcDmaLengh     (AdcFilterNum * AdcChan ...

DMA方式不是直接写数组里了吗?对HAL_ADC_STAR_DMA不太理解
dsjsjf 回答时间:2018-11-13 14:35:30
absdjko 发表于 2018-11-12 17:26
DMA方式不是直接写数组里了吗?对HAL_ADC_STAR_DMA不太理解

这相当于一个启动命令

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版