兩個(gè)問(wèn)題:
(1)spi全雙工能否這樣寫(xiě)?謝謝
uint8_t ch57x_hal_spi_transfer(uint8_t data) {
? ? R8_SPI0_BUFFER = data;
? ? while ( !(R8_SPI0_INT_FLAG & RB_SPI_FREE) );
? ? return ( R8_SPI0_BUFFER );
}
(2)官方給的例程這樣寫(xiě),讀、寫(xiě)分開(kāi)的:
ch579的datasheet描述 :FIFO 方向設(shè)置位RB_SPI_FIFO_DIR置為1:輸入模式(指示接收數(shù)據(jù))
但官方給的函數(shù)無(wú)論是寫(xiě)還是讀,RB_SPI_FIFO_DIR都是置0
如下:
/*******************************************************************************
* Function Name? : SPI0_MasterSendByte
* Description? ? : 發(fā)送單字節(jié) (buffer)
* Input? ? ? ? ? : d: 發(fā)送字節(jié)
* Return? ? ? ? ?: None
*******************************************************************************/
void SPI0_MasterSendByte( UINT8 d )
{
? ? R8_SPI0_CTRL_MOD &= ~RB_SPI_FIFO_DIR;
? ? R8_SPI0_BUFFER = d;
? ? while( !(R8_SPI0_INT_FLAG & RB_SPI_FREE) );
}
/*******************************************************************************
* Function Name? : SPI0_MasterRecvByte
* Description? ? : 接收單字節(jié) (buffer)
* Input? ? ? ? ? : None
* Return? ? ? ? ?: 接收到的字節(jié)
*******************************************************************************/
UINT8 SPI0_MasterRecvByte( void )
{
? ? R8_SPI0_CTRL_MOD &= ~RB_SPI_FIFO_DIR;
? ? R8_SPI0_BUFFER = 0xFF;? ? ? ? ? ?// 啟動(dòng)傳輸
? ? while( !(R8_SPI0_INT_FLAG & RB_SPI_FREE) );
? ? return ( R8_SPI0_BUFFER );
}