完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请教各位大佬,我使用STM32F405配置了三重ADC模式采集6个通道的电压值,在需要开启转换的时候使用 ADC1->CR2 |= 0x40000001这条代码开启的,但是使用示波器后发现占用CPU时间很长,有4us左右,导致采集的数据很小。如果注释掉这条启动代码,通过测量,就不会占用4us的时间。
|
|
相关推荐
1个回答
|
|
首先,您可以尝试使用DMA(直接存储器访问)模式来解决CPU占用时间过长的问题。DMA模式可以减少CPU的负载,并且能够在转换完成后自动将数据传输到指定的存储器地址,而无需CPU的干预。
以下是使用DMA的一般步骤: 1. 配置ADC外设的通道和采样时间。 2. 配置DMA外设,将其连接到ADC的数据寄存器。 3. 配置存储器控制寄存器(Memory Control Register,MCR),设置存储器的地址、传输大小和传输方式(单次、循环等)。 4. 启用ADC的DMA模式,使能DMA请求。 5. 启动ADC和DMA转换。 通过使用DMA模式,您可以将ADC的数据传输到指定的存储器地址,而不需要CPU的干预,因此可以减少CPU的负载,提高采样效率。 另外,您还可以考虑通过调整ADC的采样时间和分辨率来优化采样效果。减小采样时间可以提高采样频率,但可能会降低采样精度。调整分辨率可以提高转换结果的精度,但可能会增加采样时间。因此,您可以根据具体的应用需求进行权衡。 最后,您还可以尝试使用硬件触发模式,通过外部触发信号来触发ADC转换,以减少CPU的干预。ADC的硬件触发模式可以通过设置CR2寄存器中的EXTERNALTRIGEN和EXTERNALTRIGCONVx位来实现。 请注意,在进行任何更改之前,建议先阅读STM32F40的参考手册和ADC的文档,以确保正确理解和配置硬件的操作。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1804 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1629 浏览 1 评论
1097 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
736 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1686 浏览 2 评论
1944浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
748浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
580浏览 3评论
604浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
565浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 16:44 , Processed in 0.934252 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号