⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 f281xqep.c

📁 里面包含dsp采集电压
💻 C
字号:
/* ==================================================================================
File name:       F281XQEP.C
                    
Description:   光电编码器脉冲计数
          
=====================================================================================*/

#include "DSP281x_Device.h"
#include "f281xqep.h"

void  F281X_EV1_QEP_Init(QEP *p)
{
 
          EvaRegs.CAPCONA.all = QEP_CAP_INIT_STATE;    // 设置捕捉单元
          EvaRegs.T2CON.all = QEP_TIMER_INIT_STATE;    // 设置捕捉时钟
          EvaRegs.T2PR = 4*p->LineEncoder;             // 初始化Timer 1寄存器 
          EvaRegs.EVAIFRC.bit.CAP3INT = 1;     // 清除 CAP3 标志位
          EvaRegs.EVAIMRC.bit.CAP3INT = 1;     // 使能 CAP3 中断

          EALLOW;                       // 开写保护
          GpioMuxRegs.GPAMUX.all |= 0x0700;     // 设置捕捉管脚
          EDIS;                         // 关写保护
}


void F281X_EV1_QEP_Calc(QEP *p)
{

     int32 Tmp;

// 检查旋转方向
     p->DirectionQep = 0x4000&EvaRegs.GPTCONA.all;
     p->DirectionQep = p->DirectionQep>>14;

// 检查QEP Timer 2计数器 
     p->RawTheta = EvaRegs.T2CNT + p->CalibratedAngle;

// 计算机械角为Q15格式
     Tmp = __qmpy32by16(p->MechScaler,p->RawTheta,31);    // Q15 = Q30*Q0 
     p->MechTheta = (int16)(Tmp);                         // Q15 -> Q15
     p->MechTheta &= 0x7FFF;                              // Wrap around 0x07FFF

// 计算电角度为Q15格式
     p->ElecTheta = p->PolePairs*p->MechTheta;            // Q0*Q15 = Q15
     p->ElecTheta &= 0x7FFF;                              // Wrap around 0x07FFF
}

void F281X_EV1_QEP_Isr(QEP *p)
{

     p->QepCountIndex = EvaRegs.T2CNT;    // 设置时钟2计数器为机械角度值 
     EvaRegs.T2CNT = 0;                   // 设置时钟2计数器
     p->IndexSyncFlag = 0x00F0;           // 设置同步脉冲标记

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -