打印

GD32F470 ADC抖动

[复制链接]
874|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我使用的是GD32F470VG的MCU
我使用TIM1作为DAC和ADC的触发源,配置了DAC,ADC的DMA,
同时还有另一个TIM13作为系统时基
现在有一个问题 当我开启TIM13的时候 ADC采集回的波形会有抖动

当我关闭TIM13的时候 采集的波形很好

请问下这是什么原因导致的


使用特权

评论回复
沙发
LcwSwust| | 2025-3-20 16:20 | 只看该作者
这波形是DMA开着的时候读出的,还是DMA停止时读出?
TIM13干了啥?

使用特权

评论回复
板凳
Harley123|  楼主 | 2025-3-20 16:53 | 只看该作者
LcwSwust 发表于 2025-3-20 16:20
这波形是DMA开着的时候读出的,还是DMA停止时读出?
TIM13干了啥?

DMA停止后通过串口打出来的

因为使用了freertos,所以用TIM13作为时基
只要打开中断就会有抖动,即使中断函数中啥也没操作
不开中断就不会有。

使用特权

评论回复
地板
FranklinUNK| | 2025-3-20 21:48 | 只看该作者
有干扰吗?

使用特权

评论回复
5
xionghaoyun| | 2025-3-21 08:51 | 只看该作者
是不是优先级问题=被TIM13打断了

使用特权

评论回复
6
Harley123|  楼主 | 2025-3-21 09:59 | 只看该作者
我把TIM13的优先级设置为最低了

使用特权

评论回复
7
LcwSwust| | 2025-3-21 10:00 | 只看该作者
本帖最后由 LcwSwust 于 2025-3-21 10:01 编辑
Harley123 发表于 2025-3-20 16:53
DMA停止后通过串口打出来的

因为使用了freertos,所以用TIM13作为时基

两个波形的周期看着不一样,确定是同样的条件?
采样率多少?信号频率多少?图中每格有多少个采样点?
“抖动”很有规律,看它周期是多少?是否和程序中某个周期吻合。

DMA是循环模式连续采集吗?确定程序读取数据不会遗漏?不会被新的数据覆盖?

使用特权

评论回复
8
Harley123|  楼主 | 2025-3-21 10:02 | 只看该作者
当我改变TIM13的频率,每次抖动的间隔也会随之改变

使用特权

评论回复
9
Harley123|  楼主 | 2025-3-21 10:09 | 只看该作者
本帖最后由 Harley123 于 2025-3-21 10:46 编辑
LcwSwust 发表于 2025-3-21 10:00
两个波形的周期看着不一样,确定是同样的条件?
采样率多少?信号频率多少?图中每格有多少个采样点?
“ ...

两个波频率是一样的
我TIM1同时作为DAC和ADC的触发源 TIM1频率0.288M 波形4.5K 每个波采64个点
TIM13频率设置1毫秒进一次中断 每个抖动间隔差不多4个波形
TIM13设置2毫秒进一次中断  每个抖动间隔差不多8个波形
TIM13的频率越低  抖动频率越低
波形4.5K 打错了

使用特权

评论回复
10
LcwSwust| | 2025-3-21 10:28 | 只看该作者
本帖最后由 LcwSwust 于 2025-3-21 10:31 编辑
Harley123 发表于 2025-3-21 10:09
两个波频率是一样的
我TIM1同时作为DAC和ADC的触发源 TIM1频率0.288M 波形45K 每个波采64个点
TIM13频率 ...

0.288M的采样率,45K的信号,288/45=6.4,也就是一个信号周期采集6.4个点,不是64个点,你再算算?
抖动似乎与TIM13是同频的,你往这个方向查一下可能的原因。嗯,不对,不像是同频,TIM13频率越高,抖动出现的频率越低?

DMA循环模式,在读取数据时要注意起始位置不是从0开始,而是与CNT相关的,检查一下看是否有相应的处理。

使用特权

评论回复
11
Harley123|  楼主 | 2025-3-21 11:02 | 只看该作者
波形4.5K
TIM13设置1ms 抖动4个波
这是2ms 抖动8个波
TIM13的频率越低  抖动频率越低
抖动随TIM变化

使用特权

评论回复
12
probedog| | 2025-3-21 11:10 | 只看该作者
时钟源冲突?检查TIM13和ADC的时钟配置,是否共用时钟源。

使用特权

评论回复
13
玄德| | 2025-3-21 12:03 | 只看该作者

TIM13 干扰模拟供电,或者干扰参考源了?


使用特权

评论回复
14
Harley123|  楼主 | 2025-3-21 13:08 | 只看该作者
玄德 发表于 2025-3-21 12:03
TIM13 干扰模拟供电,或者干扰参考源了?

我换了其他TIMER 也会有这种情况

使用特权

评论回复
15
stormwind123| | 2025-3-21 13:09 | 只看该作者
看看是否存在电源噪声干扰。TIM13的开关动作可能通过电源耦合引入噪声,影响ADC的基准电压或输入信号。

使用特权

评论回复
16
丙丁先生| | 2025-3-21 13:25 | 只看该作者
波形叠加?

使用特权

评论回复
17
LcwSwust| | 2025-3-21 14:01 | 只看该作者
Harley123 发表于 2025-3-21 11:02
波形4.5K
TIM13设置1ms 抖动4个波
这是2ms 抖动8个波

哦,看来抖动就是和TIM13同频,你看看TIM13中断后你做了啥?是不是在这时去读的波形?
有没有与TIM13中断相关的代码?比如延时?
有没有读ADC数据的代码?都放上来看看。

使用特权

评论回复
18
laocuo1142| | 2025-3-21 16:20 | 只看该作者
TIM13的中断服务程序可能打断ADC的采样过程,导致数据不稳定。

使用特权

评论回复
19
Harley123|  楼主 | 2025-3-21 16:28 | 只看该作者
void TIMER7_TRG_CMT_TIMER13_IRQHandler(void)
{
    if (timer_interrupt_flag_get(HAL_TIM, TIMER_INT_FLAG_UP) == SET)
    {
        timer_interrupt_flag_clear(HAL_TIM, TIMER_INT_FLAG_UP);
    }
}


现在我TIM中断里是空跑的 但这也会有抖动

使用特权

评论回复
20
玄德| | 2025-3-21 16:48 | 只看该作者

这种情况,恐怕官方客服都难以回答。



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

12

帖子

0

粉丝