OpenEdv-开源电子网

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

利用stm32的pwm还原wav格式声音的疑问

[复制链接]

9

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2019-5-24
在线时间
21 小时
发表于 2020-6-6 10:33:18 | 显示全部楼层 |阅读模式
本帖最后由 山峡智人 于 2020-6-6 10:43 编辑

我的思路是这样的:把wav格式的声音文件转成bin格式后存到25q64中,然后stm32读出来,利用pwm来模式da(我用的型号不带da)发声,现在不清楚的有2点。
(1)Bin文件是比较大的,有50K左右,然后在程序定义一个这么大的Buff是不合理的。
(2)跟声音有关的最重要的2个特点就是采样率和采样值,我用的是16K ,8Bit。我网上搜索了下,有些朋友是采用2个定时器来实现,一个实现频率,一个实现占空比,但是具体怎么跟Bin文件对应起来?
  还望有经验的大牛指点下迷津,多谢!

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

使用道具 举报

12

主题

3398

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8672
金钱
8672
注册时间
2020-5-11
在线时间
4139 小时
发表于 2020-6-6 11:18:40 | 显示全部楼层
本帖最后由 LcwSwust 于 2020-6-6 11:29 编辑

建议:软件模拟FIFO,主循环读取25Q64数据存入FIFO,定时器16K从FIFO取数据到PWM,PWM频率可以40K以上越高越好。
PWM输出IO可以串个100uf电容到耳机听一下试试,当然最好还是PWM加低通滤波后再到功放推动喇叭。
FIFO参考:
http://www.openedv.com/forum.php ... hlight=%B6%D3%C1%D0

pwm也可以为16K的整数倍,如32K,2分频中断里读取数据,就省去了16K定时器。
专治疑难杂症
回复 支持 反对

使用道具 举报

9

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2019-5-24
在线时间
21 小时
 楼主| 发表于 2020-6-15 10:51:01 | 显示全部楼层
@LcwSwust,谢谢。现在声音是有了,但是很小,而且声音块结束的时候伴随着刺耳的啸叫声,怎么破?
回复 支持 反对

使用道具 举报

9

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2019-5-24
在线时间
21 小时
 楼主| 发表于 2020-6-16 08:15:10 | 显示全部楼层

已经搞好了,谢谢大家!
回复 支持 反对

使用道具 举报

2

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
280
金钱
280
注册时间
2019-5-8
在线时间
81 小时
发表于 2020-6-16 20:44:57 | 显示全部楼层
你好楼主,我也在尝试用PWM模拟DAC播音,有些参数不懂求指点迷津。非常谢谢
回复 支持 反对

使用道具 举报

9

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2019-5-24
在线时间
21 小时
 楼主| 发表于 2020-6-18 20:01:27 | 显示全部楼层
哪里不懂说下看,我如果知道一定告知
回复 支持 反对

使用道具 举报

1

主题

38

帖子

0

精华

高级会员

Rank: 4

积分
664
金钱
664
注册时间
2020-5-17
在线时间
124 小时
发表于 2020-6-23 13:41:20 | 显示全部楼层
楼主能发下代码吗?定时器频率设置为多少?
回复 支持 反对

使用道具 举报

9

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2019-5-24
在线时间
21 小时
 楼主| 发表于 2020-7-11 14:26:05 | 显示全部楼层
我是设置成16K
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2020-7-20
在线时间
38 小时
发表于 2020-7-26 17:47:47 来自手机 | 显示全部楼层
最近在搞语音模块,是用到pwm+dma去读取传输音频数据改变占空比
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2020-7-20
在线时间
38 小时
发表于 2020-7-26 17:48:47 来自手机 | 显示全部楼层
但是目前遇到问题是采样频率与Pwm频率应该怎么选,还有RC截止频率选多大
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2020-7-20
在线时间
38 小时
发表于 2020-7-26 17:49:25 来自手机 | 显示全部楼层
16K 16bit的音频数据
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2020-7-20
在线时间
38 小时
发表于 2020-7-26 17:49:56 来自手机 | 显示全部楼层
楼主有程序嘛,可以参考参考不
回复 支持 反对

使用道具 举报

9

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2019-5-24
在线时间
21 小时
 楼主| 发表于 2020-8-20 19:52:50 | 显示全部楼层
PWM输出是160K,是16K的10倍
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 11:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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