关于SPI长时间通讯的问题

2019-03-26 08:03发布

最近在做一个SPI通讯的实验,SPI边发边收且循环执行,刚开始程序运行正常,但是运行几个小时后程序就卡在while(!SPIS_SPRF)那里跳不出来了,至今找不到问题。求高人指点啊,小弟谢谢了。 /******************************************************************************************
| FUNCTION NAME : SPI_Init
| CALLED BY : xxxx
| PRECONDITIONS : xxxx
| INPUT PARAMETERS : xxxx
| OUTPUT PARAMETERS: xxxx
| RETURN VALUE : xxxx
| DESCRIPTION : SPI initialize
| NOTE : xxxx
|*******************************************************************************************/
void SPI_Init(void) /*set SPI clock(baud rate);data format;MASTER mode*/
{
SPIC1 = 0X54; /*enable SPI;master mode;samping in the falling edge*/
SPIC2 = 0X00;
// SPIBR = 0X30; /*SPICLK = BUSCLK/8*/
SPIBR = 0X32; /*6*16=96*/
} /******************************************************************************************
| FUNCTION NAME : SPI_RW
| CALLED BY : xxxx
| PRECONDITIONS : xxxx
| INPUT PARAMETERS : *Lp_u_SpiTxBuf,uSiz
| OUTPUT PARAMETERS: *Lp_u_SpiRxBuf
| RETURN VALUE : xxxx
| DESCRIPTION : SPI write and receive funtion,
| NOTE : the SPI communication here is aimed at TPIC84134
|*******************************************************************************************/
void SPI_RW(uint8 *Lp_u_SpiTxBuf,uint8 *Lp_u_SpiRxBuf,uint8 uSiz)
{
uint8 Idx;
uint8 temp;
temp = SPIS;
temp = SPID;
for(Idx=0;Idx<uSiz;Idx++)
{
while(!SPIS_SPTEF); /*wait SPI TxBuffer idle*/
SPID = Lp_u_SpiTxBuf[Idx];
while(!SPIS_SPRF); /*wait RxBuffer full*/
Lp_u_SpiRxBuf[Idx] = SPID; /*read the received data*/ }  
  
}
/*EOF**************************************************************************************/ 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。