MAX98357、MAX98357A、MAX98357B小巧、低成本、PCM D类IIS放大器,具有AB类性能中文说明规格书

前言:

MAX98357A支持标准I2S数据,MAX98357B支持左对齐数字音频数据。两个版本均支持8通道TDM音频数据。
IIS数字功放MAX98357开发板/评估系统

MAX98357 WLP-9(1.347x1.437mm)封装的外观和丝印AKM

MAX98357 WLP-9(1.347x1.437mm)封装的外观和丝印AKM

MAX98357 TQFN-16-EP(3x3mm)封装的外观和丝印AKK

MAX98357 TQFN-16-EP(3x3mm)封装的外观和丝印AKK

引脚说明

WLP和TQFN引脚定义

WLP管脚 TQFN管脚 名称 功能
A1 4 SD_MODE 关机和声道选择。SD_MODE拉低以将设备置于关机状态。在 I2S 或 LJ 模式下,SD_MODE选择数据通道(表 5)。在TDM模式下,SD_MODE和GAIN_SLOT都用于声道选择(表7)。
A2 7, 8 VDD 电源输入
A3 9 OUTP 正扬声器放大器输出
B1 1 DIN 数字输入信号
B2 2 GAIN_CLOT 增益和通道选择。在 I2S 和 LJ 模式下确定放大器输出增益(表 8),在 TDM 模式下,用于带有 SD_MODE 的通道选择(表 7)。在TDM模式下,增益固定为12dB。
B3 10 OUTN 负扬声器放大器输出
C1 16 BCLK 位时钟输入
C2 3, 11, 15 GND
C3 14 LRCLK 帧时钟。I2S 和 LJ 模式的左/右时钟。TDM模式的同步时钟。
5, 6,12, 13 NC 无连接
EP 裸露焊盘。裸露的焊盘未在内部连接。将裸露的焊盘连接到实心接地平面以进行散热。

表 5.SD_MODE控制

控制原理是MAX98357该引脚有一个100K下拉电阻,与外接的电阻分压,分压不同对应不同的通道或关闭MAX98357,这个如果不做低功耗,可以直接电阻分压,不使用该引脚。将该引脚与MCU连接时,MCU最好设置为开漏输出。
MAX98357 SD_MODE控制原理

MAX98357 SD_MODE控制原理
SD 模式状态 SD 模式状态 所选通道
VsD MODE > B2 跳变点(1.44V)
通过 RSMALL 上拉 B2 跳变点(1.44V) > VSD_MODE > B1 跳变点(0.77V)
通过 RLARGE 上拉 B1 跳变点(0.77V) > VSD_MODE > B0 跳变点(0.16V) (左/2 + 右/2)
B0 跳变点(0.16V) > VsD MODE 关闭

表 6.SD_MODE上拉电阻值示例

逻辑电压电平 (VDDIO)(V) RSMALL (kQ) RLARGE (kQ)
1.8 69.8 300
3.3 210.2 634

表 8.增益选择

GAIN_SLOT 引脚 12S/LJ 增益 (dB)
通过 100kQ 连接到 GND, ±5%电阻 15
连接到 GND 12
悬空,不连接 9
连接到 VDD 6
通过 100kQ 连接到 Vpp ,±5%电阻 3

一般描述

MAX98357A/MAX98357B 是一款易于使用、低成本

### 遍历 `std::map` 的方法 在 C++ 中,可以采用多种方式来遍历 `std::map` 容器。以下是两种主要的方式:正向遍历和反向遍历。 #### 正向遍历 通过迭代器实现的正向遍历能够按照键值顺序访问每一个元素。下面展示了利用增强型for循环以及传统while循环来进行操作的具体实例[^2]: ##### 使用增强型 for 循环 这种方式简洁明了,适合于不需要修改容器内数据的情况。 ```cpp #include <iostream> #include <map> int main() { std::map<int, std::string> myMap; // 假设已经填充了一些数据到myMap for (const auto& pair : myMap) { std::cout << "Key: " << pair.first << ", Value: " << pair.second << '\n'; } } ``` ##### 利用 while 循环配合迭代器 此法提供了更灵活的操作空间,允许开发者执行更为复杂的逻辑处理。 ```cpp #include <iostream> #include <map> int main() { std::map<int, std::string>::iterator it = myMap.begin(); while(it != myMap.end()) { std::cout << "Key: " << (*it).first << ", Value: " << (*it).second << "\n"; ++it; } } ``` #### 反向遍历 当需要逆序访问 map 中的数据时,则可借助 reverse_iterator 来完成这一目标。同样存在基于 for 和 while 实现的不同版本: ##### 采用 for 进行反向遍历 这种方法简单直观,易于理解和维护。 ```cpp #include <iostream> #include <map> int main() { for(auto rit=myMap.rbegin(); rit!=myMap.rend();++rit){ std::cout << "Key: " << rit->first << ", Value: " << rit->second << "\n"; } } ``` ##### 应用 while 结合 rbegin/rend 方法 给予程序员更大的自由度去控制流程走向。 ```cpp #include <iostream> #include <map> int main() { std::map<int,std::string>::reverse_iterator rit=myMap.rbegin(); while(rit!=myMap.rend()){ std::cout << "Key: " << rit->first << ", Value: " << rit->second << "\n"; ++rit; } } ``` 以上就是关于如何在 C++ 中遍历 `std::map` 的介绍及其具体实践案例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值