您好,我修改M031的Sample code : SPI_SlaveFIFOMODE,內容如下: 
void SPI_Init(void) 
{ 
                SPI_Open(SPI0, SPI_SLAVE, SPI_MODE_0, 32,(uint32_t) NULL);                 
                SPI_EnableInt(SPI0, SPI_UNIT_INT_MASK); 
                NVIC_EnableIRQ(SPI0_IRQn); 
} 
 
uint32_t SPI_RX_DATA[2]; 
uint8_t SPI_RX_DATA_CNT = 0; 
uint8_t i=0; 
 
void SPI0_IRQHandler(void) 
{ 
                if( SPI_GetIntFlag(SPI0, SPI_UNIT_INT_MASK)) 
                { 
                                SPI_ClearIntFlag(SPI0, SPI_UNIT_INT_MASK);   
                         
                                SPI_RX_DATA[SPI_RX_DATA_CNT] = SPI_READ_RX(SPI0); 
                                SPI_RX_DATA_CNT++; 
                         
                                if( SPI_RX_DATA_CNT == 2 ) 
                                { 
                                                if( SPI_RX_DATA[0] == 0xB0000000 && SPI_RX_DATA[1] == 0x4FFFFFFF ) 
                                                { 
                                                                for(i=0;i<8;i++) 
                                                                {                                                 
                                                                                SPI_WRITE_TX(SPI0, 0x12345600); /* Write to TX FIFO */ 
                                                                                //while(!SPI_GetStatus(SPI0, SPI_TX_EMPTY_MASK)); 
                                                                }                                                         
                                                }         
                                                 
                                                SPI_RX_DATA_CNT = 0; 
                                }                                                 
                } 
} 
 
MASTER與SLAVE之間的溝通為: 
MASTER送出 ( 0xB0000000,  0x4FFFFFFF ) 後,將從SLAVE接收8筆32位元的資料 
 
從示波器上觀察,CS、CLK、MOSI動作皆正常, 
MASTER第一次發送命令時,CLK最後面的八筆資料MISO並無動作。 
MASTER第二次發送命令時,CLK最後面的三筆資料MISO並無動作,也就是說MASTER從SLAVE接收到前5筆正確的資料。 
MASTER第三次發送命令時,等同第一次的狀況。 
MASTER第四次發送命令時,等同第二次的狀況。 
 
 
以此類推 
 
 |