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