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.

DM6435 UART

Hello


Can anyone confirm that the (first) UART in the DM6435 (and probably all other dsps in that family) is functionally equivalent to the PC16550D UART? The register layout (including their addresses) strongly suggests that they are. I am asking because the documentation of the latter is quite a bit better with respect to how the UART deals with "abnormal" situations (break conditions etc.).


Regards

Markus

  • In relation to that question: The PC16550D manual says the following about the LCR break condition bit:
    "If the following sequence is followed, no erroneous or extraneous characters will be transmitted because of the break.
    1. Load an all 0s, pad character, in response to THRE.
    2. Set break after the next THRE.
    3. Wait for the transmitter to be idle, (TEMTe1), and clear break when normal transmission has to be restored. During the break, the Transmitter can be used as a character timer to accurately establish the break duration."

    So I tried exactly that. Unfortunately, the UART does not delay sending data after the break condition bit is cleared, so when I resume normal operation, the end of the break is barely visible as it is immediately followed by the start bit of the next character. As such, it is missed by the receiver. I'm afraid there is no easy way around that (other than calling sleep for a given time, but I'd _really_ like to keep the break handling inside my driver's interrupt handler (the breaks are meant to be frame delimiters))?

    Regards
    Markus
  • Ok, I can answer my second question myself... :-P
    The procedure to clear the break condition bit is the same as setting it: write a single 0 to the FIFO, wait until THRE, clear the break condition bit (the stop bit of that single 0 will be transmitted and will create a 1 bit gap).
  • Hi Markus,

    Yes functionality wise both first UART and latter one are equivalent. The documentation differs a little because PC16550D's document revision edition is June 1995 and that of internal UART is December 2009. So might find some some changes.