La misma dirección para diferentes registros en LPC2418 UART

0

Tengo una pregunta muy básica con respecto a LPC2418 UART. El UART tiene diferentes registros con las mismas direcciones. Entonces, al cargar los datos desde el banco de pruebas, ¿no se cargará en todos los registros?

1) Por ejemplo, RBR (registro de almacenamiento intermedio del receptor) y THR (registro de retención de transmisión) tienen la dirección 32'hE000C000.Y sé que solo se puede leer desde RBR y solo escribir en THR. Entonces si (addr = 32'hE000C000) data = 32'h10100010; ¿no se escribirá el código anterior tanto en THR como en RBR?

2) El mismo caso se aplica incluso para IIR (registro de id de interrupción) y FCR (registro de control FIFO), ya que comparten la misma dirección E000C008 y no hay señal para distinguir entre los dos registros, como podríamos haber utilizado una señal sel de un mux para seleccionar IIR o FCR, pero no hay uno.

    
pregunta daut

1 respuesta

2

Por ejemplo 1:

La forma en que se registra ese trabajo es que el hardware maneja las lecturas de registros y las escrituras de registros de manera diferente.

Básicamente, en realidad hay dos registros en el chip físico. Cuando lees de la dirección, recupera el contenido del registro A. Cuando escribes en la dirección, escribe en el registro B.

Debe tener en cuenta que la documentación del hardware indica lo siguiente:

  

Registro de búfer de receptor UART1 (U1RBR - 0xE001 0000, cuando   DLAB = 0 Solo lectura )
  Registro de mantenimiento del transmisor UART1 (U1THR - 0xE001 0000, cuando   DLAB = 0 Solo escritura )

(énfasis mío)

Por ejemplo 2:

Creo que el registro que está disponible es una función del contexto de ejecución actual. Cuando la ejecución está dentro del controlador de interrupciones, las lecturas a 0xE000C000 acceden al registro IIR (que es de solo lectura, por cierto).

Durante la ejecución normal, (o posiblemente cuando se activan interrupciones que no son UART), las lecturas / escrituras son en el registro FCR.

    
respondido por el Connor Wolf

Lea otras preguntas en las etiquetas