这是什么鱼| 牛奶和什么不能一起吃| 连铁是什么器官| 死精吃什么能调理成活精| 液基薄层细胞学检查是什么| 血脂高吃什么水果最好| 左眉上方有痣代表什么| 21三体综合征是指什么| 巴图是什么意思| 太阳穴胀痛是什么原因| 开户名是什么| 办出国护照需要什么手续| 不畏将来不念过往什么意思| 兰蔻属于什么档次| 宫颈小有什么影响| 胎盘分级0级什么意思| 标间是什么意思| 十月初八是什么星座| 淋巴结节吃什么药最好| 乳香是什么东西| 糖尿病不能吃什么水果| 韩五行属什么的| 0元购是什么意思| 吃什么帮助消化通便| 什么是梅毒| 水是什么生肖| 吃什么补眼睛| 后天是什么意思| 卖酒需要办理什么证| 尿结石什么症状| 酸辣粉是什么粉| s代表什么| 那天离开你是什么歌| 什么时辰出生最好| 今天什么地方地震了| 水煎是什么意思| 理想主义是什么意思| 崩溃什么意思| 杜甫世称什么| 二月二是什么节| 龟苓膏不能和什么一起吃| 眼睛红血丝多是什么原因| 中药龙骨是什么东西| alpaca是什么意思| 脑动脉硬化是什么意思| 被蛇咬了挂什么科| 女生什么时候最想要| 子嗣是什么意思| 什么是丛林法则| 壁虎长什么样| 什么是绩效工资| 貔貅和麒麟有什么区别| 一九九二年属什么生肖| wwe是什么意思| 2009年出生属什么| 喝什么茶去火| 鱼翅是什么| 女强人是什么意思| 高考用什么笔| 什么是u| 冰镇情人果是什么水果| 腺体肠化是什么意思| 脚趾甲真菌感染用什么药| aigle是什么牌子| 小孩上吐下泻吃什么药| 蚊子喜欢叮什么样的人| 专员是什么职位| 鲔鱼是什么鱼| 脚没力气是什么原因| 金玉良缘是什么生肖| 一动就大汗淋漓是什么原因| 拔完智齿后需要注意什么| 1946年属什么生肖| 梦见换房子是什么预兆| 丽江机场叫什么名字| 肾病综合症是什么病| 补气血喝什么汤| 努尔哈赤和皇太极是什么关系| 五月10号是什么星座| 团委书记是什么级别| 乙肝有抗体是什么意思| 为什么晚上血压比白天高| 什么鱼最好养不容易死| 风热感冒是什么意思| 大熊猫为什么有黑眼圈| 2月份生日是什么星座| 进贡是什么意思| 两脚发热是什么原因| 空调睡眠模式是什么意思| 吃葵花籽有什么好处和坏处吗| 什么运动长高最快| 伴侣是什么| 令是什么生肖| 5月13号是什么星座| 睡觉嗓子干是什么原因| 羊肉和什么菜搭配最好| 什么是绿茶女| 脸部浮肿什么原因| 脸红什么| poscer是什么牌子手表| 眼屎多用什么眼药水好| 父亲送什么礼物| 10.25是什么星座| 乙肝阻断针什么时候打| 总掉头发是什么原因| 孔雀开屏是什么行为| 甲床是什么| 郡字五行属什么| 深化是什么意思| 天线宝宝都叫什么名字| 小孩腹泻吃什么药好得快| 风是什么| 小马过河的故事告诉我们什么道理| 辅警政审主要审些什么| 秦始皇为什么焚书坑儒| 渗透压是什么意思| 什么人不适合做纹绣师| 黄芪什么时候种植| 大限将至什么意思| 马齿苋治什么病| 脚肿看什么科| 治胃病吃什么药| 治疗幽门螺旋杆菌用什么药| mac代表什么| 口红用什么能洗掉| 料酒是什么| 相顾无言是什么意思| lv是什么| 中央党校什么级别| 牛奶为什么能解辣| 犯规是什么意思| 实操是什么意思| 拔牙后吃什么药| 拜戈手表属于什么档次| 过是什么结构| 可以是什么意思| times什么意思| 房颤吃什么药| 0中间有一横是什么字体| 农历什么年| 牙龈肿痛上火吃什么药最好| 铊是什么东西| 眉毛里面长痘痘是什么原因| 生吃黄瓜有什么好处| 大姨妈推迟什么原因| 什么情况下挂疼痛科| 发扬什么精神| 卵巢增大是什么原因引起的| 米西米西是什么意思| 十滴水泡脚有什么好处| 亭亭净植的亭亭是什么意思| 睾丸是什么东西| 治安大队是干什么的| 天铁是什么| 回民不能吃什么| 邋遢是什么意思| 1991年五行属什么| 鱼腥草与什么相克| 交感神经型颈椎病吃什么药| 晚上十点是什么时辰| 韭菜吃多了有什么坏处| 尿素高吃什么药| 九牛一毛什么意思| 降肝火喝什么茶| 复配是什么意思| 急性结肠炎什么症状| 低筋面粉适合做什么| 生理期吃什么水果| 木瓜什么味道| 孕妇什么时候吃dha效果比较好| 马拉色菌毛囊炎用什么药治疗最好| 疯狂动物城狐狸叫什么| 孕妇鼻子出血是什么原因| 犯太岁是什么意思| 胃反酸吃点什么能缓解| 教皇是什么意思| 新疆有什么好吃的| 001是什么意思| 皮炎用什么药膏| 什么情况下做冠脉ct| 锁骨是什么骨| 高血糖喝什么茶好| 小孩小腿疼是什么原因引起的| 窦性心律不齐是什么原因引起的| 晚上夜尿多是什么原因| 毒奶粉是什么游戏| 什么叫白内障| 发扬什么词语搭配| 千克又叫什么| 有什么好听的歌曲| 发癫是什么意思| 土方是什么| 意外流产有什么症状| 什么是电汇| 重水是什么水| 吃了避孕药有什么反应| 新加坡属于什么气候| 伤官什么意思| 口是什么意思| 什么是假性银屑病| 黄飞鸿属什么生肖| 惨不忍睹是什么意思| sheen是什么牌子的手表| 用激素药有什么副作用| 南非用什么货币| 学业有成是什么意思| 婴儿眉毛上黄痂是什么| 小别胜新婚是什么意思| 什么叫做焦虑症| 六度万行 是什么意思| 什么是家庭| 植鞣皮是什么皮| 色觉异常是什么意思| 投诉医生打什么电话| 泌乳素高有什么影响| lcp是什么意思| 什么东西止血最快最好| 今天突然拉稀拉出血什么原因| 到底为了什么| 巴结是什么意思| 心慌心悸吃什么药| 玩手机头疼是什么原因| 肠胃感冒吃什么| 一意孤行是什么意思| 刚生完孩子可以吃什么水果| 浙大校长什么级别| 牛什么饭| 丁香茶有什么作用和功效| 拉抽屉是什么现象| 什么是变态| 一六年属什么生肖| 卵巢早衰吃什么可以补回来| 甘油三酯低是什么原因| 肝区在什么位置| 张学良为什么被囚禁| 闺蜜生日送什么礼物好| 谷旦是什么意思| 炎细胞是什么意思| hcg是什么激素| 情何以堪是什么意思| 团宠是什么意思| 清水文是什么意思| 为什么会低钾| 麻薯粉是什么粉| 拉肚子不能吃什么食物| 签发是什么意思| 查转氨酶挂什么科| 白酒优级和一级有什么区别| 吃什么食物能养肝护肝| 肚子不舒服吃什么药| 杏仁和什么不能一起吃| 痔疮初期症状是什么| 1926年属什么| 鱼生是什么| 焦虑会引起什么症状| 联手是什么意思| hpv是什么病| 痰栓是什么意思| 孕酮偏高说明什么| 谛听是什么| 老铁是什么意思| 蜡烛燃烧会产生什么| 表是什么意思| 男性婚检都检查什么项目| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 活动中心 ? 板卡试用 ? 【分享开发笔记,赚取电动螺丝刀】使用ESP32S3调试I2S音频模块MAX983

