0
\$\begingroup\$

I just did the math and with the internal clock of the ATMega328. The lowest clock frequency that you could use to have a 1200 Baud rate is 9.6kHz.

Unfortunately I need to be under 9kHz.

Is there any micro that can drive a 1200 Baud rate at 9.000kHz?

\$\endgroup\$

closed as off-topic by Chris Stratton, Nick Alexeev May 21 '16 at 17:52

This question appears to be off-topic. The users who voted to close gave this specific reason:

If this question can be reworded to fit the rules in the help center, please edit the question.

  • \$\begingroup\$ There are solutions, but they're not exactly elegant. Why do you need that exact clock rate? \$\endgroup\$ – Ignacio Vazquez-Abrams May 21 '16 at 17:46
2
\$\begingroup\$

Conceptually yes, but in terms of sourcing, probably not, and anyway, sourcing is an off-topic shopping question.

But to explain the conceptual issue, the receive path of a UART typically operates by oversampling rather than by clock recovery. Your calculations assume 8x oversampling, which is the lower of the two typically used values of 8x and 16x.

However, the transmit path does not require much in the way of oversampling as it is fundamentally free to dictate its own timing - it is not trying to detect the timing of the other end in the way a receiver does. Having a clock of 2x the baud rate could potentially be convenient, and it is probably required that the clock rate be an integer multiple of the baud rate, but is does not need to be 8x. 2.4 KHz probably works conceptually.

However, you may not find an off-the-shelf IC with this capability. A custom implementation in an FPGA or largish CPLD should be possible.

It might also be possible to build an FPGA based receiver using 7x rather than 8x oversampling.

You could also consider if a baud rate of 1125 (9 KHz/8) might be tolerated by a given receiver configured for 1200 baud. Dropping the effective baud rate even below the intended deviation might be a useful test.

By careful manipulation of data patterns, it might also be possible to (ab)use an SPI engine to transmit a UART-compatible data waveform at a closer fraction of its clock rate, though you would probably need to run it in a greater than 8-bit mode.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.