Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Можно ли передать по RS232 более 8 бит данных в одном фрейме?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Интерфейсы
Vagant
Здравствуйте.

Скажите пожалуйста новичку - а можно ли передать более чем 8 бит в одном фрейме передачи через COM порт по интерфейсу RS232? В книжках обычно пишется что по этому интерфейсу асинхронно передаются фреймы формата:

стартовый бит - 8 бит данных - стоповый бит

где только 8 бит в одном фрейме.

А мне хотелось бы передавать с ПК на ПЛИС 64-битные коды (в каждом из которых первый байт является кодом команды а остальные 7 байт - данные). ПЛИС будет принимать такие 64-битные коды (фреймы) и в соответствие с кодом команды (первый байт во фрейме) будет обрабатывать данные переданные в остальных 6 байтах фрейма.

Можно ли вот так, в одном фрейме - передать с ПК сразу 64-битный код на ПЛИС?

Спасибо.
aaarrr
Цитата(Vagant @ Feb 1 2010, 09:53) *
Можно ли вот так, в одном фрейме - передать с ПК сразу 64-битный код на ПЛИС?

Нет, нельзя.
МП41
Обычно для передачи больших блоков формируют логические фреймы, например: 1-й байт - синхронизация (типа AAh или 55h), потом служебный байт (команда, длина фрейма и т.д., кто как делает), потом блок данных, а в конце - контрольная сумма.
mdmitry
использовать протокол, например, wake
Vagant
Спасибо большое за советы.

А нельзя просто запрограммировать FIFO достаточно большого размера на ПЛИС и соединить вход этого FIFO c Tx? (это когда компьютер передаёт). А потом, когда данные переданы с компьютера, просто читать одно за другим 64-битные слова из FIFO. Будет ли работать такой подход?
aaarrr
Цитата(Vagant @ Feb 1 2010, 17:59) *
Будет ли работать такой подход?

В тепличных условиях - возможно. Но лучше принять хотя бы минимальные меры для синхронизации данных.
Vagant
Цитата(aaarrr @ Feb 1 2010, 19:28) *
В тепличных условиях - возможно. Но лучше принять хотя бы минимальные меры для синхронизации данных.


Про синхронизацию - как я понимаю, у UART есть свой FIFO. А Tx этого UART будет соединён со входом serial-to-parallel shift register выход (64-битный, параллельный) которого будет подан на вход FIFO размера 1024 (к примеру) на 64. Этот shift register будет синхронизирован от CLK на FPGA board. То есть с каждым импульсом от CLK данные будут по одному биту записываться в FIFO. Имхо, должно работать. Потом данные уже просто считываются из FIFO с любой скоростью.
aaarrr
Цитата(Vagant @ Feb 1 2010, 19:21) *
Имхо, должно работать.

На столе - будет. Хотя в вашей схеме отсутствует собственно UART: тактировать сдвиговый регистр чем будете?
Vagant
Цитата(aaarrr @ Feb 1 2010, 20:25) *
На столе - будет. Хотя в вашей схеме отсутствует собственно UART: тактировать сдвиговый регистр чем будете?


Сдвиговый буду тактировать от CLK на плате (50 МГц). А вот с UART есть непонятки. Вообще я собираюсь это всё делать на Xilinx 3E 1600E Microblaze Development Board а там есть разьём RS232 а вот UART тоже должен быть но я его на самой плате не нашёл (искал чип MAXIM). В описании к плате указано только к каким пинам ПЛИС просоединён Tx и Rx. Может это Tx и Rx RS232 разьёма а UART вообще на плате нет? Пока что сам не понял этого момента.
V_G
RS232 - интерфейс асинхронный. При 8-битной передаче имеются определенные требования к разбросу тактовых частот приемника и передатчика (у меня вроде как работало с 3% отклонениями). Синхронизация каждый раз осуществляется по старт-биту. При увеличении длины посылки требования к точности частот многократно возрастают.
Другие форматы, например, Манчестер, допускают 25% отклонение, но там фактически побитная синхронизация.
XVR
Цитата(Vagant @ Feb 1 2010, 19:56) *
Сдвиговый буду тактировать от CLK на плате (50 МГц).
Ой! У вас RS232 на 50MBaud? cranky.gif
Цитата
Вообще я собираюсь это всё делать на Xilinx 3E 1600E Microblaze Development Board а там есть разьём RS232 а вот UART тоже должен быть но я его на самой плате не нашёл (искал чип MAXIM).
Не там искали. Он собирается внутри этой самой 'Xilinx 3E 1600E'
Зайдите на www.opencores.org и посмотрите какую нибудь корку UART'а попроще, много вопросов отпадет
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.