共9条 1/1 1 跳转至

【分享开发笔记,赚取电动螺丝刀】使用ESP32S3调试I2S音频模块MAX98357 22

专家
2025-08-04 19:35:35   被打赏 22 分(兑奖)     打赏
百度 抛开竞争对手不谈,得先跟自己比一比,本篇文章就来对比一下,5款配置中哪款性价比更高、更合适。

学习I2S有一段时间了,基本上理解了I2S的工作方式和逻辑波形构成。和预想的不一样,I2SI2C的其区别还是挺大的,最明显的就是模式上,I2S有左对齐、飞利浦、右对齐以及PCM四种方式,方式不一样,输出数据波形就会有不同。按照这个理解,意味着对接的I2S音频转换芯片,一样会有不同的工作方式,而不是像音频放大器那样,简单对接音频输入就行。

为了进一步学习I2S音频转换芯片从输入到输出的变化,买了一个MAX98357模块。MAX98357模块已经有专门的帖子介绍了。前面说过了I2S数据有不同的工作方式,但MAX98357模块提供的几个引脚中,看不到能适配工作模式的引脚,也没有看类似于TLV320AIC23B那样的控制接口配置工作参数,看资料说MAX98357是固定工作于PCM编码模式的。但是如果不用飞利浦标准模式设置ESP32S3的I2S的话,输出的声音不正常。

