Page 1 of 1

Trying to understand uart_driver_install()

Posted: Mon Oct 21, 2019 2:57 am
by zliudr
I'm used to Arduino serial port and its simplicity but I'm ready to learn the uart driver in esp32.
I'm reading the uart_echo sample code. It is fairly simple but I wonder where I can find explanation of the function uart_driver_install(). I don't understand how to use it except for how it is used in the sample. I want to be able to uninstall uart, use new TX and RX pins and install driver on those new pins. I need to know the right way to do it. I guess I could find the definition of the function but if someone knows where to find it, it would be great.

Again, great platform to be learning. I like the xTask thing although I don't know where to find the reference to xTaskCreate().

Thank you!

Re: Trying to understand uart_driver_install()

Posted: Mon Oct 21, 2019 3:09 am
by WiFive

Re: Trying to understand uart_driver_install()

Posted: Mon Oct 21, 2019 5:00 am
by zliudr
Thanks. I'll print out all 1600 pages of the document tomorrow.

Regarding the page you provided:

Code: Select all

// Setup UART buffered IO with event queue
const int uart_buffer_size = (1024 * 2);
QueueHandle_t uart_queue;
// Install UART driver using an event queue here
ESP_ERROR_CHECK(uart_driver_install(UART_NUM_2, uart_buffer_size, \
                                        uart_buffer_size, 10, &uart_queue, 0));
Does this mean the rx and tx buffers will be each of the size uart_buffer_size? The install call allocates the buffer itself? 2KB for each seems pretty large. What is the meaning of 10 and 0?

I didn't realize some functions are clickable in the doc so I've got some better idea now.

The uart_echo sample code has this:

Code: Select all

uart_driver_install(UART_NUM_1, BUF_SIZE * 2, 0, 0, NULL, 0);
So there is BUF_SIZE*2 rx buffer but no tx buffer or is there no rx buffer? What is the consequence of not having one of the buffers? Will the call to read or write wait until done?

I didn't realize some functions are clickable in the doc so I've got some better idea now.

I'm looking for the meaning and the consequence of each parameter in uart_driver_install(). Just a 10 is not good enough as an explanation. I'm slightly better now.

Re: Trying to understand uart_driver_install()

Posted: Tue Oct 22, 2019 4:01 pm
by zliudr
Regarding the uart_driver_install() call, where does the function allocate the buffers from, the caller task stack or somewhere else independent from the caller's task stack? I currently only have 1024 bytes for caller stack. Maybe that is causing the kernel panic etc?

Thank you!

Re: Trying to understand uart_driver_install()

Posted: Wed Oct 23, 2019 2:15 am
by WiFive
Global heap memory

Re: Trying to understand uart_driver_install()

Posted: Wed Oct 23, 2019 3:25 am
by zliudr
Thanks. That helps.