最近在做一个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**************************************************************************************/
此帖出自
小平头技术问答
我怀疑是从机,即mcu spi通信的对象出了问题。不知道从机是什么芯片
一周热门 更多>