[其他ST产品] ADC to DAC时间久了时钟不同步的问题

[复制链接]
1360|18
 楼主| elephant00 发表于 2022-8-8 10:28 | 显示全部楼层 |阅读模式
dc, AD, AC
我在用STM32L431做一个音频相关的项目。
我是用Timer6 设置32Khz ADC 采样,然后把采样点降采样到4Khz后,然后输出到DAC同步输出。DAC用Timer7设置 4Khz。
刚开始ADC数据和DAC数据是同步的,但是几分钟后ADC 进去的数据和DAC输出的指针就会不同步导致异常。
请问这种应用该怎么做?我知道如果用同一个Timer就没问题,但是由于ADC采样率和DAC的采样率要设不同的没法用一个timer吧?

LcwSwust 发表于 2022-8-8 11:34 | 显示全部楼层
数据经过了缓冲?可否根据缓冲区剩余数据量对Timer7的频率进行微调?
若想用同一个timer,可以软件分频得到不同的频率:
timer()
{
static int f;
ADC采样;
f++;
if(f>=3)//软件3分频
{
  f=0;
  DAC输出;
}
}
xch 发表于 2022-8-8 12:22 | 显示全部楼层
鬼知道你的32KHZ和4khz 是不是准确的。寄存器设置截图发上来看看
guojin0273 发表于 2022-8-8 15:40 | 显示全部楼层
如果是音频,这个理解不对, 如果ADC 以32K采样, 那么DAC须以32K,并且要同时钟 ,否则时钟异步了就有杂音, 如果DAC 以4K输出,那么32K就要转采样成4K,同样存在异步问题,杂音是不可避免的,只是看出现的时间不定而已
coody 发表于 2022-8-8 17:55 | 显示全部楼层
用同一个时钟就不会有问题。32K采样,每中断8次就送一次给DAC。
yjmwxwx 发表于 2022-8-8 18:41 | 显示全部楼层
截图_2022-08-08_18-40-22.png
32K定时器作为4K定时器的时钟这种不同步??
sleepybear 发表于 2022-8-9 08:53 | 显示全部楼层
必须用同源时钟,否则两个名义上都是4KHz的时钟,也存在微小的偏差,不同步,时间久了就会丢点或者重复采样,音频表现为爆音。
能想到两个方法:
1、要么想办法用同源时钟。
2、要么加采样率转换(本质上就是个滤波。)。音频不同于视频:视频可以通过队列控制,必要时丢帧或者重复帧来达到同步的目的。音频哪怕丢弃或者重复一个采样点,都能听到爆音,所以这种情况就得用采样率转换。
两只袜子 发表于 2022-8-9 10:00 | 显示全部楼层
你是说基于TIM6对ADC每秒完成32K的采样,然后将采样数据按照每秒提取4K个经DAC 输出,DAC的输出时序由TIM7来控制。请问从采样数据提取到DAC是通过DMA还是中断方式。另外TIM6 TIM7的时间参数是怎样配置的,二者有无保持同步关系。
jcky001 发表于 2022-8-10 10:00 | 显示全部楼层
采样点降采样到4Khz是什么意思?是每8个数据取一个出来给DAC么?

tpgf 发表于 2022-9-4 07:49 | 显示全部楼层
是不是晶振不准导致的呢
qcliu 发表于 2022-9-4 07:56 | 显示全部楼层
大概需要多久了就变的不准了啊
drer 发表于 2022-9-4 08:27 | 显示全部楼层
大概能相差多少呢
coshi 发表于 2022-9-4 08:37 | 显示全部楼层
二者的时钟源要用一样的
kxsi 发表于 2022-9-4 08:43 | 显示全部楼层
DAC和ADC的时钟是如何配置的呢
wiba 发表于 2022-9-4 08:53 | 显示全部楼层
二者需要协同合作吗
地下縱情搖擺 发表于 2022-9-25 11:45 | 显示全部楼层
没做过音频项目,正常来说用DMA能好些吧

热爱童话世界 发表于 2022-9-25 12:07 | 显示全部楼层
你是不是有业务在定时器里做了啊

一枝香 发表于 2022-9-25 12:29 | 显示全部楼层
你可以在定时器6处理完之后,同时给定时器清零一下呢?

偷吻月亮 发表于 2022-9-25 12:51 | 显示全部楼层
网上搜了一下,说是要同源时钟的

笨蛋无需搭理 发表于 2022-9-25 13:13 | 显示全部楼层
你这时钟不同步是有规律的么

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1031

主题

3946

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部