[CPU] CPU 访问外设时,如果连续不间断地写同一个地址,会出现数据丢失的现象

影响版本: v0.0

描述

一些 ESP32 外设映射到两条内部存储器总线(AHB 和 DPORT)。当通过 DPORT 写入时,对相同地址的连续写入可能会出现数据丢失的现象。

变通方法

当连续写同一个地址(即类似 FIFO 的地址)时,使用 AHB 地址而不是 DPORT 地址。(对于其他类型的寄存器写入,使用 DPORT 地址可能写性能更好。)

寄存器名称

DPORT 地址

AHB(安全)地址

UART_FIFO_REG

0x3FF40000

0x60000000

UART1_FIFO_REG

0x3FF50000

0x60010000

UART2_FIFO_REG

0x3FF6E000

0x6002E000

I2S0_FIFO_RD_REG

0x3FF4F004

0x6000F004

I2S1_FIFO_RD_REG

0x3FF6D004

0x6002D004

GPIO_OUT_REG

0x3FF44004

0x60004004

GPIO_OUT_W1TS_REG

0x3FF44008

0x60004008

GPIO_OUT_W1TC_REG

0x3FF4400C

0x6000400C

GPIO_OUT1_REG

0x3FF44010

0x60004010

GPIO_OUT1_W1TS_REG

0x3FF44014

0x60004014

GPIO_OUT1_W1TC_REG

0x3FF44018

0x60004018

GPIO_ENABLE_REG

0x3FF44020

0x60004020

GPIO_ENABLE_W1TS_REG

0x3FF44024

0x60004024

GPIO_ENABLE_W1TC_REG

0x3FF44028

0x60004028

GPIO_ENABLE1_REG

0x3FF4402C

0x6000402C

GPIO_ENABLE1_W1TS_REG

0x3FF44030

0x60004030

GPIO_ENABLE1_W1TC_REG

0x3FF44034

0x60004034

解决方案

已在芯片版本 v1.0 中修复。

备注

软件不可以使用 AHB 地址读 FIFO。