如何更改ESP32的UART-TX-FIFO的大小

时间:2019-01-16 15:28:19

标签: esp32

ESP32的UART_MEM_CONF_REG寄存器的配置不会按预期更改uart TX FIFO的大小。

我正在尝试将UART0的TX FIFO的大小更改为512字节。

可以在UART_MEM_CONF_REG中将第7位设置为第10位来设置FIFO的大小(以字节为单位)。(ESP32 TRM V4.0,第364页) 该寄存器默认为0x88:128字节TX FIFO和128字节RX FIFO。因此,位7 = 1设置128字节TX FIFO大小。

不幸的是,没有信息如何设置位7、8、9和10来更改FIFO大小。我的第一个想法是将第8位设置为256字节大小,将第9位设置为512字节,将第10位设置为1024字节。我只打算使用UART0,所以其他UART的FIFO大小没有问题。

我尝试了以下几行:

// Create a byte pattern to send
char buffer[256];
for (int i = 0; i < 256; i++) buffer[i] = i;

// f.e.set bit 8 for (maybe??) 256 bytes TX FIFO size, other configurations has been tested as well
WRITE_PERI_REG(UART_MEM_CONF_REG(uart_num),0x108);

// Start uart driver, no event queue, no TX ringbuffer
uart_driver_install(uart_num, UART_BUF_SIZE, 0, 0, NULL, 0);

// send 256 bytes from a buffer
uart_tx_chars(uart_num, (const char*)buffer, 256);
// but only 128 bytes are sent

至少我期望TX-FIFO大小有所变化。但这不起作用。发送128个字节后,传输结束-不管我如何将UART_MEM_CONF_REG中的位7设置为10。

怎么了,我想念什么?

0 个答案:

没有答案