📄 imu_gw.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 + -