左岸右岸 发表于 2015-7-25 20:39
我水平低,粗略看了下安臣大神的程序看得好累你有好的方法么
我没有测试过,不过看到你的程序有点疑问。
1你的ADC能设置转换通道个数吗,比如下面的参数设置。
2你使用DMA进行转换的内存地址设置为一个16进制的数据的地址,buffersize设置为2.因为你要转换的是2个通道,这里的内存地址是不是应该设置为2个16进制大小的数组(比如uint16_t ADCbuffer)的地址,转换完成后,一个通道存放在ADCbuffer,一个存放在ADCbuffer.
我没测试过多通道ADC,不知道上面的的猜测对不对。这里有些例子可以参考
STM32F030 多通道ADC DMA读取问题
多通道ADC+DMA转换数据为零的疑惑
creep 发表于 2015-7-25 20:56
我没有测试过,不过看到你的程序有点疑问。
1你的ADC能设置转换通道个数吗,比如下面的参数设置。
2你使 ...
:handshake好热心
1. STM32F072不能设置转换通道个数。
2.尝试过用数组存储的方法,不知是不是程序没写好,出现错位现象,有空再试试。
3.水平低,正在学习:D
DMA采样多通道我一直在用,而且效果很好的,采样率是30KHZ,不过我是自己配置的,你用库文件的函数我看不懂。
你对着文档看一下ADC1->CHSELR这个寄存器,你可能是ADC通道采样的顺序没配置好哦:lol
阳光_~~ 发表于 2015-7-26 03:17
你对着文档看一下ADC1->CHSELR这个寄存器,你可能是ADC通道采样的顺序没配置好哦 ...
好的,我去看看寄存器,谢谢哈:)
本帖最后由 Paderboy 于 2015-7-26 09:27 编辑
你试试用cube配置下。使用DMA看看。。
我试了用cube 生成的。。手上没有F072片子。。没办法测试。。
sConfig.Channel = ADC_CHANNEL_0;
sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;
sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;
HAL_ADC_ConfigChannel(&hadc, &sConfig);
/**Configure for the selected ADC regular channel to be converted.
*/
sConfig.Channel = ADC_CHANNEL_1;
HAL_ADC_ConfigChannel(&hadc, &sConfig);
/**Configure for the selected ADC regular channel to be converted.
*/
sConfig.Channel = ADC_CHANNEL_2;
HAL_ADC_ConfigChannel(&hadc, &sConfig);
/**Configure for the selected ADC regular channel to be converted.
*/
sConfig.Channel = ADC_CHANNEL_3;
HAL_ADC_ConfigChannel(&hadc, &sConfig);
/**Configure for the selected ADC regular channel to be converted.
*/
sConfig.Channel = ADC_CHANNEL_4;
HAL_ADC_ConfigChannel(&hadc, &sConfig);
Paderboy 发表于 2015-7-26 09:56
楼主,我帮你用cube 建了个072RBT6的工程。。。写了个简单ADC DMA 程序和工程在压缩包里。。 ...
在这里再次感谢您的帮助:)
左岸右岸 发表于 2015-7-26 11:41
在这里再次感谢您的帮助
不客气。。。。:loveliness: 还有积分20.。。。啊
Paderboy 发表于 2015-7-26 11:42
不客气。。。。 还有积分20.。。。啊
是金币的哦:D
:loveliness: