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.

TM4C1294 SSI issues



I am using QSSI port 2, single data line transmission.  While developing a driver for it discovered some unexpected behavior and wanted to know if there is any explanation for what I see, or if it should be added to the errata.

My setup:

Single bit (not dual or quad), configured as master, Gpio control of chipselect, Rx/Tx FIFOS, interrupt driven, using system clock as input to module.

What works:

My custom board communicates just fine with the device.  I get the data I expect.

Interrupts fire and I get into the ISR to transfer data from the RxFifo, re-fill the TxFifo.

RxFifo half full or more interrupt and TxFifo half empty or less are observable in the raw interrupt status.

What I didn't expect:

Using the CCS debugger to display SSI Regs caused RxFIFO data to be removed one at a time for each single step I performed.

The Rx timeout and Tx End of Transmission never showed up for me in the raw interrupt status register as I would have expected.  Rx Fifo Not Empty bit was 1, and it didn't matter how much time I waited - the Rx Timeout bit in the raw interrupt status never appeared.  Tx Fifo WAS empty, but I never got an end of transmission interrupt either.

As a work-around, I wrote a function in my driver to determine if the transaction was complete.  I had to resort to checking if I had less than 4 bytes (FIFO is 8 bytes) remaining to complete the transfer, and if so, I manually pull data from the RxFifo if it was not empty.

The most important information I wish to understand is this:  Under what circumstances/configuration might the Rx Timeout and Tx End of Transmission bits in the raw interrupt status register be inhibited?  I am NOT looking at the masked interrupt status.

Thanks.

  • Hello James,

    The RX Timeout is based on the SSI FIFO read. So if the SSIDR is in the debug window reading out data, it can cause the RX Timeout interrupt bit not to be assertd.

    As for the Tx End of Transmission, that should still occur. However do note the errata SSI#07 which is inline with the behavior you are seeing.

    Regards
    Amit