|   黄色的是MOSI引脚,蓝色的是MISO引脚。测试的时候SPI向从机写入5个字节数据,然后再读出这5个字节数据,通过示波器观察读写的数据均正确,但是通过代码接收的数据却全是0XFF。
 SPI配置如下:
 
   GPIO_Init(NRF_IRQ_PORT, NRF_IRQ_PIN, GPIO_Mode_In_PU_No_IT);
        GPIO_Init(NRF_CSN_PORT, NRF_CSN_PIN, GPIO_Mode_Out_PP_High_Fast);
        GPIO_Init(NRF_CE_PORT, NRF_CE_PIN, GPIO_Mode_Out_PP_High_Fast);
        GPIO_Init(NRF_SSK_PORT, NRF_SSK_PIN, GPIO_Mode_Out_PP_Low_Fast);
        GPIO_Init(NRF_MOSI_PORT, NRF_MOSI_PIN, GPIO_Mode_Out_PP_Low_Fast);
        GPIO_Init(NRF_MISO_PORT, NRF_MISO_PIN, GPIO_Mode_In_PU_No_IT);
    SPI_Init(SPI1, 
           SPI_FirstBit_MSB, 
           SPI_BaudRatePrescaler_4, 
           SPI_Mode_Master,
           SPI_CPOL_Low, 
           SPI_CPHA_1Edge, 
           SPI_Direction_2Lines_FullDuplex,                      
           SPI_NSS_Soft, 
           0x07);
                                                 
    SPI1->DR = 0; 
    SPI_Cmd(SPI1, ENABLE);
尝试过修改数据捕获边缘、波特率均不行。
 读写数据代码如下:
 
 static uint8_t SPI_ReadWriteByte(uint8_t byte)
{
    while (SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET);     
    SPI_SendData(SPI1, byte);
        
    while (SPI_GetFlagStatus(SPI1, SPI_FLAG_RXNE) == RESET);
    return SPI_ReceiveData(SPI1);
}
 
 |