为了快速体验I2S的整个工作效果,没继续花时间去了解MAX98357,而是直接上手试验。I2S的主体使用ESP32S3模块,在Arduino环境下进行编程测试。

ESP32S3模块:

 

图片1.png


 MAX98357模块:

图片2.png

 

 

两个模块的连接方式:

ESP32S3模块                MAX98357模块

------------------------------------------------

3.3V                         Vin

GND                        GND

GPIO6                      DIN

GPIO8                      LRC

GPIO9                      BCLK

3.3V                         SD

                                GAIN(控制增益,悬空即可)

------------------------------------------------

需要在Arduino下的开发板管理器中安装ESP32S3,我选择的是ESP32S3 Dev Module

程序代码如下:


#include <Arduino.h>
#include "driver/i2s.h"
 
// I2S 配置参数
#define I2S_BCLK 9
#define I2S_LRC  8
#define I2S_DOUT 6
 
// 音频参数
#define SAMPLE_RATE 44100
#define SAMPLE_BITS 16
#define BUFFER_SIZE 1024
 
// 生成正弦波测试音频
void generateSineWave(int16_t* buffer, size_t samples, float frequency, float volume) {
  static float phase = 0.0;
  float phaseIncrement = 2 * PI * frequency / SAMPLE_RATE;
  
  for (size_t i = 0; i < samples; i++) {
    buffer[i] = volume * sin(phase) * 32767; // 16位有符号整数范围
    //Serial.println(buffer[i]);
    phase += phaseIncrement;
    if (phase >= 2 * PI) phase -= 2 * PI;
  }
}
 
 
void setup() {
  Serial.begin(921600);
  
  // 配置 I2S
  i2s_config_t i2s_config = {
    .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX),
    .sample_rate = SAMPLE_RATE,
    .bits_per_sample = (i2s_bits_per_sample_t)SAMPLE_BITS,
    .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
    .communication_format = I2S_COMM_FORMAT_STAND_I2S,
    //.communication_format = (i2s_comm_format_t)(I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB),
    .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
    .dma_buf_count = 4,
    .dma_buf_len = BUFFER_SIZE,
    .use_apll = false
  };
 
  i2s_pin_config_t pin_config = {
    .bck_io_num = I2S_BCLK,
    .ws_io_num = I2S_LRC,
    .data_out_num = I2S_DOUT,
    .data_in_num = I2S_PIN_NO_CHANGE
  };
 
  // 初始化 I2S
  i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL);
  i2s_set_pin(I2S_NUM_0, &pin_config);
}
 
void loop() {
  int16_t audioBuffer[BUFFER_SIZE];
 
  // 生成 1000Hz 正弦波
  generateSineWave(audioBuffer, BUFFER_SIZE, 1000, 0.1);  
 
  // 通过 I2S 发送音频数据
  size_t bytesWritten;
  i2s_write(I2S_NUM_0, audioBuffer, sizeof(audioBuffer), &bytesWritten, portMAX_DELAY);
}

 

