码农知识堂 - 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引脚分别接喇叭的正负极,声音很小,但能听见。

  • 相关阅读:
    jQuery实现
    如何给Github上的开源项目提交PR?
    嵌入式学习之Linux驱动(第九期_设备模型_教程更新了)_基于RK3568
    数据分析报告这样写,才算真正读懂了数据
    Android---java内存模型与线程
    抖音视频删了怎么在电脑上找回来
    肿瘤标志物原料——博迈伦
    6.2.2 【MySQL】InnoDB中的索引方案
    word2vec原理
    【Sprig AOP】
  • 原文地址:https://blog.csdn.net/weixin_41784968/article/details/126440488
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号