This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

F28335 spi发送数据问题

大家好,我将ti的spi——lookback的例程改为SPI的正常发送模式,然后设置一个延时函数,每隔一段时间将SPISTE(设置0激活发送)这个片选信号拉高,发现上位机可以接受到数据,但不是正确的数据,这里我没有用到fifo,直接往TXBUF中写的数据,我该怎样判断移位寄存器将最后一位数据发送完毕,这样我在将cs拉高,就不用这个delay延时函数了,spi中是怎样判断移位寄存器中的数据发送完成,有没有什么标志位?谢谢

  • SPIST.TX BUF FULL FLAG位为1表示TXBUF数据满,为0表示TXBUF为空,可以往里面写数据。

  • 你可以检测SPIST寄存器的SPI INT FLAG来确定上一次的数据是否已经被完全发送出去。

  • 发送FIFO寄存器和TxBUF、SPIDAT是怎样一个数据传递的关系?我在程序中该怎样给TxFIFO寄存器赋值,我知道TxBUF寄存器和SPIDAT移位寄存器之间的关系,我可以直接把数据赋给TxBUF寄存器,txbuf寄存器会自动给SPIDAT移位寄存器;但是怎样把数据先赋给FIFO,在FIFIO中积攒一会,再赋给TBUF寄存器?谢谢

  • 我看到SPI INT FLAG该位置位一次后,一直为零,这是什么情况?

  • 使用FIFO时,TXBUF相当于一个缓存,当TXBUF中的数据全部放入SPIDAT之后,FIFO会自动写数据到TXBUF,TXBUF和SPIDAT之间的关系不变。在写FIFO时,仍然是向TXBUF的地址写数据,只不过一次不只是写一个数据,而是一次性将多个数据全部写进TXBUF,写完后实际的数据就会存储在FIFO中

     

  • SPI INT FLAG在中断响应后或者CPU读RXBUF后会自动清除的。