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

📄 f2407hall3.c

📁 TI公司的DSP(LF2407A)编写的有霍尔位置传感器的无刷直流电机控制程序,内含子程序说明
💻 C
字号:
 /* ==================================================================================
File name:       F2407HALL3.C
                    
Originator:	Digital Control Systems Group
			Texas Instruments

Description:  This file contains source for the Capture drivers for the F2407

Target: TMS320F2407 family
    
=====================================================================================
History:
-------------------------------------------------------------------------------------
 05-31-2007	Version 3.20: Using DSP2407
------------------------------------------------------------------------------------*/

#include <regs240x.h>
#include <f2407hall3.h>

void  F2407_EV2_HALL3_Init(HALL3 *p)
{
		int HallGpio_temp,HallGpio,i;
        MCRC=MCRC&0x0fc7f;    					// Configure CAP4-6 as GPIO (IOPE7+IOPF0-1)
        PEDATDIR=PEDATDIR&0x7fff;				//Data Direction as input
       PFDATDIR=PFDATDIR&0x0fcff;
        
        HallGpio = PFDATDIR;
        HallGpio = (HallGpio&0x03)<<1;
       HallGpio_temp =PEDATDIR;
		if((HallGpio_temp&0X0080)!=0)		   // HallGpio.2-0 = IOPF1-0+IOPE7
		HallGpio=HallGpio+1;
		for (i=0;i<=3;i++)
		p->HallMap[i] == HallGpio;
       	switch(HallGpio)                 	  // motor  table
	    {
		 case 1:{p->tab=5;break;}
		 case 2:{p->tab=3;break;}
		 case 3:{p->tab=4;break;}
		 case 4:{p->tab=1;break;}
		 case 5:{p->tab=6;break;}
		 case 6:{p->tab=2;break;}
		 default:p->tab=p->tab;
		}
        CAPCONB = HALL3_INIT_STATE;  		   // Set up capture units, CAP4-6 using GP timer 4
        CAPFIFOB = 0x1500;           		   // Write "01" each CAPxFIFO for EV to believe that there is already an entry in the FIFO

        MCRC=MCRC|0x0380;    					// Set up the capture4-6 pins to primary functions

}


void F2407_EV2_HALL3_Read(HALL3 *p)
{
	int HallGpio_temp,HallGpio,i;
    p->CapFlag = EVBIFRC;  			  // Save capture flag register, convenient for Watch Window
    if (p->CapFlag==0)                 // NO_EDGE_DETECTED: No hall signal edges detected on CAP4-6 (bits 0-2)
    {
    }
    else                               // EDGE_DETECTED: Any hall signal edges detected on CAP1-3
    {
        EVBIFRC = 0x0007;         // Clear all CAP1-3 Int-flags 
		MCRC=MCRC&0x0fc7f;    					// Configure CAP4-6 as GPIO (IOPE7+IOPF0-1)
        PEDATDIR=PEDATDIR&0x7fff;				//Data Direction as input
        PFDATDIR=PFDATDIR&0x0fcff;
		for (i=0;i<=3;i++)
  	   {      
        HallGpio = PFDATDIR;
        HallGpio = (HallGpio&0x03)<<1;
        //HallGpio_temp =PEDATDIR;
		if((PEDATDIR&0X0080)!=0)		   // HallGpio.2-0 = IOPF1-0+IOPE7
		HallGpio=HallGpio+1;
		
		p->HallMap[i] = HallGpio;
	   }
        MCRC=MCRC|0x0380;    					// Set up the capture4-6 pins to primary functions
	    if((p->HallMap[0] == p->HallMap[1])&&(p->HallMap[2] == p->HallMap[3])&&(p->HallMap[1] == p->HallMap[3]))
      	p->HallMapPointer =p->HallMap[0]; 
       
       	switch(p->HallMapPointer)                  //old motor  table
	    {
		 case 1:{p->tab=5;break;}
		 case 2:{p->tab=3;break;}
		 case 3:{p->tab=4;break;}
		 case 4:{p->tab=1;break;}
		 case 5:{p->tab=6;break;}
		 case 6:{p->tab=2;break;}
		 default:p->tab=0;
/*		 case 1:{p->tab=3;break;}
		 case 2:{p->tab=5;break;}
		 case 3:{p->tab=4;break;}
		 case 4:{p->tab=1;break;}
		 case 5:{p->tab=2;break;}
		 case 6:{p->tab=6;break;}
		 default:p->tab=0;*/
		} 
    }  
}



⌨️ 快捷键说明

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