Последовательный порт

E-mail Печать PDF

У нас уже было несколько проектов для платы Марсоход, когда мы подключали ее к ПК. Это были интерфейсы USB, PS/2, Ethernet. Теперь я подумал: "А почему бы не подключить нашу плату по последовательному порту RS232?".

Последовательный интерфейс, конечно, довольно старый и довольно примитивный, но, как ни странно, не собирается уходить со сцены. Даже когда настольные ПК и ноутбуки стали выпускаться без разъемов последовательных портов тут же появились в продаже шнуры USB-to-Serial. Они по прежнему позволяют подключать устройства по последовательному интерфейсу.

В чем же такая привлекательность этого интерфейса? Главные преимущества - это простота реализации в аппаратуре и простота программирования. Даже повсеместный USB несомненно проигрывает по этим критериям.

Итак, мы решили подключить плату Марсоход к персональному компьютеру по последовательному интерфейсу. Что нам нужно знать для этого?

1. Сигналы последовательного порта.
Давайте рассмотрим сигналы 9-ти контактного разъема последовательного порта, того, что на материнской плате или в шнуре USB-to-Serial.

RS232, Разъем последовательного порта компьютера
Как видите на этой картинке - сигналов довольно много. Когда-то последовательный интерфейс использовался для подключения модемов - устройств передачи данных через телефонные линии. Поэтому тут есть например сигнал RI, Ring Indicator - сигнал о входящем телефонном звонке. Другие сигналы, такие как RTS/CTS позволяли управлять потоками данных, разрешать или запрещать передачу.

Для реализации простейшей передачи нам будут нужны всего 3 провода: Земля, TX (передача от ПК) и RX (ПК принимает данные по нему).

2. Преобразование уровней.
К сожалению и тут не обходится без ложки дегтя. Уровни сигналов в последовательном интерфейсе RS232 это +12В и -12В относительно Земли. Причем +12В это логический ноль, а -12В это логическая единица. Понятно, что подключать такие сигналы напрямую к ПЛИС платы Марсоход "не желательно". Существует довольно много схем преобразования уровней, но пожалуй самые простые те, которые используют специализированные микросхемы. Их преимущество в том, что они требуют только одного напряжения питания +5В.

Я использовал первую микросхему, что попалась мне по руку HIN202. описание на эту микросхему можно взять здесь icon HIN202 (625.08 Кбайт).

Это не единственная микросхема такого рода. Есть еще MAX232 (http://ru.wikipedia.org/wiki/Max232) или SP230 и многие другие. Микросхемы эти в общем похожи друг на друга и зачастую имеют одинаковое расположение выводов и похожие схемы включения:

Схема включения преобразователя уровней HIN202

3. Изготовление преобразователя уровней для платы Марсоход.
Я изготовил преобразователь уровня, который подключается к плате через ее разъем Right motor. Схема преобразователя уровней вот такая:

Схема преобразователя уровней RS232 для платы Марсоход
Я использовал SMD конденсаторы 1Мф - они нарисованы синими прямоугольничками.

А вот несколько фото моей платы:

Преобразователь уровней для платы Марсоход (вид сверху) Преобразователь уровней для платы Марсоход (вид снизу)

Вот так подключаем к плате:

Преобразователь уровней для платы Марсоход

4. Протокол передачи данных.
При последовательной передаче по RS232 данные передаются очень просто. В исходном состоянии линия находится в логической единице. При передаче байта сперва идет старт бит - ноль, затем 8 бит данных (младшими битами вперед), затем бит четности и стоп бит - это единица.

Контроллер последовательного приемопередатчика можно программировать так, что бит четности не передается. Тогда еще проще: старт бит, 8 бит данных и стоп бит.

Протокол последовательной передачи данных

После этой последовательности можно посылать следующий байт. Скорость передачи может программироваться. Стандартные значения скорости передачи, например 9600, 19200, 38400 или 115200 бит в секунду.

5. Проект для платы Марсоход.

Теперь, когда преобразователь уровней сигналов у нас уже есть, нужно заняться самим проектом для ПЛИС. Я написал простейший приемопередатчик ня языке Verilog. Его исходный текст вот здесь. Прием и передача осуществляется на скорости 38400 бит/секунду без бита четности.

Ну а весь проект для платы Марсоход можно взять здесь: icon Последовательный порт (50.83 Кбайт)

Этот проект делает следующее:

  • принимает байты и показывает последний принятый байт на светодиодах платы;
  • при нажатии на кнопочки платы посылает код 0x30+N, где N четырехбитный код кнопочек платы.

6. Испытание.

Подключаю плату Марсоход через преобразователь уровней и шнур USB-to_Serial.

Подключение платы Марсоход по последовательному порту к ПК

В диспетчере устройств ноутбука смотрим номер порта, назначенный моему шнуру USB-to-Serial. Вижу, что у меня COM6.

Окно "Управление компьютером"

Подаем питание на плату Марсоход:

Подключение платы Марсоход по последовательному порту к ПК

Запускаем программу HyperTerminal (или любую другую). Настраиваем ее на скорость 38400, без бита четности и без аппаратного управления.

Нажимая кнопки на плате видим как появляются цифры в окне терминала. Когда печатаем в окне терминала - загораются светодиоды платы.


 

Tags:
 

Комментарии 

 
0 #9 nckkm 02.03.2012 06:44
Цитирую Chooze:
Поясните пожалуйста почему:
5000000/38400 = 130 ,а parameter RCONST = 128;
В таком варианте - на прием модуль не работал. Исправил переменную на 130 и все заработало.
???

разные партии ПЛИС к сожалению имеют разную частоту встроенного генератора, от этого и проблема.
Цитировать
 
 
0 #8 Chooze 02.03.2012 06:00
Поясните пожалуйста почему:
5000000/38400 = 130 ,а parameter RCONST = 128;
В таком варианте - на прием модуль не работал. Исправил переменную на 130 и все заработало.
???
Цитировать
 
 
0 #7 Techno Viking 28.02.2012 06:30
Возможно ли при помощи подобных микросхем для последовательно го порта реализовать каким-нибуь образом трехуровневый биполярный код?
Цитировать
 
 
0 #6 nckkm 26.02.2012 17:12
Цитирую Mikk:
а такой проект можно перенести на epm3128 ?

скорее всего можно
Цитировать
 
 
0 #5 Mikk 26.02.2012 14:21
а такой проект можно перенести на epm3128 ?
Цитировать
 
 
0 #4 pixar 13.01.2012 05:32
Цитирую Ю р и й:
простейший приемопередатчи к ня языке Verilog. Его исходный текст вот здесь.
Прескалеру бодрейта не хватает разрядности для смены тактовой . Добавьте коммент :)
Цитировать
 
 
+1 #3 Ю р и й 09.06.2011 18:32
Цитирую Вячеслав:
Скажите пожалуйста.. какие используются SMD конденсаторы полярные или нет?

Неполярные керамические на 1мф.
Цитировать
 
 
+1 #2 Вячеслав 09.06.2011 09:56
Скажите пожалуйста.. какие используются SMD конденсаторы полярные или нет?
Цитировать
 
 
+6 #1 DigolosSSD 18.10.2010 03:31
I liked a resource. Already many resources look well at last that have learned to do beautifully. Our information century has forced people to do the affairs and instantly to solve any questions through a global network the Internet.
Цитировать
 

GitHub YouTube Twitter

Подписка RSS

marsohod.org - лента

Последние комментарии: