STM32F4 SPI通讯可以发送了,但是接收还是出现点问题,请问具体解决方案

2019-07-21 05:16发布

          废话不说,上图两张。主函数只有一句话while(){SPI2_ReadWriteByte(0xAA);

发送接收函数如下:
uint8_t SPI2_ReadWriteByte(uint8_t TxData)
{      
while (SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_TXE) == RESET);

  /*!< Send byte through the SPI1 peripheral */
  SPI_I2S_SendData(SPIx, TxData);

  /*!< Wait to receive a byte */
  while (SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_RXNE) == RESET);

  /*!< Return the byte read from the SPI bus */
  return SPI_I2S_ReceiveData(SPIx);
}

SCK的时钟


MOSI的时钟。看样子已经发送出0xAA 了,但是为什么接收到的是0?

但是为什么每次用串口发送MISO接收到的数据出来时都是0。

如果打开接收中断还会陷入死机的状态。
死在了这句话
 while (SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_RXNE) == RESET);





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-07-21 09:36
 精彩回答 2  元偷偷看……
yongyooh
2楼-- · 2019-07-21 11:27
回复【2楼】正点原子:
---------------------------------
原子哥,把你的程序试了一下,还是不行。哎。。。问题真是不好查啊,我知道这个方案是可通的
正点原子
3楼-- · 2019-07-21 12:52
回复【3楼】yongyooh:
---------------------------------
那我也没办法了
yongyooh
4楼-- · 2019-07-21 15:48
回复【4楼】正点原子:
---------------------------------
原子哥, SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  这句你是设置成两线全双工还是什么?
wobukansanguo
5楼-- · 2019-07-21 17:16
回复【5楼】yongyooh:
---------------------------------
SPI_Mode  描述 
SPI_Direction_2Lines_FullDuplex  SPI 设置为双线双向全双工 
SPI_Direction_2Lines_RxOnly  SPI 设置为双线单向接收 
SPI_Direction_1Line_Rx  SPI 设置为单线双向接收 
SPI_Direction_1Line_Tx  SPI 设置为单线双向发送
yongyooh
6楼-- · 2019-07-21 18:28
 精彩回答 2  元偷偷看……

一周热门 更多>