完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
//! brief Writes PWM data to the PWM comparators for motor control//! param[in] handle The hardware abstraction layer (HAL) handle//! param[in] pPwmData The pointer to the PWM datastatic inline void HAL_writePwmData(HAL_Handle handle,HAL_PwmData_t *pPwmData)[ uint_least8_t cnt; HAL_Obj *obj = (HAL_Obj *)handle; PWM_Obj *pwm; _iq period; _iq pwmData_neg; _iq pwmData_sat; _iq pwmData_sat_dc; _iq value; uint16_t value_sat; for(cnt=0;cnt<3;cnt++) [ pwm = (PWM_Obj *)obj->pwmHandle[cnt]; period = (_iq)pwm->TBPRD; pwmData_neg = _IQmpy(pPwmData->Tabc.value[cnt],_IQ(-1.0)); pwmData_sat = _IQsat(pwmData_neg,_IQ(1.0),_IQ(-1.0)); pwmData_sat_dc = _IQmpy(pwmData_sat + _IQ(1.0), _IQ(0.5)); value = _IQmpy(pwmData_sat_dc, period); value_sat = (uint16_t)_IQsat(value, period, _IQ(0.0)); // write the PWM data PWM_write_CmpA(obj->pwmHandle[cnt],value_sat); ] return;]在这个函数中,for循环部分,特别是下面这段:
period = (_iq)pwm->TBPRD; pwmData_neg = _IQmpy(pPwmData->Tabc.value[cnt],_IQ(-1.0)); pwmData_sat = _IQsat(pwmData_neg,_IQ(1.0),_IQ(-1.0)); pwmData_sat_dc = _IQmpy(pwmData_sat + _IQ(1.0), _IQ(0.5)); value = _IQmpy(pwmData_sat_dc, period); value_sat = (uint16_t)_IQsat(value, period, _IQ(0.0));这段怎么理解?求各位大神指教啊!! |
|
相关推荐
5 个讨论
|
|
而且老板的库中是这个:pwmData_sat_dc = _IQmpy(pwmData_sat + _IQ(1.0), _IQ(0.5));
新版的库中是这个:pwmData_sat_dc = pwmData_sat + _IQ(0.5); 在同等电压下 用pwmData_sat_dc = pwmData_sat + _IQ(0.5); 转速有提高,但是油门就没有最大,转速就已经最高了 用pwmData_sat_dc = _IQmpy(pwmData_sat + _IQ(1.0), _IQ(0.5)); 转速比上者低几百转,但是油门可以提到最高 这是什么原因呢?? |
|
|
|
|
|
adaliu001 发表于 2020-7-24 10:24 而且老板的库中是这个:pwmData_sat_dc = _IQmpy(pwmData_sat + _IQ(1.0), _IQ(0.5)); 新版的库中是这个:pwmData_sat_dc = pwmData_sat + _IQ(0.5); 在同等电压下 用pwmData_sat_dc = pwmData_sat + _IQ(0.5); 转速有提高,但是油门就没有最大,转速就已经最高了 用pwmData_sat_dc = _IQmpy(pwmData_sat + _IQ(1.0), _IQ(0.5)); 转速比上者低几百转,但是油门可以提到最高 这是什么原因呢?? ERIC: 新版本在这里做了调整了,所以你看到user.h里面的VS最大都是比以前除以2. 新版的库中是这个:pwmData_sat_dc = pwmData_sat + _IQ(0.5); 这里还是把pwmData_sat_dc 调整到 0~ 1. pwmData_sat 是-0.5~0.5. 用pwmData_sat_dc = pwmData_sat + _IQ(0.5); 转速有提高,但是油门就没有最大,转速就已经最高了 用pwmData_sat_dc = _IQmpy(pwmData_sat + _IQ(1.0), _IQ(0.5)); 转速比上者低几百转,但是油门可以提到最高 ERIC: 不理解你这个内容,油门表示什么?扭矩? 你用新的版本就好了。 - ERIC |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
334 浏览 1 评论
528 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
773 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
649 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1126 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
55浏览 29评论
111浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
250浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
197浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
54浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 10:45 , Processed in 0.971645 second(s), Total 59, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号