Re: Autochanging of Rx baudrate on the fly
From: David Brown (david_at_no.westcontrol.spam.com)
Date: Mon, 15 Sep 2003 11:35:21 +0200
"Damion de Soto" <email@example.com> wrote in message
> Anton Erasmus wrote:
> > After reading the thread about the baud rates to a remote console
> > changing during the boot process, I got to wondering if it is possible
> > to keep the console at 115200 baud and then have a layer that
> > decodes the data at various "baud rates". I.e. is it possible to
> > actually decode the original data sent at the lower rates if the uart
> > is set to a higher rate ?
> I was discussing this the other day, in relation to how (modern) modems
> can operate at whatever baudrate you send to them.
> You could either get the similar serial uart hardware into your PC, but
i'm not sure
> if this exists -i think it'd be a good idea and can't see it being very
> I think we also decided it would be possible in software too, although
> seen anything out there already and only have vague ideas on how to
> hardware clock-syncing methods into software algorithms.
> if you write one yourself, let me know :)
As far as I knew, the way modems handle "autobaud" is to measure the timing
of characters comming in, and try to match it to a sensible rate on the
assumption that it is an "A" (0x41) character at the start of an AT command.
Once they spot an "A", they lock on to that baud rate and can't easily be
changed. I can't see how it would be practical to implement anything like
that on a PC without extra hardware.
What is practical, and I have done it many times (on small micros rather
than embedded linux, but the principle's the same) is to have two or three
different baud rates and switch between them. If you hear incoming data
that makes sense, then "lock" to that baud rate (and maybe start switching
again after a certain timeout without new valid data). It makes more sense
when using a telegram-oriented protocol rather than when using a simple
serial console, but it could be done (tell the user they must press "return"
a few times until they get a command prompt).