打印

stm32 DAC音频输出问题

[复制链接]
10308|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
linc676085|  楼主 | 2013-1-4 12:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
天完成了一个DAC音频输出虽然是找到问题并解决,输出清晰的声音了。但还是想寻求下相关方法。
描述如下一开始音频从DAC输出的时候,用示波器抓到的波形是一组方波,功放喇叭输出的声音很刺耳。为什么会这样呢?原来是我采样率不对,后来调整采样率发现声音输出波形还是方波。
检查程序我程序采用DMA将声音数据传送到DAC上,DAC的配置启用通道1触发,tim6定时器定时触发DMA。
DAC通道1配置如下:
    rw_DAC_CR&=0xe000e000;    //初始化话DAC
    rw_DAC_CR|=(0x08<<8);        //设置波形波幅
    rw_DAC_CR&=~(0x03<<6);    //关闭波形发生器
    rw_DAC_CR|=(0<<3);              //启用定时器6触发
    rw_DAC_CR|=(0<<2);              //DAC通道1触发使能
    rw_DAC_CR|=(0<<1);              //开启缓存还能,提高驱动能力
经过查阅数据手册,我发现DAC启用通道1触发功能后,写入寄存器DAC_DHRx的数据在3 个APB1时钟周期后传入寄存器DAC_DORx 这个可能是导致我输出的声波是一个方波,而不是一个圆润类似正弦波的原因。鉴于此,我改用定时器6中断DAC传输数据,竟然成功了。
在这里,我想问问各位,面对上面这个问题,除了定时器中断方法外,还有什么方法可以使用?如果规定就只能用DMA传输数据的话,我该怎么处理上面这个问题?求一个解决问题的方向

沙发
rider1| | 2013-1-4 15:17 | 只看该作者
按原理讲,DAC按一定频率输出的波形就应该是像台阶一样的波形,想提高音质的话输出应加低通滤波器进行圆滑。

使用特权

评论回复
板凳
linc676085|  楼主 | 2013-1-4 16:20 | 只看该作者
rider1 发表于 2013-1-4 15:17
按原理讲,DAC按一定频率输出的波形就应该是像台阶一样的波形,想提高音质的话输出应加低通滤波器进行圆滑 ...

谢谢2楼的回答。我的出现的波形不是类似阶梯形,而是高低起伏的形状。数据有数据间的间隔时间很明显的时间延时。

使用特权

评论回复
地板
skertone| | 2013-1-11 16:22 | 只看该作者
我正好是先用中断方式做,想改成DMA方式,现在连触发传输动作都没有

楼主是不是发现 DMA 传输方式 发出的声音没有 中断传输方式清晰?


“写入寄存器DAC_DHRx的数据在3 个APB1时钟周期后传入寄存器DAC_DORx " <<<<: 这里如果每一组WAVE 数据(单次采样电平值) 都是间隔同样个周期送入DAC ,声音也不会失真啊。

使用特权

评论回复
5
linc676085|  楼主 | 2013-1-14 09:52 | 只看该作者
skertone 发表于 2013-1-11 16:22
我正好是先用中断方式做,想改成DMA方式,现在连触发传输动作都没有

楼主是不是发现 DMA 传输方式 发出的 ...

声音不应该说是失真,是听起来有“吃吃吃”的声音。

使用特权

评论回复
6
伊轩海| | 2015-1-8 11:31 | 只看该作者
楼主,能不能把代码共享一下,万分感谢!:loveliness:

使用特权

评论回复
7
Larm1| | 2017-4-27 14:07 | 只看该作者
好东西...

使用特权

评论回复
8
下一站守护| | 2019-2-27 11:07 | 只看该作者
楼主,能不能把你用中断方式传输数据的程序分享一下,谢谢!

使用特权

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

本版积分规则

1

主题

42

帖子

1

粉丝