找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2111|回复: 1
收起左侧

PWM播放MP3原理

[复制链接]
ID:711632 发表于 2020-3-19 15:37 | 显示全部楼层 |阅读模式
PCM音频输出,实际是一个DA转换的过程。而PWM接口输出端接RC滤波电路,不同的PWM占空比可以设定RC电路后端能输出不同的电压。
例如,PCM的格式为22050Hz采样率,16bit采样精度,单声道,无数据类型。则要求PWM输出较高频率的载波(频率超高,RC越容易过滤,能量分布越均匀),每隔1/22050=45us切换一次占空比,占空比的精度同样16bit或以上,即可完整的播放出声音。
由于PWM为数位电路,有数位限制。sv6x66芯片最大12bit 占空比精度,并随着频率的增大,精度的位数会下降:
PWM频率 = 总线时钟 /占空比范围
例如总线时钟80M,当占空比精度位8bit时,PWM最大频率313.725KHz
1.  播报机PWM播放实例
SDK地址:repo/tiramisu/turismo/sdk/dev/SSV.tiramisu.6x66.18Q4_announcer             R991版本
1、申请FiFo,用于helix与PWM的数据通信

2、初始化PWM与定时器

3、定时器每隔45us从Fifo中读出数据,如果有数据,则修改占空比

4、解码器输出数据处理
a)     由于PWM使用8bit精度,而MP3解码后是16bit精度,所以右移8位,去掉低位数据
b)     由于MP3解出来的精度带符号的,所以需要+128,让所有数据转换为正数
c)     当需要调整音量时,可以按比例调整outBuf的值,然后再右移与+128
d)     注意duty不要超过255或小于0

2.  实测效果
编译固件make clean;make setup p=announcer;make
目前使用GPIO 02为PWM输出,GPIO 01控制PA开关
输入:AT+PLAY_AMOUNT1000000可以听到"xxxxx"
回复

使用道具 举报

ID:1 发表于 2020-3-19 23:37 | 显示全部楼层
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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