CN / EN
CN / EN

写技术文章

GR551x SDK1.7.0 CMSIS-DSP使用指南

Barton

2022-06-08 09:58:15

前言

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详细介绍链接

二、使用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库。

  • 第一步 在工程中添加库文件
在工程创建一个名为DSP的group(group名称可任意指定),并添加CMSIS_DSP_CM4F_LE.lib至此group下,如下图所示:

  • 第二步 添加include路径

在工程Options中C/C++标签下的include paths中增加DSP相关头文件路径,如下图所示:

  • 第三步 启用FPU

在工程Options中Target标签下的Floating Point Hardware中,选择Use Single Precision选项,如下图所示

  • 第四步 增加CortexM4相关宏定义

GR551x系列为Cortex-M4F核,因此在工程Options中C/C++标签下的Define编辑框中增加ARM_MATH_CM4宏定义,如下图所示

  • 第五步 使用CMSIS-DSP

以上几步完成后,便可以使用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()函数

第四步 下载运行

下载运行后,在串口工具上即可看到输出的正弦数据,以上代码生成的数据通过可视化工具绘制,波形如下所示:

0收藏

5赞成

您的评论
我们时刻倾听您的声音
联系销售

扫描关注公众号

打开微信,使用“扫一扫”即可关注