一、硬件介绍
1、产品特点
STM32H747I-DISCO开发板基于Arm的STM32H747XIH6微控制器拥有Cortex-M7内核(带双精度浮点单元,运行频率高达 480 MHz) 和 Cortex-M4内核(带单精度浮点单元,运行频率高达 240 MHz)的双核性能,板载配备2MB的Flash存储器和1MB的RAM、4英寸TFT LCD触摸显示屏(480x800) 具有MIPI DSI接口等;


规格参数

24 MHz 晶振(X1),用于USB OTG HS PHY 和摄像头模块;
25 MHz 晶振(X2),用于主时钟发生器和以太网 PHY;
32.768 kHz 晶体(X3),用于RTC;
25 MHz 晶振(X4),仅用于STLINK-V3E;
硬件框图


2、功能引脚示意图 / 原理图
主要原理图

二、功能硬件
1、数字MEMS麦克风
硬件介绍
STM32H747I-DISCO板上的U21(MP34DT05-A) 是一款MEMS数字全向麦克风,默认通过PDM(脉冲密度调制)输出;
麦克风(配置对应焊桥)也可以连接到U12(WM8994ECS/R,音频编解码器),音频编解码器为麦克风提供PDM时钟;
特性
单电源电压;
低功耗;
AOP:122.5 dBSPL;
64db 信噪比;
全向性灵敏度:-26 dBFS ±3 dB 的灵敏度;
PDM 输出;
SAI 接口
SAI 接口是一种串行音频接口,具有灵活性高、配置多样等特点,可支持多种音频协议;
SAI 接口可配置为支持 I2S 标准、LSB 或 MSB 对齐、PCM/DSP、TDM 和 AC’97 等协议,将音频模块配置为发送器时,SAI 接口可提供 SPDIF 输出;SAI通过两个完全独立的音频子模块来实现这种灵活性和可配置性, 每个模块都有自己的时钟发生器和 I/O 线控制器等;
MP34DT05-A 输出 1-bit PDM流,时钟频率通常为 1.024 MHz ~ 3.072 MHz; DFSDM 内部数字滤波器进行抽取,输出多比特 PCM;
抽取因子和相应频率


硬件引脚连接
CLK → 连接到 STM32 的 PE2 (SAI4_CK1);
DOUT → 连接到 STM32 的 PC1 (SAI4_D1);


原理图


2、LCD屏幕
硬件介绍
4 英寸 TFT-LCD 的分辨率为 480x800 像素,可显示高达 16.7M 种颜色,LCD 与微控制器之间的接口是一个 2-Lane MIPI 信号,带 MIPI DSI 接口;


特性
4 英寸 TFT 彩色 LCD
480(RGB)x800 像素
16.7M 色彩显示
最多两路 MIPI/DSI 数据
电容触摸屏支持单点触摸和手势,或双点触摸
LCD 和触摸屏共用 2.8V-3.3V 电源,背光使用 5V 电源
原理图



三、功能实现
通过使用 Edge Impulse 进行语音关键词识别模型训练;
将训练好的模型部署到开发板上,当板载麦克风检测到预设的关键词时,开发板会进行相应的动作(控制相关外设);
1、模型训练
打开 Edge Impulse ,上传相关的语音数据,进行关键词训练;

主要关键词如下:
Hello STM32
打开绿灯、打开橙灯、打开红灯
打开蓝灯、打开所有灯、关闭所有灯
最后,模型训练结果 准确率为 96.7%;




导出训练好的模型
Quantized (int8) / Unoptimized (float32) :所需资源以及运行效果如下;


部署训练好的模型
然后点击下方的 build,进行构建 / 下载;
将导出的 xxx.pack(Arm Keil MDK CMSIS-Pack)导入到 keil 中;
2、创建工程
1、工程配置
打开 keil ,选择之前创建好的项目,在此基础上进行相关的开发;
2、pack库配置
1、导入训练好的 xxx.pack / 相关依赖 EI-SDK.pack ;


2、开启相关依赖 pack;



将相关的 输入原始特征 复制 到静态缓冲区 float features[] 中;


三、代码编写
效果:通过板载麦克风识别到的不同语音关键词,LCD屏幕和板载LED灯将执行相应的动作;
主要相关代码:
mian.c:
#include "main.h"
int main(void)
{
MPU_Config();
CPU_CACHE_Enable();
HAL_Init();
SystemClock_Config();
//初始化板载LED
BSP_LED_Init(LED1);
BSP_LED_Init(LED2);
BSP_LED_Init(LED3);
BSP_LED_Init(LED4);
// 初始化LCD
BSP_LCD_Init(0, LCD_ORIENTATION_LANDSCAPE);
UTIL_LCD_SetFuncDriver(&LCD_Driver);
AudioRecord(); // 语音识别
while (1)
{
HAL_Delay(500);
}
}四、程序烧录
1、连接USB数据线至开发板的STLINK-V3E接口;
2、分别选择 CM4 / CM7 程序,点击 Download 分别烧录程序到开发板上;
五、效果演示
我要赚赏金
