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.

CC3100: Driver hung on socket receive

Part Number: CC3100

I'm working with the CC3100 in conjunction with a Cortex M3 MCU (MAX32600). In my application I connect to a WiFi network, open a non-blocking TCP socket connection, and check for received data on the socket every ~100 ms with sl_Recv. Everything works great until the socket has been open for 5 to 10 minutes at which point the driver gets hung waiting for a command response in function _SlDrvRxHdrRead at line 1595:

    /* read while first 4 bytes are different than last 4 bytes */
    while ( *(_u32 *)&pBuf[0] == *(_u32 *)&pBuf[4])
    {
    	 NWP_IF_READ_CHECK(g_pCB->FD, &pBuf[4], 4);
    }

I am communicating with the SPI interface running at 1 MHz without DMA. I am using SDK 1.2.0 and Service Pack 1.0.1.6-2.7.0.0. This behavior is the same with the CC3100BOOST and with a custom board with the CC3100. I haven't observed any significant power anomalies that would cause the CC3100 to lose state.

I took a logic capture showing the SPI traffic with the IRQ line on Channel 4. The first image shows the second to last command and response. The second image show the last command where a proper response was not received. I have attached the full Saleae logic capture file. On the bad command, the IRQ line is asserted almost immediately after sending the command, but it doesn't look spurious.

Any help would be greatly appreciated.

CC3100_Command_Failure.zip