[讨论] STM32多ADC交替采样时不同型号间的差异

littleshrimp   2017-11-3 11:45 楼主
经常听说现在的单片机都集成多个ADC内核
通过配置不同ADC的触发时间实现多ADC的交替采样
达到提高采样率的目的
STM32L4系列是目前已知单片机中ADC采样率最高的一款
12位分辨率模式下支持高达5.33MSPS
6位分辨率模式下能过到8.88MSPS
除了TI的TMS320F28335外基本秒杀我认识所所有单片机

记得STM32F746介绍里说到F746有3个独立ADC,每个支持2.4MSPS采样率,交替采样模式下能达到7.2MSPS

QQ图片20171103110253.png

正好手里有一个STM32L452的NULEO开发板,STM32L542也有3个独立ADC,每个ADC支持5.33MSPS采样率
如果3个交替采样是不是能达到16MSPS的高速采样?想想都激动

查了一次交替采样资料基本都是STM32F系列,没有STM32L的
没有没关系,咱可以自己写,好在STM32的库很强大,可以实现“无逢移植”
第一步就是找一个STM32L452的ADC例程,把网上关于STM32F系列交替采样的配置导进来
先复制ADC_MultiModeTypeDef multimode这句话,编译一下没找到ADC_MultiModeTypeDef
QQ图片20171103103611.png

在IAR里Ctrl+Shift+F,输入ADC_MultiModeTypeDef,看到是在stm32l4xx_hal_adc_ex.h里定义的
QQ图片20171103103640.png

再一看发现有一个条件#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定义
QQ图片20171103111852.png

QQ图片20171103111744.png

包括和交替采样有关的寄存器定义ADC_CCR_DUAL,ADC_CCR_DELAY这些
QQ图片20171103112420.png

QQ图片20171103112244.png

最后查看手册,F746写的是triple interleaved mode
QQ图片20171103110253.png

QQ图片20171103112951.png
STM32L476的是Handles two ADC converters for dual mode operation (simultaneous or interleaved sampling modes)
QQ图片20171103104851.png

STM32L542啥也没写
QQ图片20171103104816.png

兜了一圈得到的结论是
STM32F746支持3个ADC交替采样速率可达7.2MSPS
STM32L476支持2个ADC交替采样速率可达10.66MSPS(是否支持3ADC交替采样有待确认)
STM32L542不支持交替采样,速率最大5.33MSPS



虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复评论 (1)

研究得很细,向楼主学习
点赞  2017-11-12 22:46
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复