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.

RTOS/CC1350: Slave SPI mode generating 0 byte on 1st frame

Part Number: CC1350

Tool/software: TI-RTOS

Dear Support:

When using SPI slave mode there is the following text in the README.html file of the SPI slave driver example:

"Note: The SPI peripheral on CC13x0, CC26x0, and CC26x0R2 devices have a bug which may result in TX data being lost when operating in SPI slave mode (SSI Advisory 04 & 05 in device errata). This bug causes the first SPI frame sent from the slave to be 0 instead of the actual data. When the master prints the received message to the display, the 0 will be interpreted as a NULL termination character & the message will not be printed. When this occurs, halt the master SPI device & check the contents of the receive buffer; the slave message should have been received with the first frame as 0."

and in the Errata of the CC1350 for Advisory 4, there is the following text:

"Details: When the SSI is programmed to operate in slave mode, the data written to the SSI data register (SSIn:DR) in the SYSBUS clock domain can be sampled in the SSPCLK domain or without any synchronization. This sampling condition occurs when all of the following conditions are met: • The SSI Transmit FIFO is empty. • The SSI Data register (SSIn:DR) write access occurs as a new SPI master transfer starts. • The SSI slave-state machine samples data to transmit. This issue causes written data to be lost.

Workaround(s): Use TI's Unified Network Processor Interface (NPI)"

So I am confused.  I am seeing a problem when using SPI slave mode that is explained by the above - on random SPI transfers, I am seeing the 1st byte being output to be zero which I think is what the above is describing.  But I am confused as to the workaround described above.  I assume this is a hardware problem that can't be fixed currently until we get a new silicon revision that fixes this.  So how does going to NPI fix this problem?   I assume the workaround is to just output 1 more byte when outputting in SPI slave mode and disregard the 1st byte since sometimes it can be zero - hence the fix would be done in software.  Is this correct?   And if so, can you explain how moving to NPI would be a workaround as well?  Please advise.

Thanks,
Tim