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.

CC3235MODASF: DMA error

Part Number: CC3235MODASF

Hello.

I have this work:

When a GPIO goes LOW I have to read 1024Byte from SPI and transmit them to UDP.

This mechanism (read SPI - Transmit over UDP)  has to reach high throughput rate.

I develop a first Firmware modifying network_terminal and adding some code:

I create new terminal command called "RDGxxxxstart".

When user digit "RDGxxxstart" command I configure NWP as P2P role, CLIENT etc ...

and I start two threads: SPI - Thread and WiFi - Thread.

SPI - Thread is an infinite loop that monitor a GPIOx state,

when this GPIOx is low and there is enough space in a circular buffer (consist of 4 x1KByte-buffers)

this thread reads 1KBytes (in a BLOCKING WAY) from SPI an "put" this bytes in a buffer of the ring.

This thread has priority 2.

WiFi - Thread is an infinite loop that monitor the circular buffer:

when a new buffer is available in the ring, the thread read the buffer and send it to UDP (in a BLOCKING WAY).

This second thread has same priority.

When I run my terminal command "RDGxxxxstart" and I connect NWP to Wi-Fi Direct of my SAMSUNG Cellar

it's all OK  (connection established and threads start).

When I put GPIO Low the SPI - Thread read SPI data and WiFi - Thread transmit over UDP .... but after some period DMA goes error.

My PC counter goes in this line of code (ti_driver_config.c row 96):

static void dmaErrorFxn(uintptr_t arg)

{

int status = MAP_uDMArrorStatusGet();

MAP_uDMAErrorStatusClear();

...

}

status is equal to 1