×
嵌入式 > 技术百科 > 详情

STM8 SPI 例程 通信出错

发布时间:2020-06-03 发布时间:
|
这个STM8的SPI通信也够奇葩的,跟STM32有大区别。光判断发送空和接收空的标志还不行,还必须判断忙标志位,而且读数的时候要等忙标志完毕才能读,废话少说上代码:

这是一段发2字节收2字节的代码,注意如果第二个字节接收才有效的话,也需要发送第二个字节才能提供时钟进行接收:

 
  1. GPIO_WriteLow(GPIOA, GPIO_PIN_3);  
  2.   
  3.     while (SPI_GetFlagStatus(SPI_FLAG_TXE) == RESET){}  
  4.     SPI_SendData(0x80 | 0x75);  
  5.   
  6.     while(SPI_GetFlagStatus(SPI_FLAG_BSY) == SET){}  
  7.   
  8.     while(SPI_GetFlagStatus(SPI_FLAG_RXNE) == RESET){} /* ¸Ã×Ö½Ú¶ªÆú */  
  9.     ret1 = SPI_ReceiveData();  
  10.   
  11.   
  12.     while (SPI_GetFlagStatus(SPI_FLAG_TXE) == RESET){}  
  13.     SPI_SendData(0x75);  
  14.   
  15.   
  16.     while(SPI_GetFlagStatus(SPI_FLAG_BSY) == SET){}  
  17.   
  18.     while(SPI_GetFlagStatus(SPI_FLAG_RXNE) == RESET){}  
  19.     ret2 = SPI_ReceiveData();  
  20.     GPIO_WriteHigh(GPIOA, GPIO_PIN_3);  
  21.  

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
德州仪器推出稳压误差仅为1%的无电容LDO产品