完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
代码是从Fwlib的例子里改的
基本配置代码如下 /******************************************************************************/ /* ADCs configuration: double interleaved with 6cycles delay to reach 5Msps */ /******************************************************************************/ /* ADC Common configuration *************************************************/ ADC_CommonInitStructure.ADC_Mode = ADC_DualMode_Interl; ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_8Cycles; ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_3; ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2; ADC_CommonInit( amp;ADC_CommonInitStructure); /* DMA mode 3 is used in interleaved mode in 6-bit or 8-bit resolutions */ ADC_InitStructure.ADC_Resolution = ADC_Resolution_8b;//ADC_Resolution_8b; /* ADC1 regular channel 12 configuration ************************************/ ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfConversion = 1; ADC_Init(ADC1, amp;ADC_InitStructure); /* ADC1 regular channel12 configuration */ ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_3Cycles); /* Enable ADC1 DMA */ ADC_DMACmd(ADC1, ENABLE); /* ADC2 regular channel 12 configuration ************************************/ ADC_Init(ADC2, amp;ADC_InitStructure); /* ADC2 regular channel12 configuration */ ADC_RegularChannelConfig(ADC2, ADC_Channel_1, 1, ADC_SampleTime_3Cycles); /* Enable DMA request after last transfer (multi-ADC mode) ******************/ ADC_MultiModeDMARequestAfterLastTransferCmd(ENABLE); /* Enable ADC1 **************************************************************/ ADC_Cmd(ADC1, ENABLE); /* Enable ADC2 **************************************************************/ ADC_Cmd(ADC2, ENABLE); /* Start ADC1 Software Conversion */ ADC_SoftwareStartConv(ADC1); 代码如上,这里 ADC_CommonInitStructure.ADC_TwoSamplingDelay 输入信号为300k的正弦波,采样结果如图所示 黑色波形为ADC1,2的组合数据,蓝色和红色分别对应 ADC1,ADC2 如果将输入信号改为800k,那么ADC1,ADC2的差距将更加明显。另外,从图中可以看到,ADC1,ADC2的采样分辨率视乎根本没达到8位的效果 我试过ADC_TwoSamplingDelay_6Cycles,效果差不多,我使用单ADC采样,则没有问题,就是达不到我要的4M左右的AD速度 双AD inter模式本来就是为高速设计的,现在这样的结果肯定不是预期的效果,不知道问题错在哪里,请各位指教 |
|
相关推荐
1个回答
|
|
|
根据您提供的信息,您正在尝试配置STM32F2系列的双ADC(DualADC)以实现5Msps的采样率。以下是一些建议和代码示例,以帮助您完成此任务。
1. 首先,确保您的STM32F2系列微控制器支持双ADC功能。根据STM32F2的数据手册,STM32F2系列的某些型号支持此功能。 2. 接下来,配置ADC的时钟。为了达到5Msps的采样率,您需要设置适当的ADC时钟。这通常在RCC(Reset and Clock Control)单元中完成。 ```c RCC_PeriphCLKInitTypeDef RCC_PeriphCLKInitStruct; /* ADC1 and ADC2 clock configuration */ RCC_PeriphCLKInitStruct.RCC_ADC12CLK = RCC_ADC12CLK_SYSCLK_DIV2; RCC_PeriphCLKInitStruct.RCC_ADC34CLK = RCC_ADC34CLK_SYSCLK_DIV2; HAL_RCCEx_PeriphCLKConfig(&RCC_PeriphCLKInitStruct); ``` 3. 配置ADC的通用设置。这包括设置双模式、触发源和分时采样。 ```c ADC_CommonInitTypeDef ADC_CommonInitStruct; /* ADC common configuration */ ADC_CommonInitStruct.ADC_Mode = ADC_DualModeInterlaved; ADC_CommonInitStruct.ADC_Clock = ADC_CKMODE_DIV2; HAL_ADCEx_CommonInit(&ADC_CommonInitStruct); ``` 4. 配置ADC的初始化结构体,包括分辨率、数据对齐、扫描模式等。 ```c ADC_HandleTypeDef hadc1, hadc2; /* ADC1 configuration */ hadc1.Instance = ADC1; hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2; hadc1.Init.Resolution = ADC_RESOLUTION_12B; hadc1.Init.ScanConvMode = ENABLE; hadc1.Init.ContinuousConvMode = ENABLE; HAL_ADC_Init(&hadc1); /* ADC2 configuration */ hadc2.Instance = ADC2; hadc2.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2; hadc2.Init.Resolution = ADC_RESOLUTION_12B; hadc2.Init.ScanConvMode = ENABLE; hadc2.Init.ContinuousConvMode = ENABLE; HAL_ADC_Init(&hadc2); ``` 5. 配置ADC通道和采样时间。 ```c /* Configure ADC1 regular sequence */ HAL_ADC_ConfigChannel(&hadc1, &sConfig, 1); /* Configure ADC2 regular sequence */ HAL_ADC_ConfigChannel(&hadc2, &sConfig, 1); ``` 6. 最后,启动ADC并开始转换。 ```c HAL_ADC_Start(&hadc1); HAL_ADC_Start(&hadc2); ``` 请注意,这些代码示例仅供参考,您可能需要根据您的具体需求进行调整。在尝试这些代码之前,请确保您已经阅读并理解了STM32F2系列的数据手册和参考手册。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
4130 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
3221 浏览 1 评论
2747 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
2175 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
14939 浏览 2 评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
3084浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
1892浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
2064浏览 3评论
1976浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
2165浏览 3评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 18:47 , Processed in 0.558143 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3500