CANNY 5 Nano. Драйвер UART
Общее описание
Контроллеры CANNY 5 Nano имеют два независимых аппаратных интерфейса UART поддерживающих работу в асинхронном дуплексном режиме приема/передачи данных и могут быть использованы для связи контроллеров друг с другом или с внешним оборудованием поддерживающим данный вид связи. Интерфейсы могут быть задействованы независимо друг от друга и иметь индивидуальные настройки скорости передачи данных и полярности сигналов. Интерфейс UART1 задействует каналы № 0 (TX) и № 1 (RX) контроллера, интерфейс UART2 задействует каналы № 8 (TX) и № 9 (RX). При включении интерфейса активируются оба его канала.
Каналы №0 и №1 контроллера параллельно подключены к USB-контроллеру виртуального последовательного порта, что позволяет, используя интерфейс UART1 организовать обмен данными между пользовательской диаграммой и ПК, либо другим USB-host устройством поддерживающим данный тип соединения.
Объем приемного и передающего буферов данных драйвера UART CANNY 5 Nano составляет 32 байта.
Примечание: Для корректной работы интерфейсов UART необходимо, чтобы контакты «GND» устройств, совершающих обмен данными, были приведены к единому потенциалу («общая земля»).
Драйвер UART в своей работе использует ресурсы каналов контроллера, но имеет более высокий приоритет чем драйвер дискретного ввода-вывода. Таким образом, при активации того или иного интерфейса UART, для задействованных в его работе каналов, изменение значений в связанных с ними регистрах драйвера дискретного ввода-вывода будет проигнорировано контроллером.
Регистры драйвера
Ниже приведено описание допустимых и возвращаемых значений регистров управления работой драйвера.
Регистр | Ожидаемые значения |
---|---|
Регистр конфигурации UARTx | 1…N = установить конфигурацию канала драйвера UART контроллера, определяющую текущий режим и параметры его работы (задается специальной константой из справочника констант); 0 = отключить канал от драйвера UART, вернуть управление каналом драйверу каналов ввода-вывода и разрешить изменения его состояния из функциональной диаграммы. |
Регистр установки таймаута приема сообщения UARTx, мс | 1…65535 = прекращение приема данных если в течении указанного времени на линии не было зафиксировано ни одного изменения потенциала и линия находится в пассивном состоянии; 0 = использовать значение по умолчанию (1мс). |
Регистр включения режима открытого коллектора канала UARTx TX | ≥ 1 = отключить верхнее плечо канала передачи соответствующего интерфейса UART, передача будет осуществляться в режиме «воздух / GND»; состоянии; 0 = включить верхнее и нижнее плечо канала передачи соответствующего интерфейса UART передача будет осуществляться в режиме «+5В / GND». |
Конфигурация драйвера UART определяется константой, представляющей комбинацию параметров, определяющих скорость, режим, дополнительные параметры передачи данных и потенциал линии в пассивном режиме.
Параметр | Перечень допустимых значений |
---|---|
Скорость передачи данных, бод | 300, 1200, 2400, 9600, 10400, 19200, 57600, 115200, 172800, 230400 |
Режим работы | UART |
Полярность | прямая; инверсная |
Режим открытого коллектора | «ВКЛ»; «ВЫКЛ» |
Количество бит данных | 8 |
Контроль четности | N (no) — нет; O (odd) — нечетный; E (even) - четный |
Количество стоповых бит | 1 |
Именованные константы, представляющие доступные пользователю комбинации параметров конфигурации UART, содержатся в разделе «Конфигурация UART» справочника констант CannyLab, доступ к которому осуществляется через контекстное меню констант на функциональной диаграмме.
Регистр | Возвращаемые значения |
---|---|
Регистр переполнения буфера UARTx | 1 = буфер UART переполнен; 0 = переполнения не зафиксировано. |
Регистр отсутствия активности драйвера UARTx | 1 = активность соответствующего канала драйвера UART отсутствует, линия находится в пассивном режиме; 0 = зафиксирована активность на линии соответствующего канала драйвера UART. |
Регистр ошибки приема UARTx | 1 = во время приема данных UART произошла ошибка; 0 = драйвер работает в нормальном режиме. |
Регистр готовности буфера буфера передачи данных UARTx | 1 = буфер передачи данных драйвера UART свободен; 0 = буфер передачи данных драйвера UART занят, передача данных невозможна. |
Регистр | Возвращаемые значения |
---|---|
Регистр наличия принятых данных UARTx | 1 = сообщение получено и помещено; в буфер приема соответствующего канала драйвера UART; 0 = в буфере приема соответствующего канала драйвера UART отсутствуют актуальные данные. |
Регистр длины принятого сообщения UARTx | 0…32 = значение, равное количеству байт данных, в принятом по соответствующему каналу драйвера UART пакете данных. |
Регистр признака RTU буфера приема данных UARTx | 1 = полученное по соответствующему интерфейсу сообщение UART является корректным сообщением Modbus RTU, контрольная сумма корректна; 0 = полученное по соответствующему интерфейсу сообщение UART не является корректным сообщением Modbus RTU. |
Регистр принятого сообщения UARTx D1:D0 … Регистр принятого сообщения UARTx D31:D30 |
0…0xFFFF = значения соответствующих байт данных приемных буферов UART каждого канала, по два байта на регистр. |
Регистр | Ожидаемые значения |
---|---|
Регистр начала передачи UARTx | ≥ 1 = загрузить данные из регистров передачи в буфер передачи соответствующего канала драйвера UART; 0 = не загружать данные в буфер передачи соответствующего канала драйвера UART. |
Регистр длины сообщения передачи UARTx | 0…32 = количество байт данных, которое будет необходимо передать в линию, при получении команды на отправку соответствующего канала драйвера UART. |
Регистр признака RTU буфера передачи данных UARTx | ≥ 1 = команда драйверу дописать к сообщению в буфере передачи соответствующего интерфейса драйвера UART контрольную сумму в формате Modbus RTU, сформировав для отправки пакет данных в соответствии с протоколом Modbus RTU; 0 = передавать данные буфера передачи соответствующего канала драйвера «как есть». |
Регистр сообщения передачи UART1 D1:D0 … Регистр сообщения передачи UARTx D31:D30 |
0…0xFFFF = значения соответствующих байт данных для передачи по соответствующему каналу драйвера UART, по два байта на регистр. |
При работе в режиме Modbus регистр чтения длины UARTx содержит значение с учетом принятых байт контрольной суммы (CRC), т. е. на 2 байта больше чем длина полезной нагрузки сообщения. При отправке пакета Modbus значение регистра установки длины сообщения UARTx также должно быть увеличено на 2 байта для возможности размещения и пересылки CRC. Т.е. максимальная длина пакета, при обмене сообщениями Modbus, составляет 32 байта, включая CRC (для приема и для передачи).
Работа контроллера в режиме UART
Работая в режиме UART контроллер может осуществлять дуплексный прием/передачу данных.
Пример функциональной диаграммы для обмена данными по UART. Контроллер, получив сообщение длиной 2 байта по интерфейсу UART1, сохраняет их в соответствующей именованной сети для дальнейшей обработки и на следующем цикле выполнения диаграммы отправляет обратно заранее подготовленные 2 байта данных.