Цитата(fate @ Mar 2 2005, 22:09)
это место общее для всех UART
Честно говоря, я не знаю точно, к каким именно последствиям приведет
указанное округление для ARM. Но для вообше UART-a
расчет выглядит так:
1. Очевидно, что если тактовая частота UART-a отличается
от стандартной, скорость UART-а будет отличаться от стандартной.
Как оценить допустимые пределы частоты ?
Очевидно, сначала нужно определиться с форматом передачи.
Допустим весьма распространенный случай: 8N2.
1 старт, 8 бит данных, 1 стоп = всего 10 бит.
2. если ошибка выбора в частоте составляет N процентов,
то ошибка в длительности во время пиема M бита составит: M*N.
Значит - 1% в частоте при приеме 10 бита составит 10% по длительности.
3. Существует еще постоянная, не накапливающаяся ошибка, вызванная
самим цифровым методом приема. Поскольку частота заполнения
бита выбирается обычно в 16 раз выше скорости - это значит
в худшем случае появится методическая погрешность 1/16 скорости.
Т.е. ~6%.
4. А какие наши резервы ?
Очевидно, чтобы правильно принять 10 бит, нельзя ошибиться >50%.
Поскольку биты принимаются "по серединкам".
5. Как будем делить эти 50 % ?
Во первых сразу:
50% - 6% = 44%.
Но эти 44 надо делить пополам.
Раз мы для себя делаем допуск, то очевидно и абонент
подключенный к нашему устройству имеет те же права.
44/2 = 22%. Это теоретически предельная ошибка в длительности
для правильного приема 10 бита.
Вот теперь и поделим на 10, чтобы узнать предельное отклонения
в частоте.
22/10 = 2.2 %.
Казалось бы, по даташиту еще более жестко.
Но на самом деле придется учитывать искажения драйверов/буферов.
Которые период импульсов конечно не изменят. А вот длительности - запросто.
Относительные длительности 0-й и 1-ц.
А если речь пойдет о гальванической развязке и оптронах, то .....
Так что 1 % - это еще многовато..
К этому 1 %, указанному в даташите, надо подходить творчески.