VSCode+CubeMX开发STM32笔记-I2S接口与MAX89357播放声音
使用VSCode+CubeMx开发STM32,这里介绍使用I2S接口连接MAX98357模块播放声音;
1.建立工程
1.1 创建项目文件
从已有的仓库中创建一个工程:
1 | git clone https://github.com/makerinchina-iot/vscode_stm32cubemx_hello.git MAX98357 |
使用VSCode打开工程后,需要更改如下名字:
- 文件夹根目录下CMakeLists.txt 文件中修改工程名字为MAX98357:
1 | set(CMAKE_PROJECT_NAME MAX98357) |
- stm32cubemx配置文件更改为 ntc.ioc ,并更改以下文件名:
1 | ... |
1.2 引脚配置
使用STM32CubeMx打开ioc配置文件,然后配置对应的I2S引脚;
2. 编写代码
2.1 i2s输出音频
配置好i2s接口后,直接使用i2s函数输出数据到MAX89357模块即可听到声音;
- 声音输出:
1 | HAL_StatusTypeDef res = HAL_I2S_Transmit(&hi2s1, (uint16_t *)voice8k16b, sizeof(voice8k16b) / sizeof(voice8k16b[0]), HAL_MAX_DELAY); |
- 声音测试数据
这里voice8k16b数组存放的即为测试音频数据,由如下代码生成:
1 | import numpy as np |
由于之前设置I2S接口的音频频率为8KHz,因此这里把mp3数据也转换为8KHz采样率的数据;
3.编译并烧录代码
3.1 编译和烧录
点击生成按键即可编译工程;
在VSCode中执行task:openocd-flash烧录;
3.2 硬件连接与结果
- 按照如下方式连接硬件:
STM32 | MAX89357 |
---|---|
3.3V | 3V3 |
PA7 (I2S1_SD) | DIN |
PA5 (I2S1_CK) | BCLK |
PA4 (I2S1_WS) | LRC |
GND | GND |
+ 接喇叭正极 | |
- 接喇叭负极 |
- 运行后可以听到声音播放;
著作权归本网站(https://makerinchina.cn)所有,转载请注明来自 MakerInChina.