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.

Issue about connecting two TM4C1294 through SSI in the legacy mode

Other Parts Discussed in Thread: EK-TM4C1294XL

Hello,

I’m trying to connect two TM4C1294 MCUs through SSI in the legacy SPI mode.

However, when the master send two commands without a long delay between them, the slave doesn't receive the second one.

The attached archive contains the sample codes having this issue.

In ssi_master/main.c, the data sent by the master at lines 114-115 are observed by a logic analyzer, but the slave doesn’t receive them.

The problem disappears when line 153 is uncommented or a long delay is added (using ROM_SysCtlDelay).

The master is run on a custom board while the slave is on a TM4C1924 launchpad (EK-TM4C1294XL).
ssi.zip

  • Hello user4774430,

    Most probably it is because of the UARTprintf which is adding a delay. Reduce the code delay by removing the print statements and instead using GPIO toggle to monitor the code progress.

    Regards
    Amit
  • Hello Amit,

    Thanks for your reply. However, the problem occurs when there is no delays, i.e., UARTprintf is commented out at line 153 at the master side. I think maybe it is due to an overflow of the RX FIFO at the slave side.

    Is it possible to figure out the interrupt latency of RXFF (from FIFO full to entering the interrupt handler) in this case?
  • Hello user4774430,

    Did you check the Receiver Overrun interrupt status bit on the slave side? Note that the from the time an interrupt is asserted to the time the CPU starts the interrupt handler has about 10-12 clock cycles of delay. How you manage the interrupt in the handler is a function of the coding style. I would suggest avoid delay and prints in the interrupt handler for the slave.

    Regards
    Amit
  • Hello Amit,

    Yes. RXOR was set on the entry of the interrupt handler. The problem was fixed by modifying the communication protocol. Thanks.