arm_math.h、arm_const_structs.h 和 arm_common_tables.h

news2025/5/17 10:51:05

在 ​​FOC(Field-Oriented Control,磁场定向控制)​​ 中,arm_math.harm_const_structs.h 和 arm_common_tables.h 是 CMSIS-DSP 库的核心组件,用于实现高效的数学运算、预定义结构和查表操作。以下是它们在 FOC 控制中的具体应用场景:

以下的的函数名称可能不一致,但.H文件中可以找到;

​1. arm_math.h 的核心作用​

这是 CMSIS-DSP 的核心数学函数库,提供了 FOC 控制所需的关键算法:

  • ​坐标变换​​:

    • ​Clarke 变换​​:将三相电流(Ia, Ib, Ic)转换为两相静止坐标系(Iα, Iβ
    • // 使用向量运算实现 Clarke 变换
      arm_clarke_f32(Ia, Ib, &Iα, &Iβ);
    • ​Park 变换​​:将静止坐标系(Iα, Iβ)转换为旋转坐标系(Id, Iq)。
    • // 使用三角函数(依赖 `arm_sin_f32` 或查表)
      arm_park_f32(Iα, Iβ, &Id, &Iq, angle);
    • 逆 Park 变换​​:将旋转坐标系(Vd, Vq)转换回静止坐标系(Valpha, Vbeta)。
  • ​三角函数计算​​:

    • Park/逆 Park 变换依赖正弦/余弦函数,可通过 arm_sin_f32 或查表(arm_common_tables.h)实现
  • ​滤波算法​​:

    • 电流环或速度环的低通滤波器(如 arm_biquad_cascade_df2T_f32)。
  • ​PID 控制器​​:

    • 使用 arm_pid_f32 结构体实现电流环和速度环的 PID 调节。

​2. arm_const_structs.h 的预定义结构体​

该头文件定义了复数、滤波器结构体等,简化了 FOC 中复杂数据结构的初始化:

  • ​复数运算​​:
  • // 定义复数类型(用于 Park/逆 Park 变换中的复数乘法)
    typedef struct {
      float32_t real;
      float32_t imag;
    } complex32_t;
  • 滤波器配置​​:
  • 如二阶带通/带阻滤波器的预定义结构体,用于电流谐波抑制。

​3. arm_common_tables.h 的查表加速​

该头文件包含预计算的查找表(Lookup Tables),用于减少实时计算开销:

​正弦/余弦表​​:

// 预先生成的正弦表(例如 1024 点)
extern const float32_t sin_table[1024];
extern const float32_t cos_table[1024];

  • 在 Park 变换中直接查表代替 arm_sin_f32 或 arm_cos_f32,提升效率。
  • 适用于资源受限的 Cortex-M4/M7 微控制器。

​坐标旋转表​​:

预先计算的角度到旋转矩阵的映射,减少实时三角函数计算。

FOC 控制流程中的典型应用​

  1. ​电流采样与 Clarke 变换​​:

    // 三相电流 → 两相静止坐标系
    arm_vector2d_f32(Ia, Ib, &Iα, &Iβ);
  2. ​Park 变换(使用查表或数学函数)​​:

    // 使用查表加速正弦/余弦计算
    float32_t sin_theta = sin_table[(int)(angle * 1024 / (2*PI))];
    arm_park_f32(Iα, Iβ, &Id, &Iq, angle);
  3. ​PID 调节(arm_pid_f32)​​:

    // 初始化 PID 结构体
    arm_pid_instance_f32 pid;
    arm_pid_init_f32(&pid);
    
    // 计算电流环输出
    arm_pid_f32(&pid, error, &output);
  4. ​逆 Park 变换与 PWM 生成​​:

    // 旋转坐标系 → 静止坐标系
    arm_unpark_f32(Vd, Vq, &Valpha, &Vbeta, angle);
    
    // 逆Clark变换 → 三相电压
    arm_vector3d_f32(Valpha, Vbeta, &Va, &Vb, &Vc);
    
    // 空间矢量调制(SVPWM)生成 PWM 信号

​优化建议​

  1. ​定点 vs 浮点​​:

    • 若使用定点运算(如 q31_t),需调用 arm_math_q31.h 中的定点函数。
    • 浮点运算(float32_t)更易调试,但需确保 Cortex-M4/M7 的 FPU 支持。
  2. ​查表 vs 实时计算​​:

    • 查表法(arm_common_tables.h)可减少计算量,但需权衡内存占用。
    • 对于动态调整角度的应用(如无感 FOC),需实时更新查表索引。
  3. ​性能关键路径​​:

    • 将 Park/逆 Park 变换、PWM 更新等关键代码放在 DMA 中断服务例程(ISR)中,确保实时性。

通过合理组合这些组件,可以高效实现 FOC 控制的核心算法,同时充分利用 ARM Cortex-M 处理器的 DSP 扩展能力。

库arm_cortexM4lf_math.lib包含以下文件:打包成了一个库:

添加到MDK:

只要添加1和2就在初始化时添加了FPU浮点数,

__FPU_PRESENT == 1在第二张图中已经自动添加;

__FPU_USED == 1在第三张图中添加;

添加DSP

c++选项中添加:宏定义中添加3,4,5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2334485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

buuctf sql注入类练习

BUU SQL COURSE 1 1 实例无法访问 / Instance cant be reached at that time | BUUCTF但是这个地方很迷惑就是这个 一个 # 我们不抓包就不知道这个是sql注入类的判断是 get 类型的sql注入直接使用sqlmap我们放入到1.txt中 目的是 优先检测 ?id1>python3 sqlmap.py -r 1.t…

具身导航中的视觉语言注意力蒸馏!Vi-LAD:实现动态环境中的社会意识机器人导航

作者:Mohamed Elnoor 1 ^{1} 1, Kasun Weerakoon 1 ^{1} 1, Gershom Seneviratne 1 ^{1} 1, Jing Liang 2 ^{2} 2, Vignesh Rajagopal 3 ^{3} 3, and Dinesh Manocha 1 , 2 ^{1,2} 1,2单位: 1 ^{1} 1马里兰大学帕克分校电气与计算机工程系, 2…

全局前置守卫与购物车页面鉴权

在很多应用里,并非所有页面都能随意访问。例如购物车页面,用户需先登录才能查看。这时可以利用全局前置守卫来实现这一鉴权功能。 全局前置守卫的书写位置在 router/index.js 文件中,在创建 router 对象之后,暴露 router 对象之前…

layui 弹窗-调整窗口的缩放拖拽几次就看不到标题、被遮挡了怎么解决

拖拽几次,调整窗口的缩放,就出现了弹出的页面,右上角叉号调不出来了,窗口关不掉 废话不多说直入主题: 在使用layer.alert layer.confirm layer.msg 等等弹窗时,发现看不到弹窗,然后通过控制台检查代码发现…

网络空间安全(57)K8s安全加固

一、升级K8s版本和组件 原因:K8s新版本通常会引入一系列安全功能,提供关键的安全补丁,能够补救已知的安全风险,减少攻击面。 操作:将K8s部署更新到最新稳定版本,并使用到达stable状态的API。 二、启用RBAC&…

2025蓝桥杯C++A组省赛 题解

昨天打完蓝桥杯本来想写个 p y t h o n python python A A A 组的题解,结果被队友截胡了。今天上课把 C A CA CA 组的题看了,感觉挺简单的,所以来水一篇题解。 这场 B B B 是一个爆搜, C C C 利用取余的性质比较好写&#…

论文学习:《通过基于元学习的图变换探索冷启动场景下的药物-靶标相互作用预测》

原文标题:Exploring drug-target interaction prediction on cold-start scenarios via meta-learning-based graph transformer 原文链接:https://www.sciencedirect.com/science/article/pii/S1046202324002470 药物-靶点相互作用(DTI&…

十八、TCP多线程、多进程并发服务器

1、TCP多线程并发服务器 服务端&#xff1a; #include<stdio.h> #include <arpa/inet.h> #include<stdlib.h> #include<string.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <pthread.h>…

AIGC-文生图与图生图

在之前的文章中&#xff0c;我们知道了如何通过Web UI和Confy UI两种SD工具来进行图片生成&#xff0c;今天进一步地讲解其中的参数用处及如何调节。 文生图 参数详解 所谓文生图&#xff0c;就是通过文字描述我们想要图片包含的内容。初学的话&#xff0c;还是以Web UI为例…

量化交易 - 聚宽joinquant - 多因子入门研究 - 源码开源

先看一下我们的收益&#xff1a; JoinQuant直达这里看看 下面讲解原理和代码。 目录 一、是否为st 二、是否停牌 三、市值小、roe大 四、编写回测代码 今天来研究一下多因子回测模型&#xff0c;这里以‘市值’、‘roe’作为例子。 几个标准&#xff1a;沪深300里选股&am…

FPGA 37 ,FPGA千兆以太网设计实战:RGMII接口时序实现全解析( RGMII接口时序设计,RGMII~GMII,GMII~RGMII 接口转换 )

目录 前言 一、设计流程 1.1 需求理解 1.2 模块划分 1.3 测试验证 二、模块分工 2.1 RGMII→GMII&#xff08;接收方向&#xff0c;rgmii_rx 模块&#xff09; 2.2 GMII→RGMII&#xff08;发送方向&#xff0c;rgmii_tx 模块&#xff09; 三、代码实现 3.1 顶层模块 …

上篇:《排序算法的奇妙世界:如何让数据井然有序?》

个人主页&#xff1a;strive-debug 排序算法精讲&#xff1a;从理论到实践 一、排序概念及应用 1.1 基本概念 **排序**&#xff1a;将一组记录按照特定关键字&#xff08;如数值大小&#xff09;进行递增或递减排列的操作。 1.2 常见排序算法分类 - **简单低效型**&#xff…

红宝书第三十四讲:零基础学会单元测试框架:Jest、Mocha、QUnit

红宝书第三十四讲&#xff1a;零基础学会单元测试框架&#xff1a;Jest、Mocha、QUnit 资料取自《JavaScript高级程序设计&#xff08;第5版&#xff09;》。 查看总目录&#xff1a;红宝书学习大纲 一、单元测试是什么&#xff1f; 就像给代码做“体检”&#xff0c;帮你检查…

CST1019.基于Spring Boot+Vue智能洗车管理系统

计算机/JAVA毕业设计 【CST1019.基于Spring BootVue智能洗车管理系统】 【项目介绍】 智能洗车管理系统&#xff0c;基于 Spring Boot Vue 实现&#xff0c;功能丰富、界面精美 【业务模块】 系统共有三类用户&#xff0c;分别是&#xff1a;管理员用户、普通用户、工人用户&…

HTTP:五.WEB服务器

web服务器 定义:实现提供资源或应答的提供者都可以谓之为服务器!web服务器工作内容 接受建立连接请求 接受请求 处理请求 访问报文中指定的资源 构建响应 发送响应 记录事务处理过程 Web应用开发用到的一般技术元素 静态元素:html, img,js,Css,SWF,MP4 动态元素:PHP,…

0基础 | 硬件滤波 C、RC、LC、π型

一、滤波概念 &#xff08;一&#xff09;滤波定义 滤波是将信号中特定波段频率滤除的操作&#xff0c;是抑制和防止干扰的重要措施。通过滤波器实现对特定频率成分的筛选&#xff0c;确保目标信号的纯净度&#xff0c;提升系统稳定性。 &#xff08;二&#xff09;滤波器分…

图论基础理论

在我看来&#xff0c;想要掌握图的基础应用&#xff0c;仅需要三步走。 什么是图&#xff08;基本概念&#xff09;、图的构造&#xff08;打地基&#xff09;、图的遍历方式&#xff08;应用的基础&#xff09; 只要能OK的掌握这三步、就算图论入门了&#xff01;&#xff0…

企业级低代码平台的架构范式转型研究

在快速迭代的数字时代&#xff0c;低代码平台如同一股清流&#xff0c;悄然成为开发者们的新宠。 它利用直观易用的拖拽式界面和丰富的预制组件&#xff0c;将应用程序的开发过程简化到了前所未有的程度。通过封装复杂的编程逻辑和提供强大的集成能力&#xff0c;低代码平台让…

怎么免费下载GLTF/GLB格式模型文件,还可以在线编辑修改

​ 现在非常流行glb格式模型&#xff0c;和gltf格式文件&#xff0c;可是之类模型网站非常非常少 1&#xff0c;咱们先直接打开http://glbxz.com 官方glb下载网站 glbxz.com 2 可以搜索&#xff0c;自己想要的模型关键词 3&#xff0c;到自己想下载素材页面 4&#xff0c;…

大模型到底是怎么产生的?一文揭秘大模型诞生全过程

前言 大模型到底是怎么产生的呢? 本文将从最基础的概念开始,逐步深入,用通俗易懂的语言为大家揭开大模型的神秘面纱。 大家好,我是大 F,深耕AI算法十余年,互联网大厂核心技术岗。 知行合一,不写水文,喜欢可关注,分享AI算法干货、技术心得。 【专栏介绍】: 欢迎关注《…