问下这不是个SPI数据交换函数吗?如果用这个函数来制作“读取”函数,返回值是不是永远和发送值一样了?
具体问题如下:(利用SPI1_ReadWriteByte(u8 TxData)函数制造xReadCH376Data( void ))
SPI1_ReadWriteByte(u8 TxData)
{
u8 retry=0;
while((SPI1->SR&1<<1)==0) //????·???????
{
retry++;
//if(retry>200)return 0;
}
SPI1->DR=TxData; //·???????byte
retry=0;
while((SPI1->SR&1<<0)==0) //?????????ê????byte
{
retry++;
//if(retry>200)return 0;
}
return SPI1->DR; //·?????????????
}
UINT8 xReadCH376Data( void )
{
UINT8 i;
mDelayuS(10);
i = SPI1_ReadWriteByte( 0xFF );
return( i );
}
这么一来这个“读取”程序是不是要不停读出0xFF了?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
是可以运行的.这个你心知肚明.
为什么呢?
因为SPI是全双工接口,实际上有2个DR,一个用于发送的写数据的DR,一个用于接收的收数据的DR.
你往DR写值,调用的是发送DR.
你读DR的值,调用的是接收DR.
所以不会混淆的!
---------------------------------
实际上返回了0xFF,可能是其他地方出了问题,我再找找原因吧,谢谢了!
我也出出现这个问题,自己写的程序读出来的返回值一直是空,使用库函数和寄存器例程都是读出来的 空0xff。(战舰V3)
读之前都有往W25Q128中写内容。我使用原子哥的程序也是这样
一周热门 更多>