TI电机控制库 SVGEN_DQ and FC_PWM_DRV问题的一些理解
近期在做一个交流电机的控制程序,参考TI公司提供的代码库,发现了在f281xpwm.c文件中的一个费解语句,如下:
// Compute the timer period (Q0) from the period modulation input (Q15)
Tmp = (int32)p->PeriodMax*(int32)p->MfuncPeriod; // Q15 = Q0*Q15
MPeriod = (int16)(Tmp>>16) + (int16)(p->PeriodMax>>1); // Q0 = (Q15->Q0)/2 + (Q0/2)
EvaRegs.T1PR = MPeriod;
// Compute the compare 1 (Q0) from the PWM 1&2 duty cycle ratio (Q15)
Tmp = (int32)MPeriod*(int32)p->MfuncC1; // Q15 = Q0*Q15
EvaRegs.CMPR1 = (int16)(Tmp>>16) + (int16)(MPeriod>>1); // Q0 = (Q15->Q0)/2 + (Q0/2)
// Compute the compare 2 (Q0) from the PWM 3&4 duty cycle ratio (Q15)
Tmp = (int32)MPeriod*(int32)p->MfuncC2; // Q15 = Q0*Q15
EvaRegs.CMPR2 = (int16)(Tmp>>16) + (int16)(MPeriod>>1); // Q0 = (Q15->Q0)/2 + (Q0/2)
// Compute the compare 3 (Q0) from the PWM 5&6 duty cycle ratio (Q15)
Tmp = (int32)MPeriod*(int32)p->MfuncC3; // Q15 = Q0*Q15
EvaRegs.CMPR3 = (int16)(Tmp>>16) + (int16)(MPeriod>>1); // Q0 = (Q15->Q0)/2 + (Q0/2)
蓝色部分的语句让我很费解,经过查找资料和自己的理解,总算看明白了。现解释如下:
这条语句就是实现上述功能的。Tmp首先除于2,范围变为-1500~1500,然后在偏移1500(+PeriodMax>>1),此时范围是0~3000,实现了上述转换。
v->Ta = _IQmpy(_IQ(2.0),(v->Ta-_IQ(0.5)));
v->Tb = _IQmpy(_IQ(2.0),(v->Tb-_IQ(0.5)));
v->Tc = _IQmpy(_IQ(2.0),(v->Tc-_IQ(0.5)));
该条语句的作用,PWM周期PeriodMax乘以其占空比(低电平占周期的百分数),得到比较寄存器的值,但因为此时的占空比经过范围变换处理,所以还不是真正的比较寄存器的值
TI电机控制库 SVGEN_DQ and FC_PWM_DRV问题的一些理解相关推荐
- DSP28335/377学习-controlSUITE安装及TI电机控制例程
1 软件安装及介绍 controlSUITE是Ti为C2000开发者提供的资料库和参考工具包.在这里面对C2000每个型号都有对应的样例.手册和设计指导.还有各种开发板平台的原理图.PCB图和使用说明 ...
- stm32捕获占空比_【电机控制】六步法驱动BLDC电机,使用硬件COM事件,STM32+CUBEMX(HAL库)配置...
现在我也只能说是电机入门,但是想要把电机作为终身事业,从有霍尔到无霍尔,从方波到正弦波,现在把其中的一些知识点分享出来,因为电机控制其实的资料比较难找的,前人栽树,后人乘凉,如果我有什么错误,在知乎上 ...
- 【电机控制】六步法驱动BLDC电机,使用硬件COM事件,STM32+CUBEMX(HAL库)配置
已经做了半年的BLDC驱动器了,目前是做到了电流转速双闭环,期间遇到了很多很多问题,一个是资料难找,再加上公司要求使用CUBEMX,本身HAL库的资料也难找,难上加难啊,可能是用CUBEMX做出来的大 ...
- 【STM32F4系列】【HAL库】电机控制(转速和角度)(PID实战1)
文章目录 项目目标 硬件搭建 HAL初始化 定时器 PWM 编码器 定时器中断 串口 基础驱动 获取速度 获取角度 电机控制 PID 速度环 速度环设计 速度环调参 调试顺序 P(比例) I(积分) ...
- 电机控制编程的数学运算优化方案
引言 电机控制应用设计传统上采用微控制器(MCU)或数字信号处理器(DSP)来运行电机控制算法.在研究永磁同步电机(PMSM)矢量控制的时候,坐标变换的三角函数运算.观测器的迭代.锁相环的鉴相环节 ...
- 浮点运算单元FPU能给电机控制带来什么?
编者按:在计算领域,例如三角函数以及时域频域变换通常会用到浮点运算.当CPU执行一个需要浮点数运算的程序时,有三种方式可以执行:软件仿真器(浮点运算函数库).附加浮点运算器和集成浮点运算单元.在控制应 ...
- fpu测试_浮点运算单元FPU能给电机控制带来什么?
编者按:在计算领域,例如三角函数以及时域频域变换通常会用到浮点运算.当CPU执行一个需要浮点数运算的程序时,有三种方式可以执行:软件仿真器(浮点运算函数库).附加浮点运算器和集成浮点运算单元.在控制应 ...
- 电机控制-硬件系统设计
1.电机控制的结构框图 电机控制的结构框图如图1所示.一个电机系统包括四个大部分:被控对象.控制器.执行器.反馈,硬件上分别对应电机.MCU.驱动电路.信号调理电路,这样就构成了一套反馈控制系统 一套 ...
- 三大电机控制方案之DSP篇(1):TMS320F28335
三大电机控制方案之DSP篇(1):TMS320F28335 简介: TMS320F28335数字信号处理器是属于C2000系列的一款浮点DSP控制器.与以往的定点DSP相比,该器件的精度高,成本低, ...
最新文章
- springboot创建parent_Spring Boot 开篇:快速入门
- 9 个基于JavaScript 和 CSS 的 Web 图表框架
- python程序调试题_关于python程序调试问题,一个文件计算的问题
- 30 个很棒的 PHP 开源 CMS 内容管理系统
- js节流函数和js防止重复提交的N种方法
- Ubuntu 16.04 LTS与windows双系统时间同步解决方法
- C++的多态原理和实现
- 二、JS运算符、NaN
- Spring Boot核心注解讲解
- 重装系统后如何配置网络
- 记录4 最近贺题时做的题 cf611e,cf873f,cf264d,cf1320d,cf1438c,hdu6833,hdu3602,cf1187g,cf1051e,cf925d,cf840c,etc
- MySQL总结4_多表查询
- 贪心算法基础之活动时间安排(一)安排 51nod 贪心教程
- 评定职称/积分落户,原来软考证书含金量这么大!
- Android开发:微信应用签名如何获取
- EtherCAT和CANopen之间有什么关系?
- 2080 Calendar
- 论文阅读4:ShiDianNao
- Windows Mobile5.0与Windows Mobile6.0对比评测
- scratch实现流畅动画/连贯动作/自制素材/少儿编程scratch教研教案课件课程素材脚本
热门文章
- linux 内核rt,给linux内核打实时补丁preempt_rt
- 电信光纤入户 itv 路由器设置
- SSL,TLS协议与OpenSSL 心血heartbleed漏洞之伤
- 下一站云计算+,智慧地铁未来可期
- n76e003引脚图_N76E003的学习之路(二)
- SDCC+xmake环境尝试单片机N76E003点灯
- 139.单词拆分(java)
- Hololens2学习之路——从零开始部署项目到Hololens2(有线版)
- Java枚举类型代码解析
- 【PCIe 6.0】PCIe 6.0 新特性 - L0p 详解