SPI与ADS8345

来源:互联网 发布:windows 清空arp缓存 编辑:程序博客网 时间:2024/06/08 20:07

最近在用SPI发送数据控制ADS8345

原本SPI的操作子函数是这样的:

u8 SPI3rw(u8 TxData)
{
  while((SPI3->SR&SPI_I2S_FLAG_TXE)==0);//等待发送区空
  SPI3->DR=TxData;  //发送一个byte 
  while((SPI3->SR&SPI_I2S_FLAG_RXNE)==0); //等待接收完一个byte     
  return SPI3->DR;          //返回收到的数据
}

但是总是断点调试时接收到的数据不正确。然而单步调试却接到正确的数据,显然是时间因素问题

然后加了一个延迟就好了:

u8 SPI3rw(u8 TxData)
{
  while((SPI3->SR&SPI_I2S_FLAG_TXE)==0);//等待发送区空
  SPI3->DR=TxData;   //发送一个byte 

  delay(50);
  while((SPI3->SR&SPI_I2S_FLAG_RXNE)==0); //等待接收完一个byte      
  return SPI3->DR;          //返回收到的数据
}

延迟时间自己试,反正很短,还没想通为什么

0 0