This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TL28L92: OP0 Stuck High, MR2A reads back 0xFF

Part Number: TL28L92

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

  • Hi Daniel,

    When you do the read of MR2, what steps do you do beforehand?

    Are you able to write to set the pointer to MR2 and then read MR2? 

    Or are you writing to MR2 then immediately reading MR2?

    -Bobby

  • Below are the steps being taken to read the register. All reads and writes are being done with a 10 microsecond delay between transactions.

    1) Write CRA (0x2) register with 0x10

    2) Read MRA (0x0) register, this should yield the data stored in MR1A and advance the pointer to MR2A.

    3) Read MRA (0x0) register again, which should yield the data stored in MR2A. It's yielding 0xFF.

    While running my tests, I also tried reading the data immediately after writing to MR2A and received back 0xFF.

    Additional Info:

    Since making the original post, I tried writing the MR2A register multiple times in a row. This actually seemed to work, but in the process the MR1 register was also being rewritten with the same data, even though I had not repositioned the MR pointer.

  • Hi Daniel,

    Since making the original post, I tried writing the MR2A register multiple times in a row. This actually seemed to work, but in the process the MR1 register was also being rewritten with the same data, even though I had not repositioned the MR pointer.

    This part might be some kind of issue with the device. With MR2A, the pointer shouldn't move when writing/reading from it. 

    How many writes it takes to get the data into MR2A? (Is it 2 bytes?)

    If you reset the pointer to MR1A then write to it after you write to MR2A, is it successful? 

    Are you able to confirm after writing to MR2A then MR1A, are you able to read both bytes and confirm both registers are properly set? 

    Are you successfully able to control OP0 after confirming both registers? 

    -Bobby