你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32Cube的声级计库软件扩展

[复制链接]
STMCU小助手 发布时间:2022-7-19 16:00
引言
声级计库软件用户手册描述了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)测量板上的内存占用量。

91_A@0G$Q_W~`0ABC_}4RPP.png


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);


3D3[RAKRGJIX[}K9WXNM[9P.png

当实时处理尚未开始时,在初始化阶段,必须至少调用一次该例程。

2.1.2 smr_setParam函数
该例程从主框架将模块静态参数写入模块内存。可以在复位例程后,实时处理开始前对其进行调用。它负责处理静态参数(即模块处理期间参数值不能更改的参数)。
int32_t smr_setParam(smr_static_param_t *input_static_param_ptr, void *persistent_mem_ptr);


Q}372SDIN8QF%AG{{B0MV52.png

2.1.3 smr_getParam函数
该例程从模块内存为主框架获取模块静态参数。可以在复位例程后,实时处理开始前对其进行调用。它负责处理静态参数(即模块处理期间参数值不能更改的参数)。
int32_t smr_getParam(smr_static_param_t *input_static_param_ptr, void *persistent_mem_ptr);


%EWF7VLSDTIO[21JE47[{WG.png

2.1.4 smr_setConfig函数
该例程从主框架为模块内存设置模块动态参数。可以在处理期间的任何时间对其进行调用。
int32_t smr_setConfig(smr_dynamic_param_t *input_dynamic_param_ptr, void *persistent_mem_ptr);

{V(2M%UQUJ_5TN@N7RBIWVA.png


2.1.5 smr_getConfig函数
该例程从内部persistent memory为主框架获取模块动态参数。可以在处理期间的任何时间对其进行调用。
int32_t smr_getConfig(smr_dynamic_param_t *input_dynamic_param_ptr, void *static_mem_ptr);

H2MT~UY2FHTK[@E`M]H4CV0.png

2.1.6 smr_process函数
该例程是模块的主要处理例程。
随时可以被调用来处理每帧数据。
int32_t smr_process(buffer_t *input_buffer, buffer_t *output_buffer, void *persistent_mem_ptr);

$(J}SOF5KHLZSFOL0NIAF}8.png


完整版请查看:附件



DM00275616_ZHV1.pdf

下载

425.93 KB, 下载次数: 3

收藏 评论0 发布时间:2022-7-19 16:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版