打印

学习使用STM32F4-Discovery的ADC3_DMA例程遇到的问题

[复制链接]
2918|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lkl10800139|  楼主 | 2012-5-22 18:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在使用STM32F4-Discovery开发板的ADC采样数据遇到问题,向大家请教。板子是STM32F4-Discovery,例程是FW_V1.1.0的Peripheral_Examples,使用了ADC3_DMA和ADC_Interleaved_DMAmode2。
目的是将采集到的数据用数组存起来,ADC3_DMA例程做了一些改动:
变量定义:
#define BufferSize           12048
//__IO uint16_t    ADC3ConvertedValue = 0;
__IO uint16_t      ADC3ConvertedValue[BufferSize];

主循环不做任何事情:
  while (1)
  {  
    /* convert the ADC value (from 0 to 0xFFF) to a voltage value (from 0V to 3.3V)*/
    //ADC3ConvertedVoltage = ADC3ConvertedValue *3300/0xFFF;
  }

DMA的配置的改动:
  //DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&ADC3ConvertedValue;
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)ADC3ConvertedValue;//数组名即为首地址

// DMA_InitStructure.DMA_BufferSize = 1;
DMA_InitStructure.DMA_BufferSize = BufferSize;// 数组大小
ADC的配置为例程配置。
采集数据不同,由下面的配置引起,
  //DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;

我的输入信号是三角波,频率100khz,0--1.6v,使用DMA_Mode_Normal得到的数据,两个最低点之间的点数是24个,有上升下降的规律:
0x00F9,0x00FA ,0x020B, 0x029C, 0x024D ,0x0390, 0x0491, 0x04FE
0x061B ,0x06A6 ,0x0643, 0x0793, 0x088F, 0x07F9 ,0x07A7, 0x06EB
0x053C, 0x0537, 0x04E1,0x0411, 0x03BD, 0x02F8, 0x0145, 0x0138, 0x00DC


用DMA_Mode_Circular采集的数据,两个最低点之间的点数是24个,没有上升下降的规律:
0x00CC, 0x05FF, 0x06B5, 0x0104, 0x06C2, 0x05AF, 0x072C, 0x00C0,
0x061C, 0x04DE ,0x076B ,0x03FD, 0x0275, 0x074E ,0x04A1, 0x0827,
0x02A2, 0x02CA, 0x0882, 0x0288, 0x0730, 0x0155, 0x043B,0x06FE,0x026E

增加采样时间和采样延时,得到的数据和上面的结果类似。
ADC_Interleaved_DMAmode2 例程也是这样的情况。
沙发
kaolacatty| | 2012-7-1 18:32 | 只看该作者
在哪儿买的stm32f4-discovery,ST主页上面没找到卖的链接。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

77

帖子

0

粉丝