找回密码
 注册
关于网站域名变更的通知
查看: 251|回复: 1
打印 上一主题 下一主题

51 开源 180MHz-PWMA-播放立体声音乐@STC32G12K128, USB-CDC实时传输音频

[复制链接]
  • TA的每日心情
    奋斗
    2023-8-17 15:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
     楼主| 发表于 2023-11-20 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    51 开源 180MHz-PWMA-播放立体声音乐@STC32G12K128, USB-CDC实时传输音频
    ' l% `8 y2 E. @" s* s; O. P
    WAV播放程序使用说明
    1、简介
    建议用户直接下载"Objects"里的"audio-play.hex"测试. 下载时选择主频30MHz
    WAV播放器使用STC32G12K128运行,mcu内部HIRC工作于30MHzPLL180MHzPWM时钟,6分频30MHzCPU-系统时钟。
    两路HS-PWM工作时钟为180MHzPWM周期为4097,输出PWM频率大约为44KHz(CD采样率44.1KHz相近),占空比为12位。
    本播放程序支持以下WAV文件的播放,由【STC-ISP | 调试接口 |播放WAVE】界面通过 USB-CDC 虚拟串口/就是串口下传音频数据:
    支持PCMADPCMA-Law
    支持16位无压缩(CD音轨)WINDOWS PCM格式,单声道或双声道采样率最高支持44.1KHz
    支持IMA-ADPCM格式,单通道或双通道采样率最高支持44.1KHz
    支持A-law(A)格式,单通道或双通道采样率最高支持44.1KHz
    语音解码算法可能看似跟网上的有差异,但算法实际是一样的,我只是将其简化操作而已。各种算法可以网搜相关知识,但不在本文讨论之列。
    2、输出滤波电路
    输出PWM要经过低通滤波器获得光滑的模拟信号输出,请参考下图的电路:3阶巴特沃斯低通滤波器。
    $ {$ i/ O1 h1 d8 w5 r
    PWMA1P--P1.0左声道,    PWMA3P--P1.4右声道。
    左右声道完全一致,以左声道为例,PWM信号经过R1R2分压适当衰减后与C1组成第一阶RC低通滤波,将变化陡峭的PWM的高频谐波滤除,再送到运放组成的二阶低通滤波电路滤波输出,就得到模拟信号,经过C4隔直后得到交流信号,从3.5mm的立体声插座输出。用户可以用SPWM输出一个1000Hz正弦波来评估其性能。
    上图参数为对应16KHz采样的输出,转折频率为不超过采样频率的一半即可。
    要改成别的采样频率,则按比例改变电容即可,电阻不变。
    注意:图中零件不是随便取的,是经过精心计算的,无源一阶低通、有源二阶低通的截止频率和Q值都不同,两者串联才能得到最终的输出响应。
    模拟滤波器相关的知识不在本文讨论范畴,用户可以自行复习模拟电子技术基础的相关章节。
    ; i( v: H* K7 A' ?
    3、使用“屠龙刀三”核心板验证
    本程序使用STC公司的“屠龙刀三”核心板验证,用户可以自行修改到自己的系统上。
    与“屠龙刀三”核心板的连接:
    将上述的P1.0P1.4VCCGND连接到核心板的对应焊盘即可,最好断开板上R107R108两个0欧姆电阻,避免其电路影响PWM信号。
    板上的P3.2按键为播放键,P3.3按键为停止键。
    P2.7为每个采样解码时间指示(高电平时间),用示波器观察。
    P2.0为播放指示灯,正在播放时输出低驱动LED亮。
    P2.1CDC接收数据包指示,每收到一包(64字节)就取反一次,下传数据一块为1024字节,分16个包传输。
    P2.4MCU请求PC传输数据的提示,从请求开始P2.4输出高电平,之后收到第一包数据(64字节)输出低电平,用示波器观察。
    4、下载程序
    下载程序和CDC通信均使用板上TYPE-C接口实现。打开STC-ISP V6.92G或更高版本。
    打开程序文件,即打开"Objects"里的"audio-play.hex"文件。
    : g& G, R+ s( n. \% ~
    USB TYPE-C延长线将“屠龙刀三”核心板与PC连接,持续按下P3.2按键,短按OFF键释放,1秒后释放P3.2按键,STC ISP就能自动识别到设备:

    " V8 g2 q& a% j; I) O3 N
    点击下载按钮,将程序下载到MCU中。

    ; E: c% J) L. n0 a$ a2 E5 ]
    5、播放设置

    6 Z8 Q7 {! T  V' \/ c
    此时STC ISP已能自动识别播放程序的CDC通信口,下图的“扫描”里显示的就是CDC串口。
    + H$ E) j4 S7 z$ U
    点击“STC调试接口”,选择“播放Wave(P)”,见下图:

    8 T, J. |, x0 p7 W1 M" O
    点击“打开Wave”,选择要播放的Wave文件。
    Wave文件信息里会显示文件的重要信息:
        文件格式,目前只支持:1-PCM6-A law17-IMA ADPCM3种类型。
        通道数:1表示单声道,2表示立体声。
        采样率:不用解释。
        采样位数:就是一个采样点的位数,用户不用关心。
        数据大小:即声音的字节数。
    设置数据发送模式里的“每个数据包的大小(字节)”为1024
    勾选“第一包数据发送WAVE文件信息”
    选择“应答式发送”。
    点击“发送Wave数据”。

    2 I& J) x1 H: P6 o" P9 [; @% G
    之后,按一下板上的P3.2键开始播放,MCU请求的第一个数据包为14字节的上述文件信息,大端模式。
       Byte0Byte1WAV类型,0x0001-->PCM0x0006-->A Law0x0011-->IMA ADPCM
       Byte2:声道数,1(单声道)或2(立体声)。
       Byte3:采样位数,用户不用理会。
       Byte4~Byte7:采样率,Hz
       Byte8~Byte11:数据长度(字节数)。
       Byte12~Byte13BLOCK长度(ADPCM使用)
    后面请求发送的都是音频数据包,程序根据文件格式进行处理后送去PWM播放出声音。
    输出的声音要接功放和音箱才能听到传真度不错的音乐,使用32KHz44.1KHz的采样格式,普通音响将难以分辨其与320Kbps码率的MP3的音质有啥差别。

    : c+ p6 |" L. n; r+ g* R) b) i) u
    6、通信查询速度适配
    文件格式不同,采样率不同,就有不同的数据率,数据率越高,对通信的速度要求就越高。但是通信速度高,PCCPU占用率就高,这必须要平衡一下。

    / q+ l& \' X+ w/ N; ~% x* F" ^& H" s
    点击串口助手“更多设设置”,在“响应接收时间(查询周期)”的输入框中,根据数据率输入合适的值,时间短通信速度快,但电脑PC占用率会加大。
    + G2 ?  R; e# I
    下面为参考的时间设置:
    PCM  采样率    响应接收时间     数据率
        44.1KHz       0ms        176.4KB/S
         32KHz     1ms2ms     128KB/S
         16KHz     4ms5ms      64KB/S
    ) E1 R& U1 [4 x- M8 j& L7 [
    ADPCM 采样率    响应接收时间     数据率
        44.1KHz       5ms           44.1KB/S
          32KHz      10ms            32KB/S
         16KHz       10ms            16KB/S
    9 v; p! B1 I4 Y) E( }! W
    A law 采样率    响应接收时间     数据率
        44.1KHz    2ms3ms        88.2KB/S
         32KHz     4ms5ms         64KB/S
         16KHz       10ms            32KB/S

    2 E* a; }( F8 ]9 e8 c# ~/ D2 q% x9 D; J" f3 ~# U/ Q
    最后,将HIFI功放打开,8寸迷宫式二单元书架箱安排上,将重低音开最大,听着圆润的歌声和直拍心口的重低音鼓,等待隔壁邻居来敲门!

    7 [/ }* N6 L: G2 q% c9 ]4 r6 a3 f

    1 V, u4 i- C8 X; s
  • TA的每日心情
    奋斗
    2023-8-17 15:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
     楼主| 发表于 2023-11-20 09:26 | 只看该作者
    源代码在此链接
    8 _0 f- f; N$ r5 U" `7 L+ X2 ]* yhttps://www.stcaimcu.com/forum.php?mod=viewthread&tid=5116&extra=
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-12 23:41 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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