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.

28335的QEP模块位置计数问题

28335的QEP模块计算转速,可是手动转动电机时QPOSCNT寄存器的计数值只有0,1,2,3,9999,10000这几个数值,而且也不是顺序跳变的。寄存器的配置没什么问题,输入的ABZ信号,电平低电平是0.8V,高电平3.5V左右,不知道是不是这个电平范围的问题影响捕获计数。

还有我想问下28335的QEP模块输入电平范围是多少,5V的ABZ可以直接输入吗?

  • 我感觉你这电平有问题      编码器上来的最好整形处理一下    然后送给IO口

    0-3.3V

  • 我整形后0.4-3.6V,这个电平可以吗?  

    我现在是手转电机计数正常,但是上电运行后计数就不正常。

  • 請問問題有解決嗎?
    我也遇到問題
    abz皆有訊號
    但是進入dsp之後卻讀不到
    以下是程式
    不知道是哪裡錯了

    我是直接將dsp28335 使用ccs6 然後接著看 theta_input的值
    卻一直是0
    希望有大大能幫檢查哪裡錯了
    謝謝

    ////角位設定////
    // GPIO-50 - PIN FUNCTION = EQEP1A
    GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 1; // 0=GPIO, 1=EQEP1A, 2=Resv,
    // GpioCtrlRegs.GPBDIR.bit.GPIO50 = 0; // 1=OUTput, 0=INput
    // GpioDataRegs.GPBCLEAR.bit.GPIO50 = 1; // uncomment if --> Set Low initially
    // GpioDataRegs.GPBSET.bit.GPIO54 = 1; // uncomment if --> Set High initially
    //--------------------------------------------------------------------------------------
    // GPIO-51 - PIN FUNCTION = EQEP1B
    GpioCtrlRegs.GPBMUX2.bit.GPIO51 = 1; // 0=GPIO, 1=EQEP1B, 2=Resv,
    // GpioCtrlRegs.GPBDIR.bit.GPIO51 = 0; // 1=OUTput, 0=INput
    // GpioDataRegs.GPBCLEAR.bit.GPIO51 = 1; // uncomment if --> Set Low initially
    // GpioDataRegs.GPBSET.bit.GPIO51 = 1; // uncomment if --> Set High initially
    //--------------------------------------------------------------------------------------
    // GPIO-53 - PIN FUNCTION = EQEP1I
    GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 1; // 0=GPIO, 1=EQEP1I, 2=Resv,
    // GpioCtrlRegs.GPBDIR.bit.GPIO53 = 0; // 1=OUTput, 0=INput
    // GpioDataRegs.GPBCLEAR.bit.GPIO53 = 1; // uncomment if --> Set Low initially
    // GpioDataRegs.GPBSET.bit.GPIO53 = 1; // uncomment if --> Set High initially
    //--------------------------------------------------------------------------------------


    void Init_qep(void)
    {
    EQep1Regs.QDECCTL.bit.QSRC=0; // Quadrature count mode
    EQep1Regs.QDECCTL.bit.XCR=0; // 2x resolution (cnt falling and rising edges)
    EQep1Regs.QDECCTL.bit.QIP=1; // QIP Active low
    EQep1Regs.QDECCTL.bit.SWAP=1; // reverse the counting direction
    EQep1Regs.QEPCTL.bit.FREE_SOFT=2; // Position counter is unaffected by emulation suspend
    EQep1Regs.QEPCTL.bit.PCRM=01; // QPOSCNT reset on Maximum position
    EQep1Regs.QEPCTL.bit.IEI=10; // Initialize the position counter at the rising edge of index event
    EQep1Regs.QPOSINIT=0; // the index position
    EQep1Regs.QPOSMAX=10000; // decided by motor (8P/2500)
    EQep1Regs.QEPCTL.bit.QPEN=1; // QEP enable
    EQep1Regs.QCAPCTL.bit.UPPS=5; // 1/32 for unit position
    EQep1Regs.QCAPCTL.bit.CCPS=7; // 1/128 for CAP clock
    EQep1Regs.QCAPCTL.bit.CEN=1; // QEP Capture Enable
    }

    theta_input = EQep1Regs.QPOSCNT;
x 出现错误。请重试或与管理员联系。