STM32
直播中

周煌煦

9年用户 1147经验值
私信 关注
[问答]

STM32F103VCT6 ADC和DMA的速度为什么不一致?

最近调试STM32F103VCT6,发现一个很奇怪的问题。现在采用ADC1和ADC3,同时采集两路波形,采集速率都配到了1.5时钟,大约1.17us。因为速度较快,所以,开启了DMA1和DMA2。结果发现,DMA1的中断速度可以达到850Ksps,但DMA3却没有那么快,测试下来大约只有DMA1通道的1/3左右。请大家帮忙,谢谢。

回帖(1)

李霞

2024-5-16 17:59:47
STM32F103VCT6的ADC和DMA速度不一致的原因可能有以下几点:

1. DMA通道优先级:STM32F103VCT6的DMA通道可能具有不同的优先级。如果DMA1的优先级高于DMA3,那么DMA1将获得更多的CPU时间,从而实现更高的数据传输速度。

2. ADC通道配置:确保ADC1和ADC3的配置相同,包括采样速率、分辨率等。如果两者之间存在差异,可能导致速度不一致。

3. DMA传输配置:检查DMA1和DMA3的传输配置,确保它们具有相同的传输模式、数据宽度、源地址增量等设置。

4. 中断优先级:检查DMA1和DMA3的中断优先级设置,确保它们的优先级相同。如果DMA1的中断优先级高于DMA3,那么DMA1的中断处理将更快地执行,从而提高速度。

5. CPU负载:如果CPU在处理DMA1和DMA3的中断时存在其他任务,可能导致DMA3的处理速度降低。检查CPU的负载情况,确保没有其他任务影响DMA3的性能。

6. 硬件问题:虽然不太可能,但不能完全排除硬件问题。检查STM32F103VCT6的硬件连接,确保没有损坏或接触不良的地方。

为了解决这个问题,你可以尝试以下步骤:

1. 确保ADC1和ADC3的配置相同。
2. 检查DMA1和DMA3的传输配置,确保它们具有相同的设置。
3. 检查DMA1和DMA3的中断优先级设置,确保它们的优先级相同。
4. 检查CPU的负载情况,确保没有其他任务影响DMA3的性能。
5. 如果可能,检查STM32F103VCT6的硬件连接。

希望这些建议能帮助你解决问题。如果问题仍然存在,请提供更多详细信息,以便进一步分析。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分