码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • K210(SiPEED MaixBit)MicroPython使用参考(十、MAX98357A的I2S驱动)


    1.MAX98357A是美信(已被ADI收购)出品的数字脉冲编码调制(PCM)输入D类功率放大器,可提供AB类音频性能,同时具有D类的效率。器件在I2S模式下可提供最大15dB的增益。原理框图和时序图分别如下:

     

     此器件还有SD和GAIN两个引脚,功能及配置方法如下:

    2.以下是完整的驱动代码,K210(SiPEED MaixBit)的34,35,33引脚分别接MAX98357A的DIN,BCLK,LRC脚。volume( )用来设置音量大小,取值范围为0到100。MAX98357A在4-8Ω负载下最大可以提供3W的输出功率,由于其为I2S格式,需设置为I2S.STANDARD_MODE(即PHILIPS格式)。

    1. from fpioa_manager import fm
    2. from Maix import I2S, GPIO
    3. import audio
    4. # register i2s(i2s0) pin
    5. fm.register(34, fm.fpioa.I2S0_OUT_D1, force=True)
    6. fm.register(35, fm.fpioa.I2S0_SCLK, force=True)
    7. fm.register(33, fm.fpioa.I2S0_WS, force=True)
    8. # init i2s(i2s0)
    9. wav_dev = I2S(I2S.DEVICE_0)
    10. # init audio
    11. player = audio.Audio(path="/sd/test.wav")
    12. player.volume(30)
    13. # read audio info
    14. wav_info = player.play_process(wav_dev)
    15. print("wav file head information: ", wav_info)
    16. # config i2s according to audio info
    17. wav_dev.channel_config(wav_dev.CHANNEL_1, I2S.TRANSMITTER, resolution=I2S.RESOLUTION_32_BIT,
    18. cycles=I2S.SCLK_CYCLES_32, align_mode=I2S.STANDARD_MODE)
    19. wav_dev.set_sample_rate(wav_info[1])
    20. # loop to play audio
    21. while True:
    22. ret = player.play()
    23. if ret == None:
    24. print("format error")
    25. break
    26. elif ret == 0:
    27. print("end")
    28. break
    29. player.finish()

    3.需要注意的是,K210必须使用带语音功能的固件,即文件名含有“speech”字样,例如:https://cn.dl.sipeed.com/fileList/MAIX/MaixPy/release/master/maixpy_v0.6.2_83_gf0280db50/maixpy_v0.6.2_83_gf0280db50_minimum_speech_with_ide_support.bin所播放的wav文件,可以是自行录制的,录制方法:K210(SiPEED MaixBit)MicroPython使用参考(五、录音到SD卡)_SDAU2005的博客-CSDN博客_k210 sd卡也可在此下载:k210的音频测试文件,wav格式-Python文档类资源-CSDN文库,其中test.wav是左声道、右声道、立体声测试文件,music.wav是音乐音频测试文件,文件头信息分别如下:

    4.目前市面上主要有两种MAX98357A模块在售卖,如下图所示,两者功能、使用方法一致,仅外形颜色尺寸存在差异。实际上,MAX98357A是少有的具有功放的I2S语音DAC,且效率很高,体积也小,特别适用于便携式设备,个人认为值得强烈推荐,目前的问题是价格略高,期待国产替代。

    5.Maixduino版本的K210音频输出DAC芯片为PT8211,与此引脚、功能兼容的有TM8211,故而,MaixBit也可接载TM8211,不过需要设置align_mode=I2S.RIGHT_JUSTIFYING_MODE,实际上align_mode=I2S.LEFT_JUSTIFYING_MODE也可工作。不外接功放时RCH、LCH引脚分别接喇叭的正负极,声音很小,但能听见。

  • 相关阅读:
    [构造]Array 2022牛客多校第6场 A
    vue02模板语法
    我在Linux开发板上跑的第一个Qt程序
    springboot+vue实现excel的导出
    2022第8届中国大学生程序设计竞赛CCPC桂林站, 签到题4题
    【小沐学QT】QT学习之OpenGL开发笔记
    Rocky9.2基于http方式搭建局域网yum源
    数字孪生解决方案-最新全套文件
    杭电oj 2059 龟兔赛跑 C语言
    Oracle11g或19c imp/impdp导入记录
  • 原文地址:https://blog.csdn.net/weixin_41784968/article/details/126440488
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号