完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32F103配置了ADC1 的4个通道,利用定时器的事件触发进行10Hz 的数据采样,数据通过DMA传输。然后希望每次采样4*50个数据后触发DMA的中断进行数据的处理。
根据教程进行了相关的配置后,遇到了2个问题: 1 定时器配置成10hz,但是每次启动采集后基本马上就能进入DMA的回调函数,里面数据已经刷满了,所以感觉ADC的采样频率似乎不是收定时器触发的。 2DMA的回调函数HAL_ADC_ConvHalfCpltCallback,HAL_ADC_ConvCpltCallback,应该是数据完成一半数量的采集后触发第一个回调,全部采集后再触发第二个回调,但是实际上每次都是在第一个回调中数据就全部刷新了,采样完成的回调中不会有新的数据刷新。 希望有人能帮忙指点下,谢谢 |
|
相关推荐
1个回答
|
|
根据你的描述,我将尝试解决你遇到的两个问题。
问题1:定时器配置成10Hz,但是每次启动采集后基本马上就能进入DMA的回调函数,里面数据已经刷满了,所以感觉ADC的采样频率似乎不是收定时器触发的。 解决步骤: 1. 检查定时器的配置是否正确。确保定时器的时钟源和预分频器设置正确,以便实现10Hz的触发频率。 2. 确保ADC的触发源设置为定时器事件。在HAL_ADC_Init()函数中,设置ADC的触发源为定时器事件,例如: ```c ADC_HandleTypeDef hadc1; 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; hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.NbrOfConversion = 4; HAL_ADC_Init(&hadc1); ``` 3. 检查ADC的采样时间设置。确保采样时间足够长,以便在定时器触发之间有足够的时间进行采样。 问题2:DMA的回调函数HAL_ADC_ConvHalfCpltCallback,HAL_ADC_ConvCpltCallback,应该是数据完成一半数量的采集后触发第一个回调,全部采集后再触发第二个回调,但是实际上每次都是在第一个回调。 解决步骤: 1. 检查DMA的配置。确保DMA的请求数量设置正确,以便在每次采集一半数据时触发HAL_ADC_ConvHalfCpltCallback回调函数,全部采集完成后触发HAL_ADC_ConvCpltCallback回调函数。 2. 在HAL_ADC_ConvHalfCpltCallback回调函数中,添加适当的处理逻辑,以便在数据采集到一半时进行处理。 3. 在HAL_ADC_ConvCpltCallback回调函数中,添加适当的处理逻辑,以便在数据采集完成后进行处理。 4. 如果问题仍然存在,可以尝试使用HAL_ADC_Start_DMA()函数的另一种模式,例如HAL_ADC_Start_DMA(&hadc1, &aADCxConvertedData[0], hadc1.Init.NbrOfConversion * 2); 这样,DMA将在采集完所有数据后触发回调函数。 希望这些建议能帮助你解决问题。如果还有其他问题,请随时提问。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
645浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
516浏览 3评论
532浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
505浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 11:05 , Processed in 1.070021 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号