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

📄 mcbsp_test.c

📁 合众达SEED-DTK2812 光盘内容 DSP源码 用户指南 实验手册
💻 C
字号:

#include "DSP28_Device.h"
#include "comm.h"
unsigned int McBSP_VarRx[128];
unsigned int i,j;
unsigned int send_flag;
/*帧长度的设定*/
#define  FRAMLONGTH    0x80
#define  DataLongth    0x7c

typedef struct _McbspForDec2812{
	unsigned int Length;
	unsigned int Type;
	unsigned int Mutul;
	unsigned int Data[DataLongth];
	unsigned int Check;
}McbspForDec2812, *PMcbspForDec2812; 

PMcbspForDec2812 psend;	
int k;
/*******************************************************/
unsigned int databuffer[6]={1111,2222,3333,4444,5555,6666};
unsigned int num=6; //can modfied ,but limit <=6
/*******************************************************/
void main(void)
{

		/*初始化系统*/
	InitSysCtrl();

	/*关中断*/
	DINT;
	IER = 0x0000;
	IFR = 0x0000;

	/*初始化PIE*/
	InitPieCtrl();

	/*初始化PIE矢量表*/
	InitPieVectTable();	
	
	/*初始化MCBSP外设*/
	InitMcbsp();
    
    for(i = 0; i < 128; i++)
    {
    	McBSP_VarRx[i] = 0;
    }

    // Enable global Interrupts and higher priority real-time debug events:
	
	EINT;   // Enable Global interrupt INTM
	ERTM;	// Enable Global realtime interrupt DBGM
    psend=(PMcbspForDec2812)(&McBSP_VarRx[0]);  

// Step 6. IDLE loop. Just sit and loop forever (optional):	
	for(;;)
	{
	    Data_send(num,&databuffer[0]);
	    for(i=0;i<0xffff;i++);
	    for(i=0;i<0xffff;i++);
	    for(i=0;i<0xffff;i++);
	}
} 	

/***********************************************************************/
/*	函数声明:	MCBSP数据发送; 发送命令帧时用此函数                    */
/*                                                                     */
/*	函数功能:	每次发送一帧的长度                                     */
/*                                                                     */
/*	参数:		addr,发送数据的地址                                    */
/***********************************************************************/
void mcbsp_tx(unsigned int * addr)
{
	int tempdata,tempnum;
	unsigned int check = 0;

    for(tempnum=0;tempnum<(FRAMLONGTH-1);tempnum++)
	{  
	    tempdata=*addr++;
	    check=check^tempdata; 
	    while(Mcbsp_TxRdy() == 0); 
    	   McbspRegs.DXR1.all = tempdata;
   	}
	if(tempnum==(FRAMLONGTH-1))
    {
    	*addr=check;
    	while(Mcbsp_TxRdy() == 0);
    	    McbspRegs.DXR1.all = check;
    }
	tempnum=0; 
}
/*******************************************************/
/*数据发送函数: Data_send                             */
/*******************************************************/                                    
int Data_send(unsigned int d_num,unsigned int *daa)
{

    psend->Length=FRAMLONGTH;
    psend->Type=NUM_DATASEND;
    psend->Mutul=FRAME_SING;
    psend->Data[0]=d_num;
    for(k=1;k<=d_num;k++)
      psend->Data[k]=*(daa+k-1);
    mcbsp_tx((unsigned int *)psend);
}

/***********************************************************************/
//	No	more
/***********************************************************************/

⌨️ 快捷键说明

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