两个问题:
(1)spi全双工能否这样写?谢谢
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)官方给的例程这样写,读、写分开的:
ch579的datasheet描述 :FIFO 方向设置位RB_SPI_FIFO_DIR置为1:输入模式(指示接收数据)
但官方给的函数无论是写还是读,RB_SPI_FIFO_DIR都是置0
如下:
/*******************************************************************************
* Function Name : SPI0_MasterSendByte
* Description : 发送单字节 (buffer)
* Input : d: 发送字节
* 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 : 接收单字节 (buffer)
* Input : None
* Return : 接收到的字节
*******************************************************************************/
UINT8 SPI0_MasterRecvByte( void )
{
R8_SPI0_CTRL_MOD &= ~RB_SPI_FIFO_DIR;
R8_SPI0_BUFFER = 0xFF; // 启动传输
while( !(R8_SPI0_INT_FLAG & RB_SPI_FREE) );
return ( R8_SPI0_BUFFER );
}