
引言 声级计库软件用户手册描述了SoundMeterR(SMR)模块配置及其接口。 该用户手册描述了如何将模块集成到主程序,例如X-CUBE-AUDIO扩展软件中。它还提供了对基础算法的基本理解。 声级计库软件扩展适用于16或32位输入/输出格式。它是X-CUBE-AUDIO固件包的一部分。 1 模块概述 1.1 算法功能 SoundMeteR(SMR)模块负责在对数尺度上测量传入信号的电平。它以尺度转换、平滑滤波和加权滤波为基础。 当前实现对所有计算使用32位分辨率,可与16或32位输入/输出格式一起使用。支持的采样率为8 kHz、16 kHz和48 kHz。 1.2 模块配置 SMR模块支持单声道和立体声16位或32位I/O数据。其存储器受限于960个采样的最大输入帧大小,相当于10 ms的48 kHz立体声信号。 根据I/O格式、Cortex®内核和使用的工具链,有多个模块版本可供使用: • SMR_CM4_IAR.a / SMR_CM4_GCC.a / SMR_CM4_Keil.lib:适用于16位输入/输出缓冲区,在任何使用包含Cortex®-M4指令集的内核的STM32微控制器上运行。 • SMR_32b_CM4_IAR.a / SMR_32b_CM4_GCC.a / SMR_32b _CM4_Keil.lib:适用于32位输入/输出缓冲区,在任何使用包含Cortex®-M4指令集的内核的STM32微控制器上运行。 • SMR_CM7_IAR.a / SMR_CM7_GCC.a / SMR_CM7_Keil.lib:适用于16位输入/输出缓 冲区,在任何使用包含Cortex®-M7指令集的内核的STM32微控制器上运行。 • SMR_32b_CM7_IAR.a / SMR_32b_CM7_GCC.a / SMR_32b _CM7_Keil.lib:适用于32位输入/输出缓冲区,在任何使用包含Cortex®-M7指令集的内核的STM32微控制器上运行。 1.3 资源总结 表 1包含模块对存储器和频率(MHz)的要求。 使用:IAR Embedded Workbench for ARM V7.40(IAR Embedded Workbench common components v7.2)测量板上的内存占用量。 ![]() 2 模块接口 使用SRM模块时需要集成其两个文件:SMR_xxx_My.a/.lib库和smr_glo.h头文件。它们包含所有要导出到软件集成框架的定义和结构。 注: audio_fw_glo.h文件是通用头文件,它对于所有音频模块都通用且必须包含在音频框架中。 2.1 API 六个通用函数软件接口: • smr_reset函数 • smr_setParam函数 • smr_getParam函数 • smr_setConfig函数 • smr_getConfig函数 • smr_process函数 下面几节将分别描述每一个函数。 2.1.1 smr_reset函数 该例程初始化SMR模块的persistent memory,并使用默认值初始化静态和动态参数。 int32_t smr_reset(void *persistent_mem_ptr, void *scratch_mem_ptr); ![]() 当实时处理尚未开始时,在初始化阶段,必须至少调用一次该例程。 2.1.2 smr_setParam函数 该例程从主框架将模块静态参数写入模块内存。可以在复位例程后,实时处理开始前对其进行调用。它负责处理静态参数(即模块处理期间参数值不能更改的参数)。 int32_t smr_setParam(smr_static_param_t *input_static_param_ptr, void *persistent_mem_ptr); ![]() 2.1.3 smr_getParam函数 该例程从模块内存为主框架获取模块静态参数。可以在复位例程后,实时处理开始前对其进行调用。它负责处理静态参数(即模块处理期间参数值不能更改的参数)。 int32_t smr_getParam(smr_static_param_t *input_static_param_ptr, void *persistent_mem_ptr); ![]() 2.1.4 smr_setConfig函数 该例程从主框架为模块内存设置模块动态参数。可以在处理期间的任何时间对其进行调用。 int32_t smr_setConfig(smr_dynamic_param_t *input_dynamic_param_ptr, void *persistent_mem_ptr); ![]() 2.1.5 smr_getConfig函数 该例程从内部persistent memory为主框架获取模块动态参数。可以在处理期间的任何时间对其进行调用。 int32_t smr_getConfig(smr_dynamic_param_t *input_dynamic_param_ptr, void *static_mem_ptr); ![]() 2.1.6 smr_process函数 该例程是模块的主要处理例程。 随时可以被调用来处理每帧数据。 int32_t smr_process(buffer_t *input_buffer, buffer_t *output_buffer, void *persistent_mem_ptr); ![]() 完整版请查看:附件 |
DM00275616_ZHV1.pdf
下载425.93 KB, 下载次数: 3
STM32 GUI LTDC 最大像素时钟评估方法
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
STM32功能安全设计包,助力产品功能安全认证
基于STM32启动过程startup_xxxx.s文件经验分享
HRTIM 指南