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.

psp EDMA SPI transactions by the EDMA GPIO event

Other Parts Discussed in Thread: SYSBIOS

I need to start EDMA SPI receive 16 bytes for each GPIO event.

I know how to do it as baremetal (without SYS/BIOS) application.

In the bare metal:

I initialize EDMA for receive GPIO event. After EACH GPIO event EDMA start SPI transmission of 16 dummy bytes and read 16 bytes of data. After receiving 16 bytes EDMA generates interrupt.

But I need to do in SYS/BIOS. As I understood I should waiting event in the Task (by the Event_pend() ) and calls GIO_read() when GPIO event is coming.

Should I configure EDMA for GPIO event receive? So, If yes, how to do it in SYS/BIOS paradigm?

Other question: can I configure EDMA mannualy as in the baremetal application (like in StarterWare example) and then start SYS/BIOS in my application or better configure EDMA driver for receive GPIO event in SYS/BIOS?

  • Can you tell me what device you are on?  Also what version of SYSBIOS or TI-RTOS you are using?

    Judah

  • Thank you for response, Judah!


    I'm using last available versions of SYS/BIOS and TI-RTOS.

    I investigated SPI psp examples and "Configuring GPIO EDMA Events" article.

    In the SPI psp example  writes and read data from/to flash by the GIO_submit() function, which is calling EDMA LLD functions for transaction. For one write/read one call of GIO_submit().

    I need to receive data continuously.

    So, first I should configure GPIO as input and enable interrupt from appropriate GPIO Bank.

    Further I need create four PaRamSet of EDMA of appropriate channels (one for dummy transmit by GPIO event, one for receive valid data by SPI_RX event, and two linking PaRaSet's for ping/pong buffers). Further I need to configurate EDMA for interrupt after transmit completion. So, EDMA will receive data continuously.

     Thus, I need just wait for interrupt from EDMA and start data processing by interrupt event.

    Question: I think now in my case I should call GIO_submit(), which is calling EDMA LLD function of configuration PaRamSet's and start transactions, just once and further EDMA will receive data continuously. Is it correct?