废话不说,上图两张。主函数只有一句话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);
---------------------------------
原子哥,把你的程序试了一下,还是不行。哎。。。问题真是不好查啊,我知道这个方案是可通的
---------------------------------
那我也没办法了
---------------------------------
原子哥, SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; 这句你是设置成两线全双工还是什么?
---------------------------------
SPI_Mode 描述
SPI_Direction_2Lines_FullDuplex SPI 设置为双线双向全双工
SPI_Direction_2Lines_RxOnly SPI 设置为双线单向接收
SPI_Direction_1Line_Rx SPI 设置为单线双向接收
SPI_Direction_1Line_Tx SPI 设置为单线双向发送
一周热门 更多>