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.

TL16C752D: Compatibility with 16550A or TL16C752B

Guru 11170 points
Part Number: TL16C752D

Hello E2E,

We and our customer read a thread in the past. I think not solved any questions.
https://e2e.ti.com/support/interface/f/138/t/660679
e2e.ti.com/.../620918
Currently, our customer is try to change the device from version-B to version-D.
They anticipating that if change the device to simply, system can't operate.
They using Linux.

Q1
:Why can not version-B software be applied to version-D?
Q2
:Please let us know the points to be modify for driver software.
Q3
:Linux driver software has a potential bug. It was coded for 16550A. Does TI recognize the bug?
Q4
:Does TI have an original driver software? able provide it us?

Regards,
ACGUY

  • Hey ACGUY,

    "Why can not version-B software be applied to version-D?"

    Some customers have not been able to swap between between B and D which we suspect is due to the differences in the timing requirements of the devices. In the e2e threads you have referenced, the customer never got back to us so we were not able to work with them to try to resolve it, therefore we do not know the root cause of their problem.

    We have seen some customers make the switch from B version to D version without issues before.

    ":Please let us know the points to be modify for driver software."

    I've recently had to do some testing with the B version of the device and found that the D version of my code did not work immediately. I had to add more delays between my serial writes and parallel reads and writes. The timing of the B version's timing is related to the baud rate and was more difficult to work with at lower speeds because it required longer delays. The D version seems to be more asynchronous and would work with very low delay regardless of baud rate. To me, D version was easier to work with than B version for this reason.

    I am unsure what your driver is doing so I do not know the exact points that need to be modified.

    ":Linux driver software has a potential bug. It was coded for 16550A. Does TI recognize the bug?"

    I am not aware of any bugs with the Linux driver. Can you elaborate on what the bug is?

    16550 looks different from the 752 in terms of the pins. 16550 has an address strobing pin, read and write pins as well as read inverted and write inverted pins. This seems to imply interfacing with these devices will be different.

    ":Does TI have an original driver software? able provide it us?"

    Unfortunately we do it. Our group does not develop software, we focus mainly on analog support.

    Thanks,

    -Bobby

  • Hello Bobby,

    > I am not aware of any bugs with the Linux driver. Can you elaborate on what the bug is?

    When the following procedure is executed,

    Step 1: ISR is repeatedly read until ISR (+2) becomes None (0b0001).
    Step 2: There is no interrupt (INT = 0).
    Step 3: THR is empty (THRE (0 b 100 000) = 1 in LSR (+5)).
    Step 4: Disable THR interrupt (write 0 to IER (+1))
    Step 5: Enable THR interrupt (write 0 b 10 to IER (+1))
    Step 6: Interrupt occurs (INT = 1).
    Step 7: TXRDY (0b0010) can be read with ISR (+2).
    Step 8: THR is empty (THRE (0 b 100 000) = 1 in LSR (+5)).

    At 16550 A, the interruption of Step 6 - 7 is generated by the operation of Step 4 - 5.
    No data is being transmitted between Step 2 - 7.

    Does TL16C752D also generate an interrupt in Step 6-7?

    Regards,
    ACGUY
  • Hey ACGUY,

    "At 16550 A, the interruption of Step 6 - 7 is generated by the operation of Step 4 - 5.
    No data is being transmitted between Step 2 - 7.

    Does TL16C752D also generate an interrupt in Step 6-7?"

    Yes, if you enable the THR interrupt and the THR is empty (you are not sending data into THR) then the INT will be generated.

    Thanks,
    -Bobby