出于快速验证的目的,测试中没有使用播放MP3WAV等音频文件的方式,而是使用程序生成正弦波的采样点(利用sin函数),用来模拟正弦波。频率设置为1KHz,保证用扬声器能听到这个频率的声音。

 

整个实验装置及实验效果:

 

装置.png

使用的是8欧姆的喇叭,没想到声音还是挺大的,

演示视频文件:demo.zip

通过Arduino串口绘图仪获取的采样数据绘制的波形:

 

图片3.png


是正弦波。

注意:如果想从串口得到这个波形,需要在generateSineWave函数中去掉Serial.println(buffer[i]);的注释,但这样做会让声音变得不连续。

改变正弦波的频率和音量比例参数(generateSineWave函数中的第三个和第四个参数),喇叭声音会发生相应的变化。

 MAX98357的输出端(喇叭)获得的波形(由示波器测得):

 图片4.png


黄色的是喇叭两端得到的波形(有正弦波的模样,但不全,嘿嘿)。

按照我的理解,以44.1KHz采样1KHz的正弦波,采样周期为1/44.1KHz = 0.022mS1KHz的周期为1mS,也就是说,一个完整的1KHz的正弦波按照44.1KHz采样,只能采集到44个点。而1024个数据可以获得大约23个完整的正弦波形。不知道是不是因为loop循环处理的太快导致示波器测不到那么多正弦波。后面继续调整程序,以期获得理想的效果。或者播放音频文件试试,这样更容易判断处理是否正常。



专家
2025-08-04 22:22:53     打赏
2楼

感谢分享


专家
2025-08-04 22:24:31     打赏
3楼

感谢分享


专家
2025-08-04 22:28:36     打赏
4楼

感谢分享


高工
2025-08-04 21:46:12     打赏
5楼

I2S其实还不止这些,还有一种I2S叫I2STDM,从波形上来说,I2S属于特殊的TDM格式。


高工
2025-08-04 21:51:34     打赏
6楼

MAX98357属于D类功放,输出端要加滤波电路才能量到信号波形的,不然就全是脉宽调制的载波信号


高工
2025-08-04 12:59:02     打赏
7楼

期待后续使用音频文件来输出的效果。


专家
2025-08-04 17:28:06     打赏
8楼

很仔细的探索方式,学习了。


工程师
2025-08-04 10:35:49     打赏
9楼

蛮不错的I2S学习记录, 可以尝试使用INMP441 作为输入然后使用MAX98375作为输出


共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
吃饭吧唧嘴有什么说法 办护照照片有什么要求 荨麻疹用什么药 长期吃二甲双胍有什么副作用 汉朝后面是什么朝代
手抖是什么毛病 03属什么生肖 总恶心是什么原因 睫角守宫吃什么 孕妇吃什么水果比较好
盼头是什么意思 势利是什么意思 吃什么能 来月经喝红糖水有什么好处 裂帛是什么意思
牙签肉是什么肉 安逸什么意思 瑞舒伐他汀什么时候吃最好 月经量少发黑是什么原因 大三阳转小三阳意味着什么
靠北是什么意思hcv9jop1ns7r.cn 黑头发有什么好处hcv9jop8ns0r.cn 手机飞行模式是什么意思hcv8jop4ns9r.cn 尿黄是因为什么hcv8jop3ns2r.cn 亲子鉴定需要什么材料hcv9jop1ns1r.cn
冰雹是什么季节下的hcv9jop0ns7r.cn 考药师证需要什么条件hcv8jop1ns4r.cn 什么水果通便hcv8jop3ns5r.cn 都字五行属什么hkuteam.com 肝硬化是什么原因引起的hcv9jop4ns8r.cn
什么假什么威hcv8jop7ns7r.cn 磺胺是什么药hcv8jop3ns2r.cn iga是什么gysmod.com 减肥适合吃什么主食hcv8jop8ns5r.cn pas是什么意思hcv7jop9ns0r.cn
微波炉什么牌子好hcv8jop1ns0r.cn 营卫是什么意思hcv8jop6ns1r.cn 胆囊炎吃什么中成药hcv9jop7ns4r.cn 一个大一个多念什么helloaicloud.com 恭送是什么意思gangsutong.com
百度