找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9916|回复: 0
打印 上一主题 下一主题
收起左侧

STM32F4-DISCORVERY试验二:DMA方式的ADC3高速采样(2.4Msps)

[复制链接]
跳转到指定楼层
楼主
ID:262 发表于 2014-6-3 07:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
作者:羊村长
QQ:707703387
硬件平台:STM32F4-DISCORVERY
软件平台:KEIL MDK5.10
     DMA知识点:直接内存访问(DMA)是用来以提供外设和内存、内存和内存之间的高速数据传输的。数据可以在没有任何CPU干预下通过的DMA进行传输。这使得CPU资源更倾重与其他操作。DMA控制器基于一个复杂的总线矩阵架构,结合了功能强大的双AHB主总线架构与独立的FIFO,以优化系统带宽。两个DMA控制器共有16个数据流(stream),每个数据流可以编程与规定的通道中的一个搭配。
    一些ADC的细节特性在STM32F4的原厂参考手册中没有说明,只是很简短的列了一下。
这我是查看ST前几天刚发布的接口库才最后弄明白的,现在分享给大家:
1、STM32F4有3个独立的ADC单元,性能强劲,可以独立使用,也可以联合使用它们。联合使用在参考手册中叫Interleave模式,最大的目的是加倍提升采样速度。
2、采样速度大幅提高以后,就需要使用DMA来配合提取采样结果,从而发挥STM32F4ADC模块的最大效能。
3、ADC模块使用DMA有4种模式可选,默认模式和模式1没有什么特别之处,最有意思的是模式2和模式3:
4、模式2可以选择多达3个ADC模块工作于Interleave模式,ADC速度从单一模块的2.4Msps暴涨为7.2Msps,而且还是12-bit的分辨率!唯一的要求是每完成2次转换,允许DMA一次性取走2个采样值。
5、模式3跟模式2类同,但要求ADC模块的采样率为8-bit或6-bit,由于转换时间要比12-bit时短,所以速度更快,适用于速度要求更快,但精度要求较低的场合。
  比如用2个ADC模块很容易就可以做到6Msps的速率,而且2次的结果可以存为halfword,经由DMA取走,耗用内存也比模式2来的少。剩下的那一个ADC模块也不用闲着,可以工作于其他设定(比如:高精度)的模式。
     
   This example describes how to use the ADC3 andDMA to transfer continuously
converted data from ADC3 tomemory.
   The ADC3 is configured to convert continuouslychannel12.
   Each time an end of conversion occurs the DMAtransfers, in circular mode, the
converted data from ADC3 DRregister to the ADC3ConvertedValue variable.
   To get the maximum ADC performance (2.4 MSPS, at2.4V to 3.6V supply range),  
the ADC clock must be set to36MHz. As ADC clock is equal to APB2/2, thenAPB2
value will be 72MHz which leadto maximum AHB (System clock) at144MHz.
Since the sampling time is setto 3 cycles and the conversion time to 12bit data
is 12 cycles, so the totalconversion time is (12+3)/36= 0.41us(2.4Msps).



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表