Общее описание[править]
Контроллеры 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 / RS-232 необходимо, чтобы контакты GND устройств, совершающих обмен данными, были приведены к единому потенциалу ("общая земля").
|
Драйвер UART / RS232 в своей работе использует ресурсы каналов контроллера, но имеет более высокий приоритет чем драйвер дискретного ввода-вывода. Таким образом, при активации того или иного интерфейса UART / RS232, для задействованных в его работе каналов, изменение значений в связанных с ними регистрах драйвера дискретного ввода-вывода будет проигнорировано контроллером.
Регистры драйвера[править]
Ниже приведено описание допустимых и возвращаемых значений регистров управления работой драйвера.
Регистры конфигурации драйвера 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
|
Режим работы
|
UART
|
Полярность
|
прямая; инверсная
|
Режим открытого коллкетора
|
"ВКЛ"; "ВЫКЛ"
|
Количество бит данных
|
8
|
Контроль четности
|
N (no) — нет; O (odd) — нечетный; E (even) - четный
|
Количество стоповых бит
|
1
|
Именованные константы, представляющие доступные пользователю комбинации параметров конфигурации UART, содержатся в разделе «Конфигурация UART» справочника констант CannyLab, доступ к которому осуществляется через контекстное меню констант на функциональной диаграмме.
Регистры диагностики драйвера UART.
Регистр
|
Возвращаемые значения
|
Регистр переполнения буфера UARTx
|
|
1
|
=
|
буфер UART переполнен;
|
0
|
=
|
переполнения не зафиксировано.
|
|
Регистр отсутствия активности драйвера UARTx
|
|
1
|
=
|
активность соответствующего канала драйвера UART отсутствует, линия находится в пассивном режиме;
|
0
|
=
|
зафиксирована активность на линии соответствующего канала драйвера UART.
|
|
Регистр ошибки приема UARTx
|
|
1
|
=
|
во время приема данных UART произошла ошибка;
|
0
|
=
|
драйвер работает в нормальном режиме.
|
|
Регистр готовности буфера передачи данных UARTx
|
|
1
|
=
|
буфер передачи данных драйвера UART свободен;
|
0
|
=
|
буфер передачи данных драйвера UART занят, передача данных невозможна.
|
|
Регистры приема драйвера UART.
Регистр
|
Возвращаемые значения
|
Регистр наличия принятых данных UARTx
|
|
1
|
=
|
сообщение получено и помещено в буфер приема соответствующего канала драйвера UART;
|
0
|
=
|
в буфере приема соответствующего канала драйвера UART отсутствуют актуальные данные.
|
|
Регистр длины принятого сообщения UARTx
|
|
0...32
|
=
|
значение, равное количеству байт данных, в принятом по соответствующему каналу драйвера UART пакете данных.
|
|
Регистр принятого сообщения UARTx D1:D0
|
...
|
Регистр принятого сообщения UARTx D31:D30
|
|
0...0xFFFF
|
=
|
значения соответствующих байт данных приемных буферов UART каждого канала, по два байта на регистр.
|
|
Регистры передачи драйвера UART.
Регистр
|
Ожидаемые значения
|
Регистр начала передачи UARTx
|
|
≥ 1
|
=
|
загрузить данные из регистров передачи в буфер передачи соответствующего канала драйвера UART;
|
0
|
=
|
не загружать данные в буфер передачи соответствующего канала драйвера UART.
|
|
Регистр длины сообщения передачи UARTx
|
|
0...32
|
=
|
количество байт данных, которое будет необходимо передать в линию, при получении команды на отправку соответствующего канала драйвера UART.
|
|
Регистр сообщения передачи UARTx D1:D0
|
...
|
Регистр сообщения передачи UARTx D31:D30
|
|
0...0xFFFF
|
=
|
значения соответствующих байт данных для передачи по соответствующему каналу драйвера UART, по два байта на регистр.
|
|
Работа контроллера в режиме UART[править]
Работая в режиме UART контроллер может осуществлять дуплексный прием/передачу данных.
Пример функциональной диаграммы для обмена данными по UART. Контроллер, получив сообщение длиной 2 байта по интерфейсу UART1, сохраняет их в соответствующей именованной сети для дальнейшей обработки и на следующем цикле выполнения диаграммы отправляет обратно заранее подготовленные 2 байта данных.
CANNY 5 nano
CANNY 7
CANNY 7, Драйвер LIN