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

📄 dsp28_mcbsp.c

📁 合众达SEED-DTK2812 光盘内容 DSP源码 用户指南 实验手册
💻 C
字号:
//
//      TMDX ALPHA RELEASE
//      Intended for product evaluation purposes
//
//###########################################################################
//
// FILE:	DSP28_McBSP.c
//
// TITLE:	DSP28 Deviec McBSP Initialization & Support Functions.
//
//###########################################################################
//
//  Ver | dd mmm yyyy | Who  | Description of changes
// =====|=============|======|===============================================
//  0.55| 06 May 2002 | L.H. | EzDSP Alpha Release
//  0.56| 20 May 2002 | L.H. | No change
//  0.57| 27 May 2002 | L.H. | No change
//###########################################################################

#include "DSP28_Device.h"
#include "comm.h"
#include "mcbsp.h"

PmcbspForDec psend;	
unsigned int RevBuffer[FRAMLENGTH];
unsigned int mcbspx[FRAMLENGTH];
//---------------------------------------------------------------------------
// InitMcbsp: 
//---------------------------------------------------------------------------
// This function initializes the McBSP to a known state.
//
void InitMcbsp(void)
{
	EALLOW;
	GpioMuxRegs.GPFMUX.all = 0x3F00;
	EDIS;
	
	PieCtrl.PIEIER6.bit.INTx5 = 1;
	PieCtrl.PIEIER6.bit.INTx6 = 1;
	
	McbspRegs.SPCR1.bit.RRST = 0;
	McbspRegs.SPCR2.bit.XRST = 0;
	McbspRegs.SPCR2.bit.GRST = 0;
	
	McbspRegs.SPCR1.all = 0x0080;
	McbspRegs.XCR1.all = 0x40;
	McbspRegs.XCR2.all = 0x01;
	McbspRegs.RCR1.all = 0x40;
	McbspRegs.RCR2.all = 0x01;
	McbspRegs.PCR1.all = 0x0A00;
	
	McbspRegs.SPCR2.bit.GRST = 1;
	
	McbspRegs.SPCR1.bit.RINTM=0;
	McbspRegs.SPCR2.bit.XINTM=0;	
	NOP;
	NOP;
	
	McbspRegs.SRGR1.all = 0xffff;
	McbspRegs.SRGR2.all = 0x2000;
	McbspRegs.SPCR1.bit.RRST = 1;
	McbspRegs.SPCR2.bit.XRST = 1;
	
	NOP;
	NOP;
}

unsigned int Mcbsp_TxRdy(void)
{
	if(McbspRegs.SPCR2.bit.XRDY == 1)
	{
		return(1);
	}
	else
	{
		return(0);
	}
}

unsigned int Mcbsp_RxRdy(void)
{
	if(McbspRegs.SPCR1.bit.RRDY == 1)
	{
		return(1);
	}
	else
	{
		return(0);
	}
}
/***********************************************************************/
/*	函数声明:	MCBSP数据发送; 发送命令帧时用此函数                    */
/*                                                                     */
/*	函数功能:	每次发送一帧的长度                                     */
/*                                                                     */
/*	参数:		addr,发送数据的地址                                    */
/***********************************************************************/
void mcbsp_tx(unsigned int * addr)
{
	int tempdata,tempnum;
	unsigned int check = 0;

    for(tempnum=0;tempnum<(FRAMLENGTH-1);tempnum++)
	{  
	    tempdata=*addr++;
	    check=check^tempdata; 
	    while(Mcbsp_TxRdy() == 0); 
    	   McbspRegs.DXR1.all = tempdata;
   	}
	if(tempnum==(FRAMLENGTH-1))
    {
    	*addr=check;
    	while(Mcbsp_TxRdy() == 0);
    	    McbspRegs.DXR1.all = check;
    }
	tempnum=0; 
}
/*******************************************************/
/*数据发送函数: Data_send                             */
/*******************************************************/                                    
void Mcbsp_Datasend(unsigned int d_num,unsigned int *daa,unsigned int type)
{
    
    unsigned int k;
    psend=(PmcbspForDec)(&mcbspx[0]);   
    psend->Length=FRAMLENGTH;
    psend->Type=type;
    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 + -