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

 
 
> Штатное квитирование в RS232(CTS\RTS)наFT232R, Что причина, а что следствие?
Мур
сообщение Jul 11 2006, 10:54
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Право не ловко... wub.gif
Привык XON\XOFF на RS232 гонять (перемычками обманывая РС)
Смотрю в доке на FT232R п.8.4 введены для контроллера дополнительные сигналы CTS\RTS.
Догадываюсь, что в скоростном обмене они просто необходимы..
CTS-готовность к приёму,а
RTS-запрос на передачу. Знак# означает инверсию,-т.е. активен лог нулём..
Подскажите, от кого должна инициатива исходить, а проще подскажите протокол для тандема USB-MK??? help.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AlexBoss
сообщение Jul 11 2006, 14:02
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 30-06-06
Из: Донецк
Пользователь №: 18 488



To zltigo!

Ваша ошибка в следующем:
>На передающей стороне аппаратно заблокируется передача ...
Ни какая аппаратная блокировка передачи в UART-ах не используется! Все чипы, начиная с 8251, 8250, .... 16550A и их клоны, а также приемо-передатчики однокристалок для "аппаратного управления потоком" (так обычно называют RTS/CTS) используют программное управление этими сигналами. Аппаратным его назвали только потому, что для его реализации используется аппаратура - пара портов ввода/вывода и проволока их соединяющая. Да и еще в пику чисто программному XON\XOFF.
Таким образом ни какими ухищрениями ни приемник ни передатчик не смогут остановить передачу, которая уже началась - будь то байт в сдвиговом регистре или набитый буфер FIFO передатчика. Остановить поток может только алгоритм, управляющий передачей, который перед очередной закладкой байтов в FIFO обнаружит сброшенный CTS.

> _сбросится_ все содержимое передатчика ....... по лини связи на вход приемника и только после этого остановится поток. Да такую ситуацию принимающий алгоритм должен учитывать и сбрасывать RTS не когда петух клюнет, а заранее - когда в приемном буфере еще есть небольшой резерв (как правило не менее 16 байт) для размещения еще пока недопринятых байт, которые могут уже сидеть в FIFO передатчика. Так он и поступает.

Если даже предположить, что UART-ы с аппаратной блокировкой передачи существуют, что моей 20-летней практикой почему-то не подтверждается, то они просто обязаны:
a) не прерывать передаваемый байт;
б) сохранять недопереданное содержимое FIFO до возобновления передачи - то, что оно придет приемнику потом, после того, как он установит RTS, очеть даже хорошо, т.к. мы же этого и добивались - приостановить передачу.
А если чип не выполняет эти требования, то это исключительное г..... (извините за грубость), с которым просто невозможно работать, которое никто применять, а значит и производить не будет.

To Мур!
Не бойтесь - все именно так красиво.
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 17 2007, 17:24
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(AlexBoss @ Jul 11 2006, 17:02) *
To zltigo!
Ваша ошибка в следующем:
>На передающей стороне аппаратно заблокируется передача ...
Ни какая аппаратная блокировка передачи в UART-ах не используется!

Читать умеем? Читаем ПОЛНОСТЬЮ:
Цитата
Вышескаэанное относится к большинству чипов, хотя бывают и исключения:
На передающей стороне аппаратно заблокируется передача после завершения текущего байта (правильный, но безмерно редкий случай)

Черным по белому написано это исключение в большинстве случаев по причине указанной Вами:
Цитата
Все чипы, начиная с 8251, 8250, .... 16550A и их клоны, а также приемо-передатчики однокристалок для "аппаратного управления потоком" (так обычно называют RTS/CTS) используют программное управление этими сигналами.

Дело обстоит не так. C чем спорим?

Теперь про сбросится:
Цитата
> _сбросится_ все содержимое передатчика ....... по лини связи на вход приемника и только после этого остановится поток.

Нет сбросится, это сбросится нахрен - потеряется.
Цитата
Если даже предположить, что UART-ы с аппаратной блокировкой передачи существуют, что моей 20-летней практикой почему-то не подтверждается,

Существуют, существуют - это не 8250 а 8251. Более того именно они выпускались отечественной промышленностью долгие годы.
Цитата
то они просто обязаны:
a) не прерывать передаваемый байт;....

Увы, их разработчика поступили иначе sad.gif
Цитата
А если чип не выполняет эти требования, то это исключительное г..... (извините за грубость), с которым просто невозможно работать, которое никто применять, а значит и производить не будет.

Однако западники их производят до сих пор smile.gif и ставятся они у меня произведенные фирой NEC в одну старую железку до сих пор.

Цитата
To Мур!
Не бойтесь - все именно так красиво.

Все не красиво по причине необходимости принять в общем случае все содержимое FIFO передатчика.

P.S.
У меня сейчас в РС стоят 550 совместимые UART-ы с 128 байтами FIFO. Вот так даже "красиво" взмахнув CTS, будте добры получить все сполна. Посему в общем случае тормознув передачу CTS, будьте добры продолжать принимать до тех пор, пока не появися пауза в приеме, если не уверены в том, что у Вас на приемной строне FIFO больше, чем на передающей строне.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post



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

 


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


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