一般来讲SPI读写单个字节时候将要发送的数据放到发送寄存器中直接等待发送完毕;而读取的时候想寄存器中写入0(一个假写)就开始等待接收完毕,但一些特殊的时候必须等待开始发送或接收;如下代码:
int SPI_readByte(void)
{
U0DBUF=0;
while(U0CSR&0x04==0x04);//等待开始接收
while(U0CSR&0x04==0);//得到接收完毕
U0CSR&=~0x04;//清除发接收毕标记
return U0DBUF;
}
void SPI_SendByte(unsigned char data)
{
U0DBUF=data;
while(U0CSR&0x02==0x02);//等待开始发送
while(U0CSR&0x02==0);//得到发送完毕
U0CSR&=~0x02;//清除发送完毕标记
}
第一次遇到这样的问题,搞了2天就是搞不清什么原因,后来用IO模拟了SPI,然后又个搞硬件的说试试等待开始发送和接收然后再等待发送和接收结束这才搞定。
希望能够看到这个朋友在遇到这样的问题是能够快点搞定,O(∩_∩)O~