Обмен данными между компьютером и микроконтроллером STM32F100 по последовательному интерфейсу связи RS-232
В.А. Жмудь, И.В.Трубин, М.В.Трубин ФГБОУВПО НГТУ, Новосибирск, Россия
Аннотация: В современном мире большой объем занимают автоматизированные системы управления, но управление не возможно без связи между устройствами. В настоящее время применяется множество интерфейсов связи, но бесспорно одним из самых простых и популярных является до сих пор RS-232. В статье рассматриваются вопросы передачи данных в последовательном виде между микроконтроллером из серии STM32F100 и компьютером по интерфейсу RS-232. Приводится краткая историческая
информация по данному интерфейсу. Приводится описание преобразователя USB/RS232 на базе популярной микросхемы PL2303. Подробно рассматривается способ подключения компьютеру. Приводится методика проверки преобразователя без использования других устройств связи. Рассматривается пример программного кода. Раскрываются возможности программы Terminal. Для улучшения понимания процесса передачи/приёма данных приводятся осциллограммы сигналов.
Ключевые слова: RS-232, USART, STM32, STM32F100, Terminal, STM32VLDISCOVERY
ВВЕДЕНИЕ
В современном мире большой объем занимают автоматизированные системы управления, но управление не возможно без связи между устройствами. Невозможно представить себе систему управления без связи между управляющим устройством и устройством-исполнителем. Целью данной статьи является рассмотрение интерфейса связи между устройствами, а конкретно RS-232. В мире применяется множество интерфейсов связи, но бесспорно одним из самых простых и популярный является до сих пор RS-232. Данный интерфейс позволяет подключать устройства к большинству ПК, он прост в применении и широко распространен. Одним из ограничивающих факторов применения данного интерфейса является ограничение длины линии
связи - не более 15 м, что объясняется не высокой помехозащищённостью.
1. ИНТЕРФЕЙС И СТАНДАРТ RS-232
RS-232 (Recommended Standard 232) -стандарт, описывающий интерфейс для последовательной двунаправленной передачи данных между терминалом (DTE, Data Terminal Equipment) и конечным устройством (DCE, Data Circuit-Terminating Equipment). RS-232 -проводной дуплексный (т.е. можно одновременно передавать и принимать информацию) интерфейс. Информация передается по проводам двоичным сигналом с двумя уровнями напряжения. Логическому «0» соответствует положительное напряжение (от +5 до +15 В), а логической «1» отрицательное (от -5 до -15 В).
В 1962 году Electronics Industries Association (EIA) разработало рекомендации для производителей оборудования, назвав их "Рекомендованный стандарт 232". Интерфейс RS-232 был разработан максимально универсальным, что позволяло многим производителям легко переделать своё оборудование под этот стандарт. Для электрического согласования линий RS-232 и стандартной цифровой логики UART выпускается большая номенклатура микросхем драйверов. Для передачи " полезных" данных в одной посылке допускалось использовать от 5 до 8 бит. Было предусмотрено 16 сервисных сигналов, использование которых было не обязательно. Допускалась работа как в синхронном, так и асинхронном режиме передачи данных.
В 1969 году EIA выпустила редакцию стандарта RS-232C, в котором был учтен семилетний опыт применения стандарта RS-232A/B. Окончательно был узаконен 25 штырьковый разъем DB25 и электрические характеристики сигнала. Эта редакция стала основным интерфейсом передачи данных по последовательным каналам связи на многие годы вперед [1].
Таблица 1
Назначение выводов 9 - контактного разъема
Контакт Сигнал Направление Описание
1 CD Вход Обнаружена несущая
2 RXD Вход Принимаемые данные
3 TXD Выход Передаваемые данные
4 DTR Выход Хост готов
5 GND - Общий провод
6 DSR Вход Устройство готово
7 RTS Выход Хост готов к передаче
8 CTS Вход Устройство готово к приему
9 RI Вход Обнаружен вызов
Таблица 2
Назначение выводов 25 - контактного разъема
Контакт Сигнал Направление Описание
1 SHIELD - Экран
2 TXD Выход Передаваемые данные
3 RXD Вход Принимаемые данные
4 RTS Выход Хост готов к передаче
5 CTS Вход Устройство готово к приему
6 DSR Вход Устройство готово
7 GND - Общий провод
8 CD Вход Обнаружена несущая
9 - - Резерв
10 - - Резерв
11 - - Не используется
12 SCD Вход Обнаружена несущая #2
13 SCTS Вход Устройство готово к приему #2
14 STXD Выход Передаваемые данные #2
15 TRC Вход Тактирование передатчика
16 SRXD Вход Принимаемые данные #2
17 RCC Вход Тактирование приемника
18 LLOOP Выход Локальная петля
19 SRTS Выход Хост готов к передаче #2
20 DTR Выход Хост готов
21 RLOOP Выход Внешняя петля
22 RI Вход Обнаружен вызов
23 DRD Вход Определена скорость данных
24 TRCO Выход Тактирование внешнего передатчика
25 TEST Вход Тестовый режим
2. ОПИСАНИЕ ПРЕОБРАЗОВАТЕЛЯ USB/RS-232 НА БАЗЕ МИКРОСХЕМЫ PL2303
PL2303 - микросхема преобразователя интерфейса USB в RS232. Фотография платы преобразователя USB/RS232 представлена на Рис. 1.
Рис. 1 Внешний платы преобразователя USB/RS232 на базе микросхемы PL2303
Как можно заметить этот модуль имеет два разъема: USB для подключения к персональному компьютеру и 4-х контактную штыревую линейку для связи с устройствами. Контакты штыревой линейки подписаны: «Vcc» - питание +5 В от шины USB персонального компьютера, «RXD» -вход приемника преобразователя, «TXD» - выход передатчика преобразователя и «GND» - нулевой провод источника питания. На плате имеется лишь одна микросхема преобразователя PL2303HX фирмы Prolific Technology. Все подобные преобразователи обычно строятся на таких микросхемах, которые значительно упрощают процедуру преобразования сигналов USB в сигналы RS232. При подключении модуля к компьютеру, и при отсутствии замыканий, на плате загорается красный светодиод, сигнализирующий о наличии питания по шине USB. Для нормальной работы устройства в системе необходимо установить драйвер PL2303HX, дистрибутив которого можно найти на сайте Prolific Technology. Установка драйвера обычно не вызывает трудностей. После установки, в системе должен появиться новый виртуальный COM-порт, наличие которого для операционных систем Windows можно проверить в диспетчере устройств. Подключение преобразователя к отладочной плате можно осуществить при помощи стандартных соединительных проводов.
3. ОПИСАНИЕ ПРОГРАММЫ TERMINAL
Для передачи данных от компьютера в микроконтроллер, и для приёма данных от микроконтроллера с последующим отображением результатов на экране монитора будем использовать программу Terminal v1.9 от автора Br@y++ [3]. Эта программа включает в себя удобный интерфейс по настройке параметров работы COM-порта, а также расширенные возможности по управлению поступающим потоком данных из коммуникационного порта. Внешний вид программы представлен на Рис. 2.
Рис. 2 Внешний вид программы Terminal
Рис. 3 Основные настройки программы Terminal
Программа Terminal содержит множество настроек. На Рис. 2 можно увидеть основные настройки для работы с программой:
- выбор COM-порта - при нажатие кнопки ReScan, программа найдет возможные порты для работы, после этого необходимый порт можно выбрать вручную;
- настройка скорости передачи данных -большинство устройств работают со скоростью 9600 бит/с; скорость обмена должна быть выставлена одинаковая на обоих устройствах, которые участвуют в обмене данными.
Количество информационных бит - по умолчанию 8 бит. Контроль четности -отсутствует. Количество стоповых бит - по умолчанию 1 бит. Управление служебными сигналами - отсутствует. Также в программе Terminal существует возможность во время
работы вызвать таблицу ASCII кодов кнопкой ASCII table.
4. ПЕРЕДАЧА И ПОЛУЧЕНИЕ ДАННЫХ ЭХО-СИГНАЛА
Используя программу Terminal и преобразователь PL2303, передадим данные. Для того, чтобы передать и получить данные не задействовав дополнительные устройства замкнём контакты «RXD» и «TXD» используя джампер и подключим преобразователь к компьютеру как показано на Рис. 4.
Передадим код числа «1». Загружаем программу Terminal, в строке ввода данных набираем число «1». На экране вывода информации появляется «1» - см. Рис. 5.
Рис. 4 Подключение преобразователя PL2303 к компьютеру
Рис. 5 Передача и получение данных используя программу Terminal
Подключим осциллограф в место соединения сигналов «RXD» - «TXD» и получим следующую осциллограмму - см. Рис. 6.
5. ОПИСАНИЕ STM32 USART
Обмен данными - одна из часто возникающих задач. Передача данных осуществляется между датчиком и устройством обработки данных, между управляющим блоком и исполнительным механизмом и т. д.
Существует множество способов передачи информации, но наиболее простым и надежным является передача данных через USART.
Рассмотрим USART модуль в микроконтроллере STM32. Универсальный асинхронный приёмопередатчик (УАПП, англ. Universal Asynchronous Receiver-Transmitter, UART) — узел вычислительных устройств, предназначенный для организации связи с другими цифровыми устройствами, в том числе по RS-232. Преобразует передаваемые данные в последовательный вид так, чтобы было возможно передать их по цифровой линии другому аналогичному устройству. Метод преобразования хорошо стандартизован и широко применялся в компьютерной технике. Представляет собой логическую схему, с одной стороны подключённую к шине вычислительного устройства, а с другой имеющую два или более выводов для внешнего соединения. UART может представлять собой отдельную микросхему (например, Intel I8251, I8250) или являться частью большой интегральной схемы (например, микроконтроллера) [4].
Для работы с модулем USART возьмем отладочную плату STM3 2 VLDISCO VER Y и проведем необходимо следующие настройки:
Вначале необходимо настроить параметры порта. Для облегчения работы будем использовать библиотеку производителя микроконтроллера ST Microelectronics. Создаём переменные на основе шаблонов, заполняем поля структур и вызываем функции, которые производят необходимую настройку "железа" -см. Рис. 7, 8.
Рис. 7. Объявление переменных
Используем простой пример части программы по приёму и передачи символа с кодом на единицу больше, см. Рис. 9.
Рис. 6 Осциллограмма сигналов в устройстве
о ШШ»„ШЛ
Ш и ши г г : - ы rnaginii с ^ j
16 ( 9 I А ^ t
□ ®Й1® S Е
1Ё
38
39
40
41
42
43
44
45
46
47
48
49
50 Б1
52
53
54
55
56
57
58
/*=
:USART1=
===v
Init PORTA.GPIO Pin = GPIO Pin 10;. / USART1R* PA10 I n it_ PORTA. G Pi 0 _S pe ed = GPIO_Speed_WMHz;
Init_PORTA.GPi0_Mode = GPIO_Moda JPU; // GPIO_ModeJN_FLOATING; - было GPIO .lnit(GPIOA, №nlt PORTA);
I n i t_ PORTA. G PJO_Pi n = GPIOPinS; USARTI Ti PA9 Inlt PORTA.GPiO Speed = GPIO.Speed WMHz;
Init PORTA.GPIO Mode = GPIO Mode AF PP; Aiternate function push pull GPIO_lnit(GPlOA, ilinit_PORTA>;
tISART InitStnjcture.USART BaudRate =
USART_lnitStructure.USART_WordLength = USART_WordLength_8b; USART l(iitStructure.USART_StopBits = USART_StopBits_l; USART InitStrucUi re. USART Parity = US ART Parity No;
USART_lnitStnicture.USART_HardwareFtowContfoi = USART_HardwareRowControl None; USART_lnitStnjcture.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART .Initt USARTI, ftUSARTJnitStructure);
USART_Cmd(USARTI, ENABLE);
Рис. 8 Настройка параметров порта
63 /*====================== MAIN ====================*/
54 mtmam(vo)d)
55 ta{
static uint8_tcii;
57 #include "magwiit.c"
58 //============== MAIN LOOP====================
59 while ( )(
while(USART_GetF1agStatus(USARTI, USART FLAG.RXNE) — RESET) [J; ch = USART ReceiveDati (USARTI);// Принимаем символ
62
while (USART GetFlagStatus(USARTI, USART FLAG TC) == RESET) {J;
64 USART_5enrtData(USARTI, ch+ >; // Передав« синем с кодом
65 }
66 ) 67
66 // КОНЕЦ
Рис. 9. Код программы получения и передачи символа с кодом на единицу больше
В данном примере в начале обращаемся к функции «USART_GetFlagStatus», которая проверяет состояния бита «USART_FLAG_RXNE» в «USART1». И если этот бит равен 0, т.е. нет
данных от компьютера, то программа в этом месте зацикливается. Как только бит
«USART_FLAG_RXNE» не будет равен 0, это означает что приняты данные от компьютера.
После этого переменной «сИ» присваиваются полученные данные (байт). Далее обращаемся к функции «и8АЯТ_Ое1ИадБ1а1;ш», которая проверяет состояния бита «и8АКТ_РЬАО_ТС» в «и£АЯТ\». И если этот бит равен 0, т.е. передатчик не готов передавать данные, то программа в этом месте зацикливается. Как только бит «и8АКТ_РЬАО_ТС» не будет равна 0 -программа передаст данные, которые хранятся в переменной «сИ» предварительно добавив к ним число \.
СХЕМА СОЕДИНЕНИЯ ПК-и8Б/К8-232-8ТМ32.
Подключим отладочную плату
БТЫ3 2 УЬБ^СО УЕК У к преобразователю иББК8232 по следующей схеме (Рис. \0):
• ЯХ платы к ТХ преобразователя;
• ТХ платы к ЯХ преобразователя;
• ОЫБ платы к ОЫБ преобразователя.
Рис. 10 Подключение STM32VLDISCOVERY к преобразователю USB/RS232
Запишем программу в микроконтроллер и запустим её. На компьютере запустим программу Terminal. В строке ввода данных набираем число «1». На экране вывода информации появляется «2» - см. Рис. 11.
Connected |Rx:11929 |Тх: 9887
Рис. 11. Получение данных
Если подключиться параллельно к линиям ЯХ и ТХ, то сможем наблюдать следующую осциллограмму, см. Рис.\2.
Рис. \2 Осциллограмма передачи/приёма данных ПК-8ТМ32УЪБ18СОУЕЯУ
На данной осциллограмме хорошо видно некоторые особенности:
\. передача данных осуществляется в обратной последовательности, т. е. первым передаётся 0 бит данных, потом \ и т.д.
2. вначале передачи идет стартовый бит -всегда «0»;
3. передача заканчивается стоповым битом -всегда «\».
ЗАКЛЮЧЕНИЕ
Работа выполнена при финансовой поддержке Минобрнауки России по государственному заданию №2014/138, тема проекта «Новые структуры, модели и алгоритмы для прорывных методов управления техническими системами на основе наукоемких результатов интеллектуальной деятельности».
ЛИТЕРАТУРА
[1] URL: http://www.gaw.ru/html.cgi/txt/interface/rs232/start.htm
[2] Terminal. Com port development tool. URL:
https://sites.google.com/site/terminalbpp/ (дата обращения 5.02.14).
[3] Wikipedia URL:
https://ru.wikipedia.org/wiki/Универсальный_асинхронный_при ёмопередатчик
Вадим Аркадьевич Жмудь -
заведующий кафедрой Автоматики НГТУ, профессор, доктор технических наук. Область научных интересов и компетенций - теория автоматического управления, электроника, лазерные системы, оптимизация, измерительная техника.
E-mail: oao_nips@bk.ru
Трубин Максим Витальевич -
студент группы АА-46 кафедры Автоматики НГТУ E-mail: tmv.kba@gmail.com
Трубин Игорь Витальевич -
зам. дир. "КБ Автоматика" E-mail: tiv.kba@gmail.com
Exchange of Data between the Computer and the Microcontroller STM32F100 by Serial Communication Interface RS-232
V.A. ZHMUD, IV. TRUBIN, M.V. TRUBIN
Abstract: In today's world, automated control systems are widely used, but the control is impossible without communication between the devices. Currently set of communication interfaces are used, but undoubtedly RS-232 is still the easiest and most popular one. The paper deals with the serial data exchange between the microcontroller of a series of STM32F100 and computer via RS-232. The paper gives brief historical information on this interface. It proposes the description of the converter USB / RS232 based on the popular chip PL2303. It gives the way of connection to the computer in details. In addition, the paper gives the technique of checking of the transmitter without the use of other communication devices. Discuss of the example of the code is there also. Paper reveals the features of the program "Terminal". The paper gives waveforms to improve the understanding of the process of data transmitting and receiving.
Keywords: RS-232, USART, STM32, STM32F100, Terminal, STM32VLDISCOVERY
REFERENCES
[1] URL: http://www.gaw.ru/html.cgi/txt/interface/rs232/start.htm
[2] Terminal. Com port development tool. URL:
https://sites.google.com/site/terminalbpp/ (Data: 5.02.14).
[3] Wikipedia URL:
https://ru.wikipedia.org/wiki/%D0%A3%D0%BD%D0%B8%D0 %B2%D0%B5%D 1 %80%D 1 %81 %D0%B0%D0%BB%D1%8C% D0%BD%D 1 %8B%D0%B9 %D0%B0%D 1%81 %D0%B8%D0% BD%D1%85%D 1 %80%D0%BE%D0%BD%D0%BD%D 1 %8B% D0%B9 %D0%BF%D1%80%D0%B8%D1%91%D0%BC%D0%
BE%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0% D1 %82%D1%87%D0%B8%D0%BA