STM32F405 FOC 使用Timer 触发 ADC
1. ADC采集模式
根据STM32F405数据手册,可以看到ADC block diagram,ADC主要有两种触发模式:
- regular conversion mode:常规通道
- injected conversion mode:注入通道
2. 高级Timer模式
这里我们用到的是高级定时器的TRGO功能
3. ADC1 连续采集
连续采集有两种实现方式:
3.1 DMA软件触发
转换完成中断中,再次启动DMA转换
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
{
printf("%d \t %d \t %d \t %d \r\n",adc1_value[0], adc1_value[1], adc1_value[2], adc1_value[3]);
HAL_ADC_Start_DMA(&hadc1, (uint32_t *)adc1_value, ADC_CHNNELS);
}
3.2 DMA+TIM触发
DMA+TIM触发,由TIM trigger event触发DMA采集,只需要在main函数中启动一次DMA采集即可
参考 STM32CubeMX | HAL库的ADC多通道数据采集(轮训、DMA、DMA+TIM)、读取内部传感器温度)配置,但是发现只能启动一次DMA,测试发现需要将ADC1的DMA continuous request设置为enable