同步串口通讯

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//aMain.c文件

//=================================================================== #include "DSPF2833x_Project.h"

//====================函数声明======================================= interrupt void spiTxFifoIsr(void);

interrupt void spiRxFifoIsr(void);

void spi_fifo_init(void);

void error();

//===================全局变量声明==================================== Unit16 sdata[8];

Unit16 rdata[8];

Unit16 rdata_point;

//===================主函数========================================== void main (void)

{

Unit16 i;

InitSysCtrl();

DINT;

InitPieCtrl();

IER=0x0000;

IFR=0x0000;

InitPieVectTable();

InitSpiaGpio();

//为中断向量入口赋值

EALLOW;//This is needed to write to EALLOW protected registers PieVectTable.SPIRXINTA=&spiRxFifoIsr;

PieVectTable.SPITXINTA=&spiTxFifoIsr;

EDIS ; //This is needed to write to EALLOW protected registers spi_fifo_init();

//初始化要发送的数据

for(i=o;i<8;i++)

{

sdata[i]=i;}

rdata_point=0;

//使能中断向量

PieCtrlRegs.PIECTRL.bit.ENPIE=1;

PieCtrlRegs.PIEIER6.bit.INTx1=1;

PieCtrlRegs.PIEIER6.bit.INTx2=1;

IER=0x20;

EINT;

// 死循环等待中断处理

for( ; ; );

}

//********************************************************************

/*

@Description:如果发生SPI测试错误,则停止测试

*/

//********************************************************************* void error (void)

{

asm("ESTOP0); // Test failed ! Stop!

for( ; ; );

}

//*************************************************************************** /*

@Description:SPI FIFO 初始化函数

*/

//*************************************************************************** void spi_fifo_init()

{

//InitializeSPIFIFOregisters

SpiaRegs.SPICCR.bit.SPISWRESET=0; //软件复位SPI

SpiaRegs.SPICCR.all=0x001F; //数据长度为16bit,Loopback模式

SpiaRegs.SPICTL.all=0x0017; //使能中断,使能Master/Slave XMIT

SpiaRegs.SPISTS.all=0x0000;

SpiaRegs.SPIBRR=0x0063; //设置波特率

SpiaRegs.SPIFFTX.all=0xc028; //使能FIFO's,设置TX FIFO level 为8 SpiaRegs.SPIFFRX.all=0x0028; //设置RX FIFOlevel 为8

SpiaRegs.SPIFFCT.all=0x00;

SpiaRegs.SPIRRI.all=0x0010;

spiaRegs.SPICCR.bit.SPISWRESET=1; //重新使能PI

SpiaRegs.SPIFFTX.bit.TXFIFO=1;

SpiaRegs.SPIFFRX.bit.RXFIFORESET=1;

}

//================中断服务子函数==================================

//***************************************************************************** **

/*

@Description:SPI FIFO发送中断服务子函数

*/

//***************************************************************************** ***

intrrupt void spiTxFifoIsr(void)

{

Unit16 i;

for(i=0;i<8;i++)

相关文档
最新文档