📄 mcbsp_test.c
字号:
#include "DSP28_Device.h"
#include "comm.h"
#include "mcbsp.h"
/*************************************************************************/
unsigned int SampleLong=1024;
///////////////////////////////////////////
PmcbspForDec preceive;
///////////////////////////////////////////
unsigned int i,j,Com_state;
//////////////////
unsigned int Ad_data[1536]={0};
unsigned int convcount = 0;
volatile unsigned int adconvover =0;
/*******************************************************/
interrupt void ISRTimer2(void);
interrupt void ad(void);
/*******************************************************/
void main(void)
{
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
/*初始化PIE*/
InitPieCtrl();
/*初始化PIE矢量表*/
InitPieVectTable();
/*初始化MCBSP外设*/
InitMcbsp();
//初始化cputimer
InitCpuTimers();
ConfigCpuTimer(&CpuTimer2, 150, 22);
StartCpuTimer2();
InitAdc();
EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.MRINTA= &MRINTA_ISR;
PieVectTable.TINT2 = &ISRTimer2;
PieVectTable.ADCINT = &ad;
EDIS; // This is needed to disa
/*开中断*/
IER |= M_INT1;//ADC中断
IER |= M_INT6;//MCBSP
IER |= M_INT14;
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
adconvover=0;
while(adconvover==0);
for(i=0;i<SampleLong;i++) {
Ad_data[i]=(Ad_data[i]>>4)-0x555;//偏移量1v。
}
//进行数据发送
Com_Datareq(SampleLong,NUM_DATASEND);
for(;;){
Com_state=Com_Staterev(&mcbspr[0]);
if(Com_state==2) {
continue;
}
if((Com_state == 0xffff)||(Com_state == 3)) {
//通知主机程序通讯出错,准备重发
Com_Checkerr(CHECK_ERR);
}
if(Com_state == 0){
preceive=(PmcbspForDec)(&mcbspr[0]);
if(preceive->Data[0]==CHECK_ERR)
Com_Dataagin(SampleLong);
}
//数据发送
if(preceive->Data[0] == DATA_RECEIVE)
Com_Datasend( SampleLong,&Ad_data[0]);
preceive->Data[0] = 0;
}
}
interrupt void ad(void)
{
IFR=0x0000;
PieCtrl.PIEACK.all=0xffff;
if(adconvover==0){
Ad_data[convcount] = AdcRegs.RESULT0;
convcount++;
}
if (convcount==(SampleLong+SampleLong/2))
{
convcount=0;
adconvover=1;//接满标志
}
}
interrupt void ISRTimer2(void)
{
AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;
AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
}
/***********************************************************************/
// No more
/***********************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -