求助大神,我用的M482做主机,nano100做从机。使用硬件spi通信,主机给从机发送5个字节,从机每次都只能收到最后一个字节,这个是为什么。从机是通过中断来接收消息的。 
主机发送代码: 
void SPI_Send_Array(uint8_t *data, uint32_t length) 
{ 
    uint32_t i;   
    // 拉低片选信号,开始传输 
                SPI_CS_Control(1);    
    // 循环发送数据 
    for(i = 0; i < length; i++) 
    { 
        // 等待TX FIFO不满 
        while(SPI_GET_TX_FIFO_FULL_FLAG(SPI0));         
        // 写入数据到TX FIFO 
        SPI_WRITE_TX0(SPI0, data[i]);         
        // 等待传输完成 
        while(SPI_IS_BUSY(SPI0)); 
    }    
    // 拉高片选信号,结束传输 
                SPI_CS_Control(0); 
} 
从机中断接收: 
void SPI0_IRQHandler(void) 
{     
    static uint32_t rx_index = 0;     
    // Check RX FIFO interrupt flag 
    if(SPI_GET_STATUS(SPI0) & SPI_STATUS_RXINT_STS_Msk) 
    { 
        // Read data from RX FIFO while it's not empty 
        while(!SPI_GET_RX_FIFO_EMPTY_FLAG(SPI0) && rx_index < 5) 
        { 
            rx_data[rx_index] = SPI_READ_RX0(SPI0); 
            rx_index++; 
            // When all 5 bytes are received, process or reset 
            if(rx_index == 5) 
            { 
                rx_index = 0; 
            } 
        } 
    }     
                SPI_CLR_UNIT_TRANS_INT_FLAG(SPI0); 
} |   
     
  
 |