Uart что это в телефоне
Serial, UART и Android, как связь с микроконтроллерами
Наши испытуемые:
Планшет на Android 4.1.1 “DNS AirTab M101w” и следующие устройства:
1. Плата Tiva C Series TM4C123G LaunchPad
2. Плата Stellaris LaunchPad EK-LM4F120XL
3. Плата Arduino MEGA 2560
4. Плата MSP430 LaunchPad, M430G2553
И сейчас мы будем по очерёдности подключать все эти платы через USB OTG к планшету и пытаться установить с ними связь не прибегая к root доступу.
Испытуемый 1. Плата Tiva C Series TM4C123G LaunchPad
Плата имеет разъём micro-usb “DEBUG”, и RGB светодиод, с ними то и будем играться.
Был залит при помощи Energia IDE следующий скетч:
В моём случае при подключении к планшету в директории /dev/usb/ появляется файл tty1-1:1.0. Попробуем в эмуляторе терминала прописать следующее:
И тут неожиданно для меня загорается зелёный свет и я увидел строку вывода. Почему неожиданно? Потому что я пренебрёг предварительной настройкой соединения, ткнул пальцем в небо, но за то как удачно! Не будем останавливаться на этом. Но скажу что в разных версиях ядра платы будут определяться по разному, и единой строки команды без костылей не придумаешь (да-да linux обыкновенный).
Немного поигравшись с цветами, отправляя в так называемый COM порт разные цифры приступил к поиску универсального Android решения. В Google Play находится много по запросу “Serial UART”, и большинство приложений работает как надо с игрушкой от Texas Instruments. Но мои попытки найти что нить совместимое Open Source окончились почти ничем. Для Arduino нашёл классную библиотеку, но об этом ниже…
Испытуемый 2: Плата Stellaris LaunchPad EK-LM4F120XL
Как я понял, это предыдущая версия нашего первого испытуемого и с андройдом ведёт себя точно так же. Но актуальная на данный момент Energia 0101E0010 при попытке залить скетч не видит эту плату (Windows 8).
Поэтому я просто включил вывод в консоль пути конечного бинарника и загружал его вручную при помощи LM Flash Programmer.
Испытуемый 3: Плата Arduino MEGA 2560
Немного изменим скетч и будем мигать только одним светодиодом.
Заливаем при помощи Arduino IDE
Подключаем к планшету, снова видим в директории /dev/usb/ файлик tty1-1:1.0, повторяем эксперимент:
и тут обнаруживаю что светодиод 2 раза мигнул с периодом около 100 мс и погас. Ладно пробую следующее:
И тут терминал застыл в ожидании… Ладно Ctrl+C
Логично что в выводе ничего нет.
Но это было только вступление, есть один замечательный проект Physicaloid Library. Для начала откроем библиотеку как обыкновенный android проект в Eclipse. Теперь создадим новый проект и в его свойствах в пункте android, Library жмём Add… и выбираем Physicaloid Library. Теперь что бы при нажатии кнопки отправить строку “1” в ардуину:
Как прочитать полученные данные, думаю рассказывать не нужно, ибо в документации к библиотеке всё есть.
Испытуемый 4: Плата MSP430 LaunchPad, M430G2553.
Эта плата совсем не захотела работать с моим железом. Просто не определяется системой, а USB Device info просто виснет при рефреше.
UART ПРОТОКОЛ: ОПИСАНИЕ РАБОТЫ
UART (Universal Asynchronous Transmitter Receiver) это наиболее распространенный протокол, используемый для полнодуплексной последовательной связи. Устройство отправляет и получает данные из одной системы в другую. В этом мануале мы подробно изучим основы связи и работу протокола UART, подробное описание интерфейса и распиновку разъёмов..
Что такое UART
UART означает универсальный асинхронный приемник-передатчик. Это периферийное оборудование, которое находится внутри микроконтроллера. Функция UART заключается в преобразовании входящих и исходящих данных в последовательный двоичный поток. Восьмибитные последовательные данные, полученные от периферийного устройства, преобразуются в параллельную форму с использованием последовательного преобразования в параллельное, а параллельные данные, полученные от ЦП, преобразуются с помощью преобразования из последовательного в параллельный. Эти данные представлены в модулирующей форме и передаются с определенной скоростью передачи.
Почему используют UART
Для быстрой связи используются такие протоколы, как SPI (последовательный периферийный интерфейс) и USB (универсальная последовательная шина). Но когда высокоскоростная передача данных не требуется, применяют протокол UART. Это дешевое устройство связи с одним передатчиком и приемником. Тут требуется лишь один провод для передачи данных и один для приема. О конвертере USB-ART прочитайте по ссылке.
Его можно подключить к персональному компьютеру с помощью преобразователя RS232-TTL или USB-TTL. Сходство между RS232 и UART заключается в том, что им обоим не нужен таймер для передачи и приема данных. Кадр UART состоит из 1 стартового бита, 1 или 2 стоповых битов и бита четности для последовательной передачи данных.
Блок-схема UART
UART состоит из следующих основных компонентов: передатчик и приемник. Передатчик состоит из регистра удержания передачи, регистра сдвига передачи и логики управления. Точно так же приемник состоит из регистра удержания приема, регистра сдвига приемника и логики управления. Обычно и передатчик, и приемник снабжены генератором скорости передачи данных.
Генератор скорости передачи данных формирует скорость, с которой передатчик и приемник должны отправлять и получать данные. Регистр удержания передачи содержит передаваемый байт данных. Регистр сдвига передачи и регистр сдвига приемника сдвигают биты влево или вправо, пока байт данных не будет отправлен или получен.
В дополнение к этому, предусмотрена логика управления чтением или записью, указывающая когда читать и записывать. Генератор скорости передачи данных формирует скорости в диапазоне от 110 бит / с до 230400. В большинстве случаев микроконтроллеры предлагают более высокие скорости передачи, такие как 115200 и 57600 бит / с, но такие устройства как GPS и GSM, используют более низкую скорость в 4800 и 9600 бод.
Как работает UART
Передатчик и приемник используют стартовый бит, стоповый бит и параметры синхронизации для взаимодействия друг с другом. Исходные данные находятся в параллельной форме. Например есть 4-х битные данные, и чтобы преобразовать их в последовательную форму нужен преобразователь из параллельного в последовательный. Обычно для проектирования преобразователей используются D-триггеры.
D-триггер, также известный как триггер данных, сдвигает один бит со стороны входа на сторону выхода только тогда, когда таймер изменяет переход из высокого состояния в низкое или из низкого состояния в высокое. Точно так же, если надо передать 4 бита данных, понадобится 4 триггера.
Теперь спроектируем преобразователь из параллельного в последовательный и из последовательного в параллельный.
Параллельное преобразование в последовательное
Последовательное преобразование в параллельное
Шаг 1: Возьмем 4 триггера. Количество триггеров совпадает с количеством передаваемых битов.
Шаг 2: Сначала отключим параллельную шину. Не включаем пока не будут загружены все биты. Сохраним данные на входе первого триггера. Теперь установим высокий уровень тактовой частоты, это сдвинет младший бит на вход второго триггера и выход первого. Точно так же сдвинем все биты один за другим, сделав тактовый импульс высоким. Преобразователь находится в состоянии удержания до тех пор, пока все биты не будут переданы на выход.
Шаг 3: Теперь каждый триггер содержит один бит последовательных данных. Пока все биты передаются на выход триггера, активируем шину. Это заставит конвертер отправлять все биты за раз.
Формат протокола UART
Начинается связь со стартовым битом «0». Стартовый бит инициирует передачу последовательных данных, а стоповый бит завершает транзакцию данных.
Он также имеет бит четности (четный или нечетный). Бит четности представлен как «0» (четное количество единиц), а бит нечетной четности представлен как «1» (нечетное количество).
Передача данных
Передатчик отправляет по одному биту за раз. После отправки одного бита отправляется следующий. Таким образом, все биты данных отправляются на приемник с заранее определенной скоростью передачи. При передаче каждого бита будет определенная задержка. Например, чтобы отправить один байт данных со скоростью 9600 бод, каждый бит отправляется с задержкой 108 мкс. Данные добавляются с битом четности. Таким образом для отправки 7 бит требуется 10 бит данных.
Прием данных
Для приема данных используется приёмная линия RxD.
Пример интерфейса UART
Этот пример демонстрирует взаимодействие ESP8266 UART с MAX232. Микросхема MAX232 питается от источника 5 В, и включает в себя генератор емкостного напряжения для управления напряжением 232 уровня. Она поставляется с двумя передатчиками, также называемыми драйвером (Tin, Tout) и приемниками (Rin и Rout).
Здесь использовался ESP8266 (32-битный микроконтроллер) со встроенным UART. Связь может осуществляться с ESP8266 с использованием AT-команд через преобразователь уровня RS232 в TTL (MAX232). На схеме показано подключение ESP8266 к компьютеру.
Запрашивая действительные AT-команды через ПК, микросхема Wi-Fi ответит подтверждением. Вот шаги для реализации последовательной связи с ПК.
Команды ESP8266
Далее показан ответ модуля ESP8266.
UART и USART
UART | USART |
---|---|
Тайминги генерируются внутри микроконтроллера. | Отправляющее устройство сгенерирует тайминг. |
Скорость передачи данных низкая. | Скорость передачи данных выше из-за внешних таймингов. |
Автономный протокол | Поддерживает несколько протоколов, таких как LIN, RS-485, IrDA, смарт-карта и т. д. |
Перед передачей необходимо знать скорость передачи. | Нет необходимости знать скорость передачи заранее. |
Подходит для низкоскоростной связи | Подходит для высокоскоростной связи. |
Сниженный энергетический след. | Обеспечивает последовательную связь при высоком энергопотреблении |
Основное различие между UART и USART заключается в том, что UART поддерживает только асинхронную связь, тогда как USART поддерживает как синхронную, так и асинхронную. Вот сравнение между USART и UART:
RS232 и UART
Логические уровни представляют собой уровни рабочего напряжения, которые устройство может выдержать для работы в безопасной зоне. Вот уровни напряжения для RS232 и TTL:
Логика TTL / CMOS
UART работает по TTL логике.
Преимущества и недостатки UART
Области применения протокола
Последовательный порт отладки использует драйвер UART для печати данных, поступающих извне. Можем использовать этот протокол для отправки и получения команд на встроенные устройства и от них. Также выполняется связь в GPS, модеме GSM / GPRS, чипах Wi-Fi и других модулях работающих с UART. Используется в доступе к мэйнфрейму для подключения разных компьютеров.
Форум по обсуждению материала UART ПРОТОКОЛ: ОПИСАНИЕ РАБОТЫ
Обсудим действующие стандарты радиосвязи, узнаем чем они отличаются, и когда использовать какие из них.