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

📄 imu_gw.c

📁 c6713的源代码
💻 C
字号:
#include "IMU_GW.h"
///////////////////////////////////////////////////////////
//ADS8364
unsigned short ads8364_ready;		// Set when ADC frame is done
unsigned short ads8364_readNdx;		// A/D read index
unsigned long int ads8364_totalNdx;

unsigned short ADC_address[6];
short A0_temp[ADC_SAMPLE_SIZE];
short A1_temp[ADC_SAMPLE_SIZE];
short B0_temp[ADC_SAMPLE_SIZE];
short B1_temp[ADC_SAMPLE_SIZE];
short C0_temp[ADC_SAMPLE_SIZE];
short C1_temp[ADC_SAMPLE_SIZE];
float Ax,Ay,Az,Wx,Wy,Wz;
short AxSum,AySum,AzSum,WxSum,WySum,WzSum;
short AxMax,AxMax0,AxMin,AxMin0;
short AyMax,AyMax0,AyMin,AyMin0;
short AzMax,AzMax0,AzMin,AzMin0;
short WxMax,WxMax0,WxMin,WxMin0;
short WyMax,WyMax0,WyMin,WyMin0;
short WzMax,WzMax0,WzMin,WzMin0;

//volatile float* pAddr0;

///////////////////////////////////////
//TLV2548
unsigned short tlv2548_ready;
unsigned short tlv2548_readN;    
unsigned long int  tlv2548_totalNdx; 
unsigned short C_temp[ADC_SIZE];
float  T0,T1;
//volatile float* pAddr1;
volatile short* pAddr1;

//////////////////////////////////////
//XR16L674
unsigned char buf[100];

//////////////////////////////////////
//test timer0
TIMER_Handle hTimer;
TIMER_Config MyConfig ;
unsigned int timer0_totalNdx;

//////////////////////////////////////
//time index
unsigned long int index;
//主程序入口
void main()
{
	//初始化
	unsigned short i,tmp;
    for(i=0;i<ADC_SAMPLE_SIZE;i++)
    {
    	A0_temp[i]=0;A1_temp[i]=0;
    	B0_temp[i]=0;B1_temp[i]=0;
    	C0_temp[i]=0;C1_temp[i]=0;
    }
    
    Ax=Ay=Az=Wx=Wy=Wz=0.0;
    AxSum=AySum=AzSum=WxSum=WySum=WzSum=0;
    AxMax=AxMax0=AxMin=AxMin0=0;
    AyMax=AyMax0=AyMin=AyMin0=0;
    AzMax=AzMax0=AzMin=AzMin0=0;
    WxMax=WxMax0=WxMin=WxMin0=0;
    WyMax=WyMax0=WyMin=WyMin0=0;
    WzMax=WzMax0=WzMin=WzMin0=0;
    
    for(i=0;i<ADC_SIZE;i++)
    {
   	    C_temp[i]=0;
    }
    
    T0=0.0;
    T1=0.0;
    
    for(i=0;i<100;i++)
	{
		buf[i]=i;
	}
	
	index=0;
	
    //pAddr0 = (float*)(SDRAM_ADDR+0x200000);
    //pAddr1 = (float*)(SDRAM_ADDR+0x100000);
	pAddr1 = (short*)(SDRAM_ADDR+0x100000);
	        
	//initial dsp
	//初始化DSP
	CSL_init();//csl.h
	CACHE_enableCaching(CACHE_CE00);//csl_cache.h
	CACHE_setL2Mode(CACHE_64KCACHE);
	//中断
	IRQ_resetAll();
	*(unsigned int*)_IRQ_EXTPOL_ADDR =0x0F;
	IRQ_nmiEnable();
    IRQ_globalEnable();      
	   
  	//sdram flash test!!!
  	//初始化以下芯片
    pll_set();	//DSP6713.c	
	sdram_test();//DSP6713.c
	flash_test();//DSP6713.c
	
	//ADS 8364 test!
	init_timer1();//XR16L784.c
	software_init_ADC();//ADS8364.c
	
	//TLV 2548 test!
	McBSP0_init();//TLV2548.c
	ADC_init();//TLV2548.c
	while (tlv2548_ready==0)
    {
    	ADC_init();
    }
    
    McBSP0_write(channel3);//TLV2548.c
    tmp = McBSP0_read();
	if(tmp){}
	
	//XR16L784
	Initialize_XR16LChip();//XR16L784.c
    Initialize_XR16L_Chan(0);
    
    //test!!!
	//XR16L_SendData(0,buf,6);
	
	//timer0
	init_timer0();//Timer0.c
	hTimer = TIMER_open(TIMER_DEV0,TIMER_OPEN_RESET);//TIMER_DEV1
	TIMER_config(hTimer,&MyConfig);
	IRQ_hook(IRQ_EVT_XINT1,Timer0_isr);//IRQ_EVT_RINT1
    IRQ_enable(IRQ_EVT_TINT0);//IRQ_EVT_TINT1
    IRQ_hook(IRQ_EVT_EXTINT5,ext5_isr);//
    IRQ_enable(IRQ_EVT_EXTINT5);
    IRQ_hook(IRQ_EVT_EXTINT6,ext6_isr);
    IRQ_enable(IRQ_EVT_EXTINT6);
	TIMER_start(hTimer);
	
	while(1)
	{
		if(ads8364_ready) 
		{
		    index++;
		    buf[0]=0xAA;
		    buf[1]=0x22;
		    memcpy(buf+2,&Ax,4);
		    memcpy(buf+6,&Ay,4);
		    memcpy(buf+10,&Az,4);
		    memcpy(buf+14,&Wx,4);
		    memcpy(buf+18,&Wy,4);
		    memcpy(buf+22,&Wz,4);
		    memcpy(buf+26,&T0,4);
		    memcpy(buf+30,&index,4);
		    buf[34]=0x00;
		    buf[35]=0x00;
			ads8364_ready = 0;
    		XR16L_SendData(0,buf,36);//发送函数   //XR16L784.c 		
		}
		if(tlv2548_ready)
		{	             
			tlv2548_ready = 0;
		}	
	}
}

⌨️ 快捷键说明

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