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.

TMS570LS3137: EMAC Interrupt problem.

Part Number: TMS570LS3137
Other Parts Discussed in Thread: TMS570LC4357

I am trying to send data to tms570ls3137 hercules development kit using the following TCP echo server code.

#define ECHO_PORT 7 // Standard echo port number
uint32_t tcp_rx_counter;
static err_t echo_recv_callback(void *arg, struct tcp_pcb *tpcb, struct pbuf *p,
                                err_t err)
{
    if (p != NULL)
    {
        tcp_rx_counter++;
        // Echo back the received data
        tcp_write(tpcb, p->payload, p->len, 1);
        tcp_recved(tpcb, p->len);
    }
    else if (err == ERR_OK)
    {
        // Connection closed
        return tcp_close(tpcb);
    }

    if (NULL != p)
    {
        pbuf_free(p);
    }

    return ERR_OK;
}

static err_t echo_accept_callback(void *arg, struct tcp_pcb *newpcb, err_t err)
{
    // Set the receive callback for this connection
    tcp_recv(newpcb, echo_recv_callback);
    return ERR_OK;
}

static void start_echo_server(void)
{
    struct tcp_pcb *pcb;

    // Create a new TCP control block
    pcb = tcp_new();
    if (!pcb)
    {
        return; // Error
    }

    // Bind to the echo port
    tcp_bind(pcb, IP_ADDR_ANY, ECHO_PORT);

    // Set it to listen for incoming connections
    pcb = tcp_listen(pcb);
    tcp_accept(pcb, echo_accept_callback);
}

When I send a certain amount of data, interrupt doesn't occur. It does however occur for the broadcast data.

I realized the RX0FREEBUFFER is set to 0 after some data and it never increases again. Could this be the problem?



https://github.com/originzero-io/SOM_TMS570LS3137_V1.1_BASE Here is my project. If you'd like, you can test it.

I'd appreciate any help. Thanks.