реклама на сайте
подробности

 
 
> UART: инициализация скорости, Отличия от "классики", напр. C8051Fxxx
gala
сообщение Mar 22 2007, 13:55
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 119
Регистрация: 29-11-05
Из: Украина, Черкассы
Пользователь №: 11 564



Ув. пользователи MCS-51

Много лет применял инициализацию скорости UART.
Потерял 2 дня для адаптации к SiLabs C8051F064 (читать Datasheet было лень)
Оказалось, инициализация по-умолчанию НЕ соответствует "классике" Intel MCS-51

For classic MCS-51:
Th1=(signed char)(K*Osc_Freq)/(Baud_Rate*32*12); //if(SMOD==1) K=2; else K=1;
T2 =(signed word)(K*Osc_Freq)/(Baud_Rate*32); //K=1;

For SiLabs C8051Fxx:
Th1=(signed char)(K*Osc_Freq)/(Baud_Rate*32*N); //N=1,4,12,48(SysCLC) or N=8(ExtCLC)
T2 =(signed word)(K*Osc_Freq)/(Baud_Rate*16*N); //N=1,2,12(SysCLC) or N=8(ExtCLC);

Готового FAQ по отличиям инициализации скорости UART для разных MCU-51 не нашел.

Предлагаю поделиться грустным опытом
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Настовьяк Артём
сообщение Nov 19 2007, 07:58
Сообщение #2





Группа: Новичок
Сообщений: 6
Регистрация: 21-02-07
Пользователь №: 25 549



1 Для работы уарта (F064) обязательно нужен таймер
2 если вы хотите максимальную скорость обмена, то работайте с прерыванием.
3 если вы хотите работать на скоростях выше стандартной (115200), то работайте с UART1 а не UART0.
стабильно работает с ПК через мост CP2101 на скорости 921600.
Примечание: стабильно работает при использовании для тактирования кварца 22118400, т.е. погрешность выставления скорости передачи = 0%. С использованием встроенного генератора не проверял.
Go to the top of the page
 
+Quote Post
alvol
сообщение Nov 19 2007, 11:04
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 153
Регистрация: 15-05-06
Из: Николаев
Пользователь №: 17 119



Цитата(Настовьяк Артём @ Nov 19 2007, 09:58) *
3 если вы хотите работать на скоростях выше стандартной (115200), то работайте с UART1 а не UART0.
стабильно работает с ПК через мост CP2101 на скорости 921600.
Примечание: стабильно работает при использовании для тактирования кварца 22118400, т.е. погрешность выставления скорости передачи = 0%. С использованием встроенного генератора не проверял.


Работа СР2103 на скорости 921600 с использованием внутреннего генератора при работе контроллера идет отлично (на C8051F32x)
Все действия лучше делать по прерыванию УАРТа. Только нужно всего лиш проверять причину прерывания: прием илии передача и не забывать программно очищать этот флаг.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- gala   UART: инициализация скорости   Mar 22 2007, 13:55
- - Волощенко   Цитата(gala @ Mar 22 2007, 14:55) Предлаг...   Mar 22 2007, 15:02
- - gala   Цитата(Волощенко @ Mar 22 2007, 16:02) Во...   Mar 22 2007, 16:24
- - AlexanderX   В процессорах Silabs C8051F06x очень много разнооб...   Mar 22 2007, 17:46
|- - evg123   Силабсы достаточно навороченные в отличие от станд...   Mar 23 2007, 17:45
- - Halfback   А может кто написать маленький примерчик как заста...   Apr 3 2007, 21:33
|- - Kolia   Цитата(Halfback @ Apr 3 2007, 22:33) UART...   Apr 4 2007, 09:49
- - Halfback   ЦитатаUART без таймера не работает -> соответст...   Apr 4 2007, 19:30
|- - Kolia   Цитата(Halfback @ Apr 4 2007, 20:30) може...   Apr 5 2007, 11:15
- - Halfback   ЦитатаЕсли не веришь проверь в режиме эмуляции кей...   Apr 5 2007, 18:39
|- - Kolia   Цитата(Halfback @ Apr 5 2007, 19:39) Дык ...   Apr 6 2007, 13:30
- - koyodza   Грусным делиться вроде и нечем. Использовал разные...   Apr 19 2007, 12:07


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 17:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01383 секунд с 7
ELECTRONIX ©2004-2016