stm32f4 discovery ADC3_DMA例程在学习的时候,我想将例程里面的单个采样值存储,改用数组存储,做了如下改动: //__IO uint16_t ADC3ConvertedValue = 0; __IO uint16_t ADC3ConvertedValue[2048]; while (1) { /* convert the ADC value (from 0 to 0xFFF) to a voltage value (from 0V to 3.3V)*/ //ADC3ConvertedVoltage = ADC3ConvertedValue *3300/0xFFF; } //DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&ADC3ConvertedValue; DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)ADC3ConvertedValue; //DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles; ADC_RegularChannelConfig(ADC3, ADC_Channel_12, 1, ADC_SampleTime_3Cycles); 得到的值没有规律,我的输入信号是三角波,频率100khz 用adc dma的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 用adc dma的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 |
RE:stm32f4 discovery ADC3_DMA 例
回复:stm32f4 discovery ADC3_DMA 例
测试的和你输出的有一定的数据间隔,你可以把数据安装XY表的格式填写出来,然后画图,看看波形是否一致就行了。
ADC3_DMA 在开启DMA的circle模式时,软件调试加入断点,停止后查看数据,没有三角波周期变化的规律,我加入了DMA传输完成中断十次后,关闭adc和dma,查看到的数据,有三角波的变化规律。是由于调试时软件查看数据的方式不对,adc和dma都是硬件工作方式,软件停止后adc和dma仍然在工作,查看到的数据自然就不对了。
回复:stm32f4 discovery ADC3_DMA 例
0x00CE0136,0x00CE0136,0x00CE0136,0x00CE0136,0x01200050,0x018000FB,
0x016401C9,0x016401C9,0x016401C9,0x016401C9,0x02AA0209,0x02FC0278,
0x03670271,0x03670271,0x03670271,0x03670271,0x03B003A5,0x03560407,
0x04B604A2,0x04B604A2,0x04B604A2,0x04B604A2,0x054A048F,0x057E0555,
0x057405E1,0x057405E1,0x057405E1,0x057405E1,0x06B10601,0x07080685,
0x0774066D,0x0774066D,0x0774066D,0x0774066D,0x07AE079F,0x07440803,
0x08B4089C,0x08B4089C,0x08B4089C,0x08B4089C,0x0873081A,0x07BC0813,
0x06D607AB,0x06D607AB,0x06D607AB,0x06D607AB,0x072C06E5,0x06AA0697,
0x0638059A,0x0638059A,0x0638059A,0x0638059A,0x058D05EE,0x044A056F,
0x04CF052B,0x04CF052B,0x04CF052B,0x04CF052B,0x04800439,0x03DF0409,
0x02E303C0,0x02E303C0,0x02E303C0,0x02E303C0,0x0341030E,0x02AF02A3,
0x022F01B6,0x022F01B6,0x022F01B6,0x022F01B6,0x019001F8,0x00560171,
0x00C7012D,0x00C7012D,0x00C7012D,0x00C7012D,0x012B0068,0x0170013E.
回复:stm32f4 discovery ADC3_DMA 例
版主,请问ADC采样到STM32F407的数据,怎么能导出来?难道要一个一个手写出来吗?2.4M SPS的点太多了。
自己通过串口输出一下就可以了。
楼主有遇到DMA中断只进中断一次就卡住么