如何设置stm32f407 spi发送16位数据

2019-07-21 01:44发布

我的spi发送函数如下,我想发送16位数据,用逻辑分析仪观察了,是发送了16位,但是真正应用的数据和预想的有偏差:
void spi_sendbyte(u16 va)
{
    while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_BSY)==SET);
    SPI_I2S_SendData(SPI2,va);  
    while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_BSY)==SET);
    SPI_I2S_ReceiveData(SPI2);
if(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET)
{
GPIO_SetBits(GPIOB,GPIO_Pin_14);
Delay(5);
GPIO_ResetBits(GPIOB,GPIO_Pin_14);
}
}

之所以加了以下这一段,是想在spi发送结束后使PB14引脚产生一个脉冲,但是测试结果发现,PB14脉冲不是在spi发送结束后才产生,而是和spi发送第一位数据的同时产生,不知道如何检测spi发送结束。
if(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET)
{
GPIO_SetBits(GPIOB,GPIO_Pin_14);
Delay(5);
GPIO_ResetBits(GPIOB,GPIO_Pin_14);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。