ESP32C3串口缓冲区的问题

wangshuoran
Posts: 37
Joined: Fri Dec 24, 2021 12:40 pm

ESP32C3串口缓冲区的问题

Postby wangshuoran » Sun Jun 05, 2022 1:15 am

在ESP32C3的技术参考手册中,UART的RAM共分为4个Block,每个Block128个字节,分别给UART0/1中不同的TX/RX,其中提到了可以修改几个空间的大小。这个大小在手册中提到,设置UART0的UART_TX_SIZE为2,则UART0的Tx_FIFO的地址从0扩展到255。这时,UART1的Tx_FIFO的默认空间被占用,这时将不能使用UART1发送器功能。

在IDF框架中,uart_driver_install有两个参数为rx_buffer_size/tx_buffer_size,这个大小是否应该满足:Rx_buffer_size应该大于UART_FIFO_LEN。Tx_buffer_size应该是0或者大于UART_FIFO_LEN。

那么,uart_driver_install和UART的RAM的配置不是一回事,是吧?
那么,如果我想修改UART0的UART_TX_SIZE为2该如何操作?

ESP_Yake
Posts: 109
Joined: Mon Mar 06, 2017 12:23 pm

Re: ESP32C3串口缓冲区的问题

Postby ESP_Yake » Mon Jun 06, 2022 1:19 am

rx_buffer_size/tx_buffer_size 跟你说的FIFO size 并不是一回事,这是软件的 buffer,也就是硬件 FIFO 读取到数据后会自动存储到这些 buffer里面。你说的UART_TX_SIZE这个我们在软件层并没有实现,可以认为目前软件是不支持的。主要的原因是 FIFO 设置为 128 字节一般已经足够使用了,也许你们可以告诉我们必须要设置为 256 字节的理由,我们来评估是否需要设计驱动的接口。

wangshuoran
Posts: 37
Joined: Fri Dec 24, 2021 12:40 pm

Re: ESP32C3串口缓冲区的问题

Postby wangshuoran » Fri Jul 15, 2022 5:06 am

接口纷繁杂乱并不是一个好现象,所以我支持不把所有功能都实现接口

但我觉得,如果有同学或同事想整条链用起来,应该对技术手册和IDF开发框架进行对应理解,然后看看IDF框架实现,这样无遗是一种较好的提升或者交流学习,所以,我问这个问题就是想搞清楚,没有别的意思

wangshuoran
Posts: 37
Joined: Fri Dec 24, 2021 12:40 pm

Re: ESP32C3串口缓冲区的问题

Postby wangshuoran » Fri Jul 15, 2022 5:24 am

硬件FIFO读取到数据后会自动存储到这些buffer里面,这个是会占用CPU时间吗?还是IDF底层就完成好的?

Who is online

Users browsing this forum: No registered users and 32 guests