OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2361|回复: 7

STM32PWM播放WAV音质不好原因小析

[复制链接]

17

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2020-5-8
在线时间
153 小时
发表于 2020-5-13 10:48:55 | 显示全部楼层 |阅读模式
本帖最后由 新洲罗远 于 2020-5-13 15:31 编辑

STM32PWM播放WAV音质不好原因小析
用呼吸灯例程改的WAV音频文件播放,音量大的时候有破音,原因何在?
8000HZ采样率8位音频。
我设置定时器用(计数器自动重装值=125,分频=72),也就是72000000/72/125=8000。
查资料,原来PWM没有自己单独的时钟,而是共用定时器时钟,也就是72000000/72=1000000
这样在每一秒钟8000次的中断中,每一次中断只能得到125个时钟,就是说脉宽只有125个等级,
而我们8位音频有256个等级,这就造成了消顶失真。
解决办法是,减少分频,保证定时器计数器自动重装值为256*8000,即是每次计时中断有256个计数。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-12-27
在线时间
0 小时
发表于 2020-5-13 10:48:58 | 显示全部楼层
帮顶,大家来帮忙解答一下。。
回复 支持 反对

使用道具 举报

34

主题

322

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1835
金钱
1835
注册时间
2014-12-4
在线时间
717 小时
发表于 2020-5-13 15:14:17 | 显示全部楼层
用DMA+定时器不知道音质怎么样,但是可以减少中断次数
回复 支持 反对

使用道具 举报

34

主题

322

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1835
金钱
1835
注册时间
2014-12-4
在线时间
717 小时
发表于 2020-5-13 15:15:24 | 显示全部楼层
我做的那个刚开始播放会滋啦一声。
回复 支持 反对

使用道具 举报

17

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2020-5-8
在线时间
153 小时
 楼主| 发表于 2020-5-13 15:30:20 | 显示全部楼层
刚开始播放会滋啦一声。
WAV文件头有许多信息,文件头后才是音频数据,如果从文件头播放,会有古怪的声音。
我也懒得分离文件头,就这样播放。
回复 支持 反对

使用道具 举报

17

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2020-5-8
在线时间
153 小时
 楼主| 发表于 2020-5-13 20:28:41 | 显示全部楼层
        TIM3_CH2_PWM_Init(250,36-1); //72000000/250/36=8000
试了一下,效果很好。
回复 支持 反对

使用道具 举报

2

主题

474

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6081
金钱
6081
注册时间
2018-6-27
在线时间
524 小时
发表于 2024-7-2 10:18:23 | 显示全部楼层
谢谢分享,学习学习。
回复 支持 反对

使用道具 举报

13

主题

166

帖子

0

精华

高级会员

Rank: 4

积分
791
金钱
791
注册时间
2018-12-19
在线时间
163 小时
发表于 2024-7-2 20:59:39 | 显示全部楼层
用DAC播放wav和mp3,效果很好。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 18:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表