TI中文支持网
TI专业的中文技术问题搜集分享网站

QEP 最高截止频率

请问tms320f28069 QEP 最高响应频率是多少呢,为什么输入超过 300KHZ QEP 就无法计数了?可以提高 QEP 的输入频率吗?

10#:

300k的频率不算高,应该是可以计数的,你能不能比较不能计数和不能计数时对应的寄存器的值有什么差别?

另一方面,你可以对信号进行分频进行测试。

最高截止频率取决于QEP本身的时钟,和里面的时钟分频系数。

请问tms320f28069 QEP 最高响应频率是多少呢,为什么输入超过 300KHZ QEP 就无法计数了?可以提高 QEP 的输入频率吗?

sworman chen:

回复 10#:

您好,QEP 本身时钟等于 系统时钟,28069 对 QEP 应该没有分频,附上QEP参数部分代码, 请帮忙分析,

 // hold the counter in reset      QEP_reset_counter(obj->qepHandle[qep]);      // set the QPOSINIT register      QEP_set_posn_init_count(obj->qepHandle[qep], 0);      // disable all interrupts      QEP_disable_all_interrupts(obj->qepHandle[qep]);      // clear the interrupt flags      QEP_clear_all_interrupt_flags(obj->qepHandle[qep]);      // clear the position counter      QEP_clear_posn_counter(obj->qepHandle[qep]);      // setup the max position      //QEP_set_max_posn_count(obj->qepHandle[qep], (4*USER_MOTOR_ENCODER_LINES)-1);      QEP_set_max_posn_count(obj->qepHandle[qep],USER_PULSE_COMMAND_LINES);      // setup the QDECCTL register      QEP_set_QEP_source(obj->qepHandle[qep], QEP_Qsrc_Dir_Count_Mode);      QEP_disable_sync_out(obj->qepHandle[qep]);      QEP_set_swap_quad_inputs(obj->qepHandle[qep], QEP_Swap_Not_Swapped);      QEP_disable_gate_index(obj->qepHandle[qep]);      QEP_set_ext_clock_rate(obj->qepHandle[qep], QEP_Xcr_1x_Res);      QEP_set_A_polarity(obj->qepHandle[qep], QEP_Qap_No_Effect);      QEP_set_B_polarity(obj->qepHandle[qep], QEP_Qbp_No_Effect);      QEP_set_index_polarity(obj->qepHandle[qep], QEP_Qip_No_Effect);      // setup the QEPCTL register      QEP_set_emu_control(obj->qepHandle[qep], QEPCTL_Freesoft_Unaffected_Halt);      QEP_set_posn_count_reset_mode(obj->qepHandle[qep], QEPCTL_Pcrm_Max_Reset);      QEP_set_strobe_event_init(obj->qepHandle[qep], QEPCTL_Sei_Nothing);      QEP_set_index_event_init(obj->qepHandle[qep], QEPCTL_Iei_Nothing);      QEP_set_index_event_latch(obj->qepHandle[qep], QEPCTL_Iel_Rising_Edge);      QEP_set_soft_init(obj->qepHandle[qep], QEPCTL_Swi_Nothing);      QEP_disable_unit_timer(obj->qepHandle[qep]);      QEP_disable_watchdog(obj->qepHandle[qep]);      // setup the QPOSCTL register      QEP_disable_posn_compare(obj->qepHandle[qep]);      // setup the QCAPCTL register      QEP_disable_capture(obj->qepHandle[qep]);      // renable the position counter      QEP_enable_counter(obj->qepHandle[qep]);

请问tms320f28069 QEP 最高响应频率是多少呢,为什么输入超过 300KHZ QEP 就无法计数了?可以提高 QEP 的输入频率吗?

10#:

回复 sworman chen:

请查看用户手册里的Figure 7-15. eQEP Edge Capture Unit框图,时钟是可以进行分频的,只是你需要对信号进行分频,这个可能没有意义。

你提到“无法计数”,上面问你“能不能比较不能计数和不能计数时对应的寄存器的值有什么差别”,或者具体是如何不能计数,是哪个计数的寄存器的值不变化,还是出了什么错误?尽量完整详细地描述一下问题。

请问tms320f28069 QEP 最高响应频率是多少呢,为什么输入超过 300KHZ QEP 就无法计数了?可以提高 QEP 的输入频率吗?

sworman chen:

回复 10#:

@10#

你好!寄存器状态没有区别,只在300K Hz 以下时 QPOSCNT 计数会跳动 ,超过300K HZ 则不会跳动。

另外,外部输入的是 脉冲+ 方向信号,即QEP 工作在 “Direction-count Mode”  模式

1> 500KHZ 寄存器状态如下

