Part Number:TMS320F280025COther Parts Discussed in Thread:C2000WARE
各位大佬好,本人第一次使用TI的芯片去配置QEP,所以对QEP有许多疑惑.我打开了C2000ware_3_04版本QEP例子中的eqep_ex2_pos_speed这个例子,该例子对QEP的配置和转速计算.其中对线数(MECH_SCALER)和速度计数值(SPEED_SCALER)的配置有疑惑.
我在查阅了论坛后,对线数的计算貌似有点理解.我采用一个1024线的旋变,经过正交4倍后一圈就有4096个脉冲信号,对比例子中的4000信号(1/(1000*4))*2^26 = 16776,那么我应该是得到(1/(1024*4) * 2 ^ 26 = 16384,不知道这样子计算是不是对的.
对于第二个疑问点,例子中提供了速度的计算公式5来计算得到SPEED_SCALER例子中用到的最大转速是6000转,但是我用到的电机转速要用到很大转速,所以就要对QEP最大转速提高到20000,那么SPEED_SCALER = ((((uint64_t)32 * DEVICE_SYSCLK_FREQ / 64) * 60) / (24000000))这个公式是不是就要做出相应的改变.这里面几个数字 : 32 \ 64 \ 60 \ 24000000都是什么意思,我在看到公式5的注解后,例子对6000的转速直接给出来32 / 4000这个数值.另外,例子中对capture分频数64对event分频数32,那么上述公式中的32与64 是否与这两个分频数有关联?在公式中还涉及到QEP的周期值,对于公式用到的6000转,其周期设置为10ms,即最大10ms转一圈,转换成rpm就是6000,如果我要用到20000转,那么周期势必要修改成3ms,例子中提供函数EQEP_enableUnitTimer(EQEP1_BASE, (DEVICE_SYSCLK_FREQ / 100));和EQEP_loadUnitTimer(EQEP1_BASE, (DEVICE_SYSCLK_FREQ / 100));其第一个公式的注释是设置为100Hz,即为10ms的周期.那么我设置为3ms,频率就是333Hz,是不是将100改成333就能实现我对周期的设置?
pengxiang wang:
对于SPEED_SCALER计算公式里面的60和24000000我好想明白了.现在就等大佬帮我确认呢32根64是不是与分频数相关联了
,
pengxiang wang:
再提个问题,PositionCount值最大是多少?1024线的旋变,4对极,转子位置不应该是0-4096之间变化吗?
,
Green Deng:
是的,其实也就是这两个寄存器的配置值:
EQep1Regs.QCAPCTL.bit.UPPS=5;// 1/32 for unit positionEQep1Regs.QCAPCTL.bit.CCPS=6;// 1/64 for CAP clock60的话就是1min有60sec而已。
"PositionCount"具体指的是哪个参数?
,
pengxiang wang:
EQEP_enableUnitTimer这个函数里面设置频率,如果按我的速度需求,是把100改成333吗?PositionCount就是函数EQEP_getPosition读取到的值,他是跟线数有关系的吗?0-4095?
还有一个问题哈,我想要调用IQmath,我把例子中的CMD文件直接替换掉可行?
,
pengxiang wang:
出现了一个不太对的事情 , 我现在的旋变是1024线的,那么speedScaler在计算中就是32*100MHz*60/64/(4096*20000) , 这样算出来的值就不是整数 , ,那么用的1024线编码器该怎么计算