2024-07-02
GR5526 GUI专题(4) - Lvgl字体的位图数组合并转换为bin文件的说明
写技术文章
精选推荐
Barton
前言
GR551x SDK1.7.0新增了对CMSIS-DSP的支持,本文用于介绍在SDK1.7.0中使用此DSP库的方法。
目录
一、CMSIS-DSP简介
二、使用CMSIS-DSP的步骤
第一步 在工程中添加库文件
第二步 添加include路径
第三步 启用FPU
第四步 增加相关宏定义
第五步 使用CMSIS-DSP
三、正弦数据生成实例
一、CMSIS-DSP简介
CMSIS DSP是ARM提供的一套DSP算法库,包含三角函数、向量运算、矩阵运算、数字滤波、傅里叶变换、统计函数等功能,可满足大部分的数字信号处理应用。
GR551x使用Cortex-M4F内核,支持浮点处理单元,配合CMSIS-DSP库可充分发挥其在数字信号处理方面的性能。
二、使用CMSIS-DSP的步骤
GR551x SDK1.7.0中,CMSIS-DSP相关文件根路径为:SDK_Folder\toolchain\cmsis\dsp,其中:
库文件CMSIS_DSP_CM4F_LE.lib在此路径下的lib\arm目录中;
头文件在此路径下的include目录中;
下面介绍在SDK1.7.0中如何使用此DSP库。
在工程Options中C/C++标签下的include paths中增加DSP相关头文件路径,如下图所示:
在工程Options中Target标签下的Floating Point Hardware中,选择Use Single Precision选项,如下图所示
GR551x系列为Cortex-M4F核,因此在工程Options中C/C++标签下的Define编辑框中增加ARM_MATH_CM4宏定义,如下图所示
以上几步完成后,便可以使用CMSIS-DSP库中提供的数字信号处理函数,使用时包含以下两个头文件即可:
#include "arm_math.h"
#include "arm_const_structs.h"
三、正弦数据生成实例
下面以简单的生成一个周期的正弦数据为例,进行简单展示。
第一步 在SDK中任意示例工程中按照上述步骤进行配置;
第二步 在工程中新建一个.c文件,贴入以下代码
#include <stdio.h>
#include "gr55xx_hal.h"
#include "arm_math.h"
#include "arm_const_structs.h"
#define SIZE_DATA_LEN 256
float32_t sin_data[SIZE_DATA_LEN];
static void sin_data_init(void)
{
for (int i = 0; i < SIZE_DATA_LEN; i++)
{
sin_data[i] = arm_sin_f32(i * 2 * PI / 256);
}
}
static void sin_data_print(void)
{
for (int i = 0; i < SIZE_DATA_LEN; i++)
{
printf("%f\r\n", sin_data[i]);
}
}
void dsp_demo_main(void)
{
sin_data_init();
sin_data_print();
}
第三步 在工程main函数中调用 dsp_demo_main()函数
第四步 下载运行
下载运行后,在串口工具上即可看到输出的正弦数据,以上代码生成的数据通过可视化工具绘制,波形如下所示:
打开微信,使用“扫一扫”即可关注