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