- 积分
- 46
- 回帖
- 0
- 西莫币
-
- 贡献
-
- 威望
-
- 存款
-
- 阅读权限
- 5
- 最后登录
- 1970-1-1
该用户从未签到
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
做BLDC控制的 相信很多人都看过文件
HBF281X_EV1_BLDC_PWM_Update(PWMGEN *p)这个模块里
//Convert "Period" (Q15) modulation function to Q0 问题1 周期与占空比的乘积,这里看不明白,求教
Tmp = (int32)p->PeriodMax*(int32)p->MfuncPeriod; // Q15 = Q0*Q15
Period = (int16)(Tmp>>15); // Q15 -> Q0 (Period)
// Check PwmActive setting
if (p->PwmActive==1) // PWM active high 问题2 这里好像是高电平开启MOS管吧,但是面这句话 不明白了
GPR0_BLDC_PWM = 0x7FFF - p->DutyFunc;
else if (p->PwmActive==0) // PWM active low
GPR0_BLDC_PWM = p->DutyFunc;
// Convert "DutyFunc" or "GPR0_BLDC_PWM" (Q15) duty modulation function to Q0
Tmp = (int32)Period*(int32)GPR0_BLDC_PWM; // Q15 = Q0*Q15 问题3 这里是怎么改变控制寄存器的值的
EvaRegs.CMPR1 = (int16)(Tmp>>15); // Q15 -> Q0
EvaRegs.CMPR2 = (int16)(Tmp>>15); // Q15 -> Q0
EvaRegs.CMPR3 = (int16)(Tmp>>15); // Q15 -> Q0
对了对于PWMGEN结构体的定义
ypedef struct {
Uint16 CmtnPointer; // Input: Commutation (or switching) state pointer input (Q0)换相模块
int16 MfuncPeriod; // Input: Duty ratio of the PWM outputs (Q15) 占空比
Uint16 PeriodMax; // Parameter: Maximum period (Q0)
int16 DutyFunc; // Input: PWM period modulation input (Q15) 周期调整
Uint16 PwmActive; // Parameter: 0 = PWM active low, 1 = PWM active high (0 or 1) 1髙电平开启
void (*init)(); // Pointer to the init function
void (*update)(); // Pointer to the update function
} PWMGEN; |
|