QPOSCNT    unsigned long    97455391    0x00006B40@Data    QPOSINIT    unsigned long    0    0x00006B42@Data    QPOSMAX    unsigned long    100000000    0x00006B44@Data    QPOSCMP    unsigned long    0    0  x00006B46@Data    QPOSILAT    unsigned long    0    0x00006B48@Data    QPOSSLAT    unsigned long    0    0x00006B4A@Data    QPOSLAT    unsigned long    0    0  x00006B4C@Data    QUTMR    unsigned long    0    0  x00006B4E@Data    QUPRD    unsigned long    0    0  x00006B50@Data    QWDTMR    unsigned int    0    0  x00006B52@Data    QWDPRD    unsigned int    0    0  x00006B53@Data    QDECCTL    unsigned int    18560    0   x00006B54@Data    QEPCTL    unsigned int    36888    0   x00006B55@Data    QCAPCTL    unsigned int    0    0    x00006B56@Data    QPOSCTL    unsigned int    0    0       x00006B57@Data    QEINT    unsigned int    0    0      x00006B58@Data    QFLG    unsigned int    40    0       x00006B59@Data    QCLR    unsigned int    0    0       x00006B5A@Data    QFRC    unsigned int    0    0       x00006B5B@Data    QEPSTS    unsigned int    128    0       x00006B5C@Data    QCTMR    unsigned int    0    0       x00006B5D@Data    QCPRD    unsigned int    0    0       x00006B5E@Data    QCTMRLAT    unsigned int    0    0x00006B5F@Data    QCPRDLAT    unsigned int    0    0x00006B60@Data   

2> 270KHZ 寄存器状态如下

*([1])    struct _QEP_Obj_    {…}    0x00006B40@Data        QPOSCNT    unsigned long    13369810    0x00006B40@Data        QPOSINIT    unsigned long    0    0x00006B42@Data        QPOSMAX    unsigned long    100000000    0x00006B44@Data        QPOSCMP    unsigned long    0    0x00006B46@Data        QPOSILAT    unsigned long    0    0x00006B48@Data        QPOSSLAT    unsigned long    0    0x00006B4A@Data        QPOSLAT    unsigned long    0    0x00006B4C@Data        QUTMR    unsigned long    0    0x00006B4E@Data        QUPRD    unsigned long    0    0x00006B50@Data        QWDTMR    unsigned int    0    0x00006B52@Data        QWDPRD    unsigned int    0    0x00006B53@Data        QDECCTL    unsigned int    18560    0x00006B54@Data        QEPCTL    unsigned int    36888    0x00006B55@Data        QCAPCTL    unsigned int    0    0x00006B56@Data        QPOSCTL    unsigned int    0    0x00006B57@Data        QEINT    unsigned int    0    0x00006B58@Data        QFLG    unsigned int    40    0x00006B59@Data        QCLR    unsigned int    0    0x00006B5A@Data        QFRC    unsigned int    0    0x00006B5B@Data        QEPSTS    unsigned int    128    0x00006B5C@Data        QCTMR    unsigned int    0    0x00006B5D@Data        QCPRD    unsigned int    0    0x00006B5E@Data        QCTMRLAT    unsigned int    0    0x00006B5F@Data        QCPRDLAT    unsigned int    0    0x00006B60@Data    

请问tms320f28069 QEP 最高响应频率是多少呢,为什么输入超过 300KHZ QEP 就无法计数了?可以提高 QEP 的输入频率吗?

10#:

回复 sworman chen:

我没能仔细对照你的配置。思考问题的方向提供给你去确认:

QPOSCNT的值是否已经逼近QPOSMAX寄存器设定的值了?你更改一下后者,是不是频率又可以提高?

另外,你检查一下QFLG和QEPSTS寄存器中置位的位,看看是否符合你的配置。

请问tms320f28069 QEP 最高响应频率是多少呢,为什么输入超过 300KHZ QEP 就无法计数了?可以提高 QEP 的输入频率吗?

sworman chen:

回复 10#:

你好,

可以确认与 QPOSMAX 设置无关,目前设了 100000000(和设2000 状况一样), TI  官方没对 QEP 输入最高频率说明吗?????

请问tms320f28069 QEP 最高响应频率是多少呢,为什么输入超过 300KHZ QEP 就无法计数了?可以提高 QEP 的输入频率吗?

sworman chen:

回复 sworman chen:

你好, 可以确认与 QPOSMAX 设置无关,目前设了 100000000(和设2000 状况一样), TI  官方没对 QEP 输入最高频率说明吗?????

请问tms320f28069 QEP 最高响应频率是多少呢,为什么输入超过 300KHZ QEP 就无法计数了?可以提高 QEP 的输入频率吗?

10#:

回复 sworman chen:

这个频率是以芯片的QEP模块的时钟能够分辨的信号精度来确定的,计算最高频率时, 根据你的计数模式,应该是方向不变的情况,即QDIR持续为高或低电平,否则它就反向计数。以下图一为例,只要QCLK能够被识别,计数器就自动累加或减小,也就是可以检测到这个频率,对于32位的QPOSCNT来说,即使溢出(无论是上溢或下溢),它还是会能够继续计数,因此核心在于QCLK能够被识别。而QCLK能否被识别的规格是下图二中的参数,即不小于2Tc(sco),也就是两个系统时钟,这相比于500kHz来说基本可以说是无穷大,所以可以检测的最高频率可以认为是45MHz.

考虑到下方另一个选项,即是否使能了输入滤波,我想可能需要你检查一下,你的代码时是否有进行GPIO滤波,如果有,这个频率可能就是你设定的百k级频率。

另外,你是否可以提供一下实际输入的信号波形,即除了你提到的频率,应该是在QEPA通道的输入,那么QEPB是怎样的呢?

赞(0)
未经允许不得转载:TI中文支持网 » QEP 最高截止频率
分享到: 更多 (0)