Tool/software:
We switched from NXP SC28L91 to TL28L92 due to obsolescence. It seemed like everything we would be using it for would be a drop-in replacement.
Our issue lies with the OP0 output. We are not trying to use it for RTS handshaking, just as an output pin. However, the pin is stuck high. We suspect this could be due to the MR2A register, which reads back as 0xFF no matter what is written. MR1A, MR1B, and MR2B all read back with the expected data.
Below is our configuration of the device on startup. Starting with the first column, working down to initialize the "A" registers. Then the second column to initialize the "B" registers.
CRA 0x30 |
CRB 0x30 | Reset Transmitter |
CRA 0x20 |
CRB 0x20 | Reset Receiver |
CRA 0x10 | CRB 0x10 | Point to MR1 |
MRA 0x06 | MRB 0x06 | Odd Parity |
MRA 0x07 | MRB 0x07 | 1 Stop Bit |
CRA 0xB0 | CRB 0xB0 | Point to MR0 |
MRA 0x3C | MRB 0x38 | Interrupts/Fifo/Ext Baud |
CSRA 0x33 | CSRB 0xCC | Baud Rates |
ACR 0x60 | ACR 0x60 | Baud Rate Gen |
OPCR 0x00 | OPCR 0x00 | All OPs are outputs |
CRA 0x30 |
CRB 0x30 | Reset Transmitter |
CRA 0x20 |
CRB 0x20 | Reset Receiver |
CRA 0x0C |
CRB 0x0C | Disable Tx Enable Rx |
CRA 0x40 |
CRB 0x40 | Reset Error Status |
IMR 0x22 |
IMR 0x22 | Init Interrupt |