This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器:我使用的是 M/T 速度方法、测试板也可以、车子可以测试很多波动。 帮助

Guru**** 2539500 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/610588/compiler-i-am-using-the-m-t-speed-method-the-test-board-is-also-ok-to-the-car-test-a-lot-of-fluctuations-help

工具/软件:TI C/C++编译器

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否在汽车测试期间监测了 QEP 的信号? 编码器输出信号是否有噪声? 您可以为 QEP 输入 IO 设置 GPIO 鉴定以过滤一些噪声信号。

    您能否在汽车测试期间共享一些信号波形? 并告诉用户该问题将出现在哪个速度范围?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    之前编写的程序、M 方法测试结果非常好。 现在、为了提高精度、请使用 M/T、希望提高测量精度。 但它非常不稳定,您有 QQ 吗? 向您发送测试波形、请帮我查看

    下图使用 m 方法

    我的程序如下

    void  eQEP_pos_speed_get_Init (eQEP_POS_SPEED_GET * p)

     uint32 QUPRD;

      EALLOW;

    #IF (CPU_FRQ_150MHz)

      QUPRD=(UINT32) 150000000>9;   //针对速度为150 MHz 的 SPEED_intfre 的单位定时器

    #endif

    EQep1Regs.QUPRD=QUPRD;

    EQep1Regs.QDECCTL.bit.QSRC=00;     // QEP 正交计数模式

    EQep1Regs.QEPCTL.bit.FREE_SOFT=2;

    EQep1Regs.QEPCTL.bit.PCRM=1;       // PCRM=3模式-单位时间的 QPOSCNT 复位

    EQep1Regs.QEPCTL.bit.UTE=1;        //单元超时使能

    EQep1Regs.QEPCTL.bit.QCLM=1;       //时间 out锁存计数值

    EQep1Regs.QPOSIINIT=0;

    EQep1Regs.QPOSCNT=EQep1Regs.QPOSIINIT;

    EQep1Regs.QPOSMAX = 0xffffffff;

    EQep1Regs.QEPCTL.bit.QPEN=1;       // QEP 使能

     

    //设置eQEP 边缘 Capture功能

    EQep1Regs.QCAPCTL.bit.CCPS = 4;    设定CAPCLK时钟为SYSCLK的16分频= 4.6875M

    EQep1Regs.QCAPCTL.BIT.UPPs = 1;    //11:设定UPEVNT事件为QCLK的1分频 μ A

    EQep1Regs.QCAPCTL.bit.CEN  = 1;     //1:QEP 电容启用

    EDIS;

    void posspeed_calc (POSSPEED * p)

    长 M1、m2、fc;

    if (EQep1Regs.QEPSTS.bit.UPEVNT=0)

    返回;

    if (EQep1Regs.QEPSTS.bit.COEF=0)           //无捕捉溢出

    M2=(无符号长整型) EQep1Regs.QCPRDLAT;

    其他             

    M2 = 0xFFF+(无符号长整型) EQep1Regs.QCPRDLAT;  

    采用MT法进行测速 μ s

    //speedhz_raW_h=M1*fc/(m2*enc_rev)*pole 对

    M1=LSign (p->cnt_delt)*2;// LSign取正传反转符号

    fc=cpu_FRQ>>4;//系统时钟分频

    p->SpeedHz_raW_h=IQdiv (M1*fc,m2*(p->enc_rev),moter_FRQ_Q);

    p->SpeedHz_raW_h=IQmpy (p->SpeedHz_raW_h、p->POLE_PAIRS、0);

    EQep1Regs.QEPSTS.All=0x88;

    返回;