经常听说现在的单片机都集成多个ADC内核
通过配置不同ADC的触发时间实现多ADC的交替采样
达到提高采样率的目的
STM32L4系列是目前已知单片机中ADC采样率最高的一款
12位分辨率模式下支持高达5.33MSPS
6位分辨率模式下能过到8.88MSPS
除了TI的TMS320F28335外基本秒杀我认识所所有单片机
记得STM32F746介绍里说到F746有3个独立ADC,每个支持2.4MSPS采样率,交替采样模式下能达到7.2MSPS
正好手里有一个STM32L452的NULEO开发板,STM32L542也有3个独立ADC,每个ADC支持5.33MSPS采样率
如果3个交替采样是不是能达到16MSPS的高速采样?想想都激动
查了一次交替采样资料基本都是STM32F系列,没有STM32L的
没有没关系,咱可以自己写,好在STM32的库很强大,可以实现“无逢移植”
第一步就是找一个STM32L452的ADC例程,把网上关于STM32F系列交替采样的配置导进来
先复制ADC_MultiModeTypeDef multimode这句话,编译一下没找到ADC_MultiModeTypeDef
在IAR里Ctrl+Shift+F,输入ADC_MultiModeTypeDef,看到是在stm32l4xx_hal_adc_ex.h里定义的
再一看发现有一个条件#if defined(ADC_MULTIMODE_SUPPORT)
再用Ctrl+Shift+F找了一下ADC_MULTIMODE_SUPPORT,发现都是判断,没有定义
包含IAR的项目配置
这说明在整个工程里没有ADC_MULTIMODE_SUPPORT的定义,不支持?
使用UE在整个STM32Cube_FW_L4 里查找包含ADC_MULTIMODE_SUPPORT的头文件,居然找到了
STM32L471,STM32L475,STM32L476,STM32L486,STM32L469
对比了一下stm32l452xx.h和stm32l471xx.h果严452没有ADC_MULTIMODE_SUPPORT定义
包括和交替采样有关的寄存器定义ADC_CCR_DUAL,ADC_CCR_DELAY这些
最后查看手册,F746写的是triple interleaved mode
STM32L476的是Handles two ADC converters for dual mode operation (simultaneous or interleaved sampling modes)
STM32L542啥也没写
兜了一圈得到的结论是
STM32F746支持3个ADC交替采样速率可达7.2MSPS
STM32L476支持2个ADC交替采样速率可达10.66MSPS(是否支持3ADC交替采样有待确认)
STM32L542不支持交替采样,速率最大5.33MSPS