你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32L431】ADC to DAC时间久了时钟不同步的问题

[复制链接]
奋斗机 提问时间:2022-8-3 21:32 / 未解决
我在用STM32L431做一个音频相关的项目。
我是用Timer6 设置32Khz ADC 采样,然后把采样点降采样到4Khz后,然后输出到DAC同步输出。DAC用Timer7设置 4Khz。
刚开始ADC数据和DAC数据是同步的,但是几分钟后ADC 进去的数据和DAC输出的指针就会不同步导致异常。
请问这种应用该怎么做?我知道如果用同一个Timer就没问题,但是由于ADC采样率和DAC的采样率要设不同的没法用一个timer吧?
收藏 评论5 发布时间:2022-8-3 21:32

举报

5个回答
xmshao 回答时间:2022-8-4 11:48:30
你是说基于TIM6对ADC每秒完成32K的采样,然后将采样数据按照每秒提取4K个经DAC 输出,DAC的输出时序由TIM7来控制。请问从采样数据提取到DAC是通过DMA还是中断方式。另外TIM6 TIM7的时间参数是怎样配置的,二者有无保持同步关系。
butterflyspring 回答时间:2022-8-4 12:10:34
采样点降采样到4Khz是什么意思?是每8个数据取一个出来给DAC么?
奋斗机 回答时间:2022-8-4 21:51:10
butterflyspring 发表于 2022-8-4 12:10
采样点降采样到4Khz是什么意思?是每8个数据取一个出来给DAC么?

是的,每8各ADC 采样点输出一个点到DAC. 这样才可以把32Khz的ADC数据 跟4Khz的DAC 输出对应起来。
奋斗机 回答时间:2022-8-4 21:54:05
xmshao 发表于 2022-8-4 11:48
你是说基于TIM6对ADC每秒完成32K的采样,然后将采样数据按照每秒提取4K个经DAC 输出,DAC的输出时序由TIM7 ...


ADC搬数据到RAM是通过DMA;从RAM搬数据到DAC也是通过DMA.刚开始吃进去的ADC数据和吐出来的DAC数据还都能保持同步,十几秒后就不同步了。应该是两个timer有累计误差。
奋斗机 回答时间:2022-8-8 10:53:55
问题已经解决。其实还是两个timer 的period设置有问题,没有-1. 80M 主频如果设为32khz,那么period应该设置为2500-1。我两个timer都没有-1导致误差开始对的,后面越来越大。
我当时还想了第二种方法,用定时器级联来做。因为当时一直以为两个timer就是会有一点点误差的,可能一个是正误差一个负误差导致。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版