SLLS890C August 2008 – April 2024 TL28L92
PRODUCTION DATA
The operation of the DUART is programmed by writing control words into the appropriate registers. Operational feedback is provided via status registers which can be read by the CPU. The addressing of the registers is described in Table 6-1.
The contents of certain control registers are initialized to zero on RESET. Care should be exercised if the contents of a register are changed during operation, since certain changes may cause operational problems.
For example, changing the number of bits per character while the transmitter is active may cause the transmission of an incorrect character. In general, the contents of the MR, the CSR, and the OPCR should only be changed while the receiver(s) and transmitter(s) are not enabled, and certain changes to the ACR should only be made while the C/T is stopped.
Each channel has three mode registers (MR0, MR1 and MR2) which control the basic configuration of the channel. Access to these registers is controlled by independent MR address pointers. These pointers are set to 0x0 or 0x1 by MR control commands in the command register Miscellaneous Commands. Each time the MR registers are accessed the MR pointer increments, stopping at MR2. It remains pointing to MR2 until set to 0x0 or 0x1 via the miscellaneous commands of the command register. The pointer is set to 0x1 on reset for compatibility with previous TI UART software.
Mode, command, clock select, and status registers are duplicated for each channel to provide total independent operation and control. Refer to Section 6.2 for register bit overview. The reserved registers at addresses 0x2 and 0xA should never be read during normal operation since they are reserved for internal diagnostics.
BINARY ADDRESS | READ OPERATION (RDN = 0 and CEN = 0) | WRITE OPERATION (WRN = 0 and CEN = 0) | |||
---|---|---|---|---|---|
0 | 0 | 0 | 0 | Mode Register A (MR0A, MR1A, MR2A) | Mode Register A (MR0A, MR1A, MR2A) |
0 | 0 | 0 | 1 | Status Register A (SRA) | Clock Select Register A (CSRA) |
0 | 0 | 1 | 0 | Reserved | Command Register A (CRA) |
0 | 0 | 1 | 1 | Rx Holding Register A (RxFIFOA) | Tx Holding Register A (TxFIFOA) |
0 | 1 | 0 | 0 | Input Port Change Register (IPCR) | Auxiliary Control Register (ACR) |
0 | 1 | 0 | 1 | Interrupt Status Register (ISR) | Interrupt Mask Register (IMR) |
0 | 1 | 1 | 0 | Counter/Timer Upper (CTU) | C/T Upper Preset Register (CTPU) |
0 | 1 | 1 | 1 | Counter/Timer Lower (CTL) | C/T Lower Preset Register (CTPL) |
1 | 0 | 0 | 0 | Mode Register B (MR0B, MR1B, MR2B) | Mode Register B (MR0B, MR1B, MR2B) |
1 | 0 | 0 | 1 | Status Register B (SRB) | Clock Select Register B (CSRB) |
1 | 0 | 1 | 0 | Reserved | Command Register B (CRB) |
1 | 0 | 1 | 1 | Rx Holding Register B (RxFIFOB) | Tx Holding Register B (TxFIFOB) |
1 | 1 | 0 | 0 | Interrupt vector (68xxx mode) | Interrupt vector (68xxx mode) |
1 | 1 | 0 | 0 | Miscellaneous register (Intel mode), IVR Motorola mode | Miscellaneous register (Intel mode), IVR Motorola mode |
1 | 1 | 0 | 1 | Input Port Register (IPR) | Output Port Configuration Register (OPCR) |
1 | 1 | 1 | 0 | Start counter command | Set Output Port Bits Command (SOPR) |
1 | 1 | 1 | 1 | Stop counter command | Reset Output Port Bits Command (ROPR) |
REGISTER NAME | CHANNEL A REGISTER | CHANNEL B REGISTER | ACCESS |
---|---|---|---|
Mode | MRnA | MRnB | R/W |
Status | SRA | SRB | R only |
Clock | CSRA | CSRB | W only |
Command | CRA | CRB | W only |
Receiver FIFO | RxFIFOA | RxFIFOB | R only |
Transmitter FIFO | TxFIFOA | TxFIFOB | W only |
REGISTER NAME | MNEMONIC | ACCESS |
---|---|---|
Input Port Change | IPCR | R |
Auxiliary Control | ACR | W |
Interrupt Status | ISR | R |
Interrupt Mask | IMR | W |
Counter/Timer Upper Value | CTU | R |
Counter/Timer Lower Value | CTL | R |
Counter/Timer Preset Upper | CTPU | W |
Counter/Timer Preset Lower | CTPL | W |
Input Port | IPR | R |
Output Configuration | OPCR | W |
Set Output Port | SOPR | W |
Reset Output Port | ROPR | W |
Interrupt Vector or GP | IVR/GP | R/W |