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.

How to reset SPI / EDMA

Other Parts Discussed in Thread: AM3359

Hello,

regarding my project with SPI and EDMA on the ICE Board am3359, i using a dataframe with a checksum, to make sure, that there was no transmission error.

If a transmission error occur, this will be on every next new transmission. It seems that there is an one byte offset. So that the checksum check fails.

What would be the recommend way to reinitialize the SPI and EDMA?

This solution has a duration of some µs (more than 10µs):  "Simply" SPI soft-reset and a new SPI init, same for the EDMA ( Paramsets) ?

Is there a better recommend solution, which would be faster?

Thanks.

  • Hi Daniel,
    The method you describe is what is recommended by the AM335X TRM. As an idea, have you thought of resyncing to the dataflow instead? (I don't know what is the data format of your packets)
  • Hi,

    i hoped there is another solution.

    Maybe it will be enough to save the actual SPI Config register, Soft-Reset and then write back to the SPI config register. After this is done, i would reset the SRC and DST adress and BCNT in EDMA paramsets, instead of using the EDMASetParam() like in the initialization ?

    This will be done by registes access, without APIs.

    Another question is, why happend this faulty behavoir? (SPI running with 8MHz clock, als slave). And when i start the EtherCAT Master to communicate with the ICE-Board the same error occurs. (byte offset)
     The EDMA INT hast highest priority, no nesting.