DA14580的SPI_CTRL_REG (0 x50001200)中的bit13 SPI_INT_BIT是接收中断标志位还是发送中断标志位?
如果说是发送中断标志位,那么数据还未发送完毕时此位为0,发送数据完毕即TX注册或fifo为空时此位为1 ?
如果说是接收中断标志位,那么未接收到数据时此位为0,接收到数据后此位为1?
程序中下面而语句究竟是在等待发送寄存器发送数据结束还是在等待接收寄存器接收数据完成吗?
SetWord16 (SPI_RX_TX_REG0 0 x0500);/ /写数据到SPI_RX_TX_REG0
做
{
} while (GetBits16(SPI_CTRL_REG, SPI_INT_BIT) == 0);
dataRead = GetWord16 (SPI_RX_TX_REG0);/ /从SPI_RX_TX_REG0寄存器读数据
上述语句完成的功能是发送一个命令0 x0500给外挂spi闪光,闪光会返回一个数据给da14580。
关键词:
设备:
0 = RX寄存器或FIFO为空。
1 = SPI中断。数据已经传送和接收-
SW必须通过写入SPI_CLEAR_INT_REG来重置。
既是接收中断,也是发送中断
进一步问一下,当SPI_RX_TX_REG0接收寄存器接收到数据后为满,如果想清空它,那么到底是采用读取SPI_RX_TX_REG0数据,还是采用将SPI_INT_BIT位清零?哪种方式才是真正清空接收寄存器?
读取才会清空接收寄存器,接收寄存器有数据的情况下SPI_INT_BIT会一直为1
如果不清空接收寄存器,即如你上面所说接收寄存器有数据的情况下SPI_INT_BIT会一直为1,那么还可以继续接收数据吗?还是说后面过来的数据都被丢弃了?