[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [N8VEM: 13784] 16C550C UART Auto Flow Control



Wayne,

I don't have the answer you're looking for - as you already noted, it works well on the Stack. You might try the 16C750 in place of the 16C550-C. The 'C750 is a single UART version of the 16C754 quad UART carried in the Stack180. It's pin compatible with the 16C550 B & C versions, although the register map and bit assignments are different, requiring some different programming. For basic 16450- and 16550-compatible operation, they're pretty much identical, but the enhanced operating modes are markedly different.

For instance, although both '550 and '750 chips have versions of auto flow control, they are enabled and operate very differently.

If you would like, I would enjoy taking a look at the code you're using, particularly on the 16C550.


Two more general comments...

AFE in the 16C550-C uses bit 5 of the Modem Control Register. For chips prior to the 16C550-C, this bit was set to zero and would always read back as zero, regardless of what you wrote to it. If the bit is being set and reads back as reset, then it would appear that the chip labeled as a 'C' version is not really a 'C' chip.

Just a reminder - when we init the '450 / '550 series chips, we almost always output a 3 (011b) to the Modem Control Register to set the /RTS and /CTS outputs. You cannot do this when using AFE mode - it resets AFE at bit 5. You have to output a 22H to the MCR to set AFE and enable Auto /CTS and Auto /RTS, or output 20H to enable Auto /CTS only.


Regards,

Terry


On 6/10/2012 6:06 PM, Wayne Warthen wrote:
Hi Folks,

Has anyone gotten auto flow control to actually work with a 16C550C UART? This is the UART chip I have in most of my boards and seems to be the most popular one to use.

I only recently found out that the TL16C550C UART is supposed to support automatic hardware flow control. This was a feature that was newly introduced on the 'C' revision of the part.

I have now spent several hours trying to get it to actually work with no success. I have proven out my cabling and testing environment by using a Stack180 I built a while back. The Stack180 has a newer generation UART, but I successfully got it to perform auto flow control perfectly.

I am using a serial break out box to monitor RTS. If autoflow is working RTS will be deasserted when the FIFO gets close to full. I see this behavior perfectly when testing with the Stack180 and the newer UART. When I program my TL16C550C for autoflow, RTS is not deasserted as the FIFO fills up and overflows. Additionally, when setting the autoflow enable (AFE) bit in the UART, it does not read back as being set. That register is supposed to allow it's value to be read back. Additionally, I can manually turn the RTS signal on and off at the UART and see it on the breakout box, so I know that the signal path is good and the UART is controlling RTS.

It really seems like the TL16C550C does not have the autoflow feature that is described in the data sheet. I have tried multiple different chips with the same results (failure).

I would love to hear if anyone has tried this and if there has been any success. It would be really nice to get this functionality working...

Thanks!

Wayne
--
You received this message because you are subscribed to the Google Groups "N8VEM" group. To view this discussion on the web visit https://groups.google.com/d/msg/n8vem/-/RD5WnXz0Rc0J.
To post to this group, send email to n8...@googlegroups.com.
To unsubscribe from this group, send email to n8vem+un...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/n8vem?hl=en.