一路PWM三阶RC滤波语音输出-噪声问题

项目场景:

很多MCU内部没有DAC,但是芯片应用在需要DAC的场景,此时需要用PWM波模拟DAC输出。

有一路PWM和多路PWM波实现方式,取决于项目要求以及MCU性能

单路PWM波:MCU主频相对较高,项目对DAC精度要求低。

多路PWM波,MCU主频相对较低,项目对DAC精度要求高。


问题描述

使用单路PWM输出时,有噪音输出。输出结构如下:

PWM波  ->   RC滤波电路  ->  功放芯片/8002  ->  喇叭

PWM波:一路PWM,由一个8位定时器产生,频率在64K

RC滤波电路:使用三阶RC滤波,其中R1C1=R2C2=R3C3=RC,所以截止频率

f=\frac{1}{2*pi*RC}

功放芯片:使用8002

喇叭:8欧1W


原因分析:

噪声来源一:定时器输出频率波动

噪声来源二:功放输出不稳定

噪声来源三:滤波电路对PWM波处理有杂波

如果直接输出一段音频,有噪音的出现,此时无法很好的定位问题来源是哪一点。

这里采用一些方法来排除一些噪声源。

(1)输出正弦波,通过示波器观察RC滤波后的波形,分析滤波电路对PWM波处理有杂波

PWM数据;

 示波器显示:

RC滤波后:

 

 可以看出RC滤波后正弦波是正常的,稍微有点变形,但是并无异形和封底顶。

(2)输出基准电平(50%的占空比方波),分析定时器输出频率波动和功放输出问题

        2.1查看语音wav转的bin文件,索引信息后数据都是0x80.

        2.2烧录文件和程序后,测量PWM输出,波形如下图,是正常的。此时喇叭周期性的有噪音输出。功放使能和PWM波同时输出。

        

         2.3 保持功放使能,循环播放语音。此时喇叭周期性的有噪音输出。

        检查发现采用FIFO方式在定时器里面读出并更新PWM,由于FIFO读出时间不稳定导致更新PWM波的频率有波动,从而产生噪音。

        解决方法:把FIFO读出数据放到外面,提前准备好,修改后喇叭周期性的噪音没有了。

        进一步测试发现上电时有一点噪音输出。

        2.4分析上电瞬间有噪音输出

        原因分析可能是PWM刚开始输出的跳变或者功放刚上电不稳定输出导致。

        进一步测试:

        1.上电后先输出PWM波5s后打开功放使能,此时功放使能瞬间有一个噪声

        2.上电后先打开功放使能5s后输出PWM波,此时有两个噪声,刚上电时以及5s后输出PWM时。

        通过波形和结果可以分析出:上电噪声有两个原因

        A.功放使能时功放内部输出的噪声。

        B.PWM波刚输出时产生一个跳变信号,从而产生的噪声。

功放的上电噪音可以在输出端加入滤波电容进行消除,因为这个和具体的功放有关系,可能有些功放没有上电噪音,没有进一步测试。


解决方案:

1.同过正弦波调整RC滤波,使得波形尽量如同正弦波

2.使用时先输出PWM波后在开功能使能,这样只有一个功放使能时内部噪声。

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PAOPAO824

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值