This documentation is out of date.

The new version of the documentation is here: https://cannylogic.com/docs

Difference between revisions of "CANNY 7, UART Driver"

From CANNY Wiki
Jump to: navigation, search
[unchecked revision][unchecked revision]
(Общее описание)
(Регистры драйвера)
Line 23: Line 23:
 
Driver '''[https://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter UART]'''/'''[https://en.wikipedia.org/wiki/RS-232 RS-232]'''/'''[https://en.wikipedia.org/wiki/Modbus Modbus]''' operates using controllers' channels resources, but has a higher priority than a discrete input-output driver. Thus, upon activation of '''[https://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter UART]'''/'''[https://en.wikipedia.org/wiki/RS-232 RS-232]'''/'''[https://en.wikipedia.org/wiki/Modbus Modbus]''' driver, for channels involved in its operation, a value changes in registers associated with discrete input-output driver, will be ignored.
 
Driver '''[https://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter UART]'''/'''[https://en.wikipedia.org/wiki/RS-232 RS-232]'''/'''[https://en.wikipedia.org/wiki/Modbus Modbus]''' operates using controllers' channels resources, but has a higher priority than a discrete input-output driver. Thus, upon activation of '''[https://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter UART]'''/'''[https://en.wikipedia.org/wiki/RS-232 RS-232]'''/'''[https://en.wikipedia.org/wiki/Modbus Modbus]''' driver, for channels involved in its operation, a value changes in registers associated with discrete input-output driver, will be ignored.
  
=== Регистры драйвера ===
+
=== Driver registers ===
  
Ниже приведено описание допустимых и возвращаемых значений регистров управления работой драйвера.
+
The following describes the acceptable and returnable values of the driver control operation registers.
  
Регистры конфигурации драйвера UART / RS-232 / Modbus.
+
UART / RS-232 / Modbus Driver Configuration Registers.
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
|- align="center" valign="top"
 
|- align="center" valign="top"
!width="250px"|Адрес
+
!width="250px"|Address
!Ожидаемые значения
+
!Expected values
 
|- valign="top"
 
|- valign="top"
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр конфигурации UART1
+
|style="padding-left:0.5em;"|UART1 Mode Setup Register
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр конфигурации UART2
+
|style="padding-left:0.5em;"|UART2 Mode Setup Register
 
|}
 
|}
 
|valign="top"|
 
|valign="top"|
Line 45: Line 45:
 
|width="70px" style="padding-left:0.5em;"|1...65535
 
|width="70px" style="padding-left:0.5em;"|1...65535
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|установить конфигурацию канала драйвера UART контроллера, определяющую текущий режим и параметры его работы (задается специальной константой из справочника констант);
+
|style="padding-left:0.5em;"|set controller channel configuration, which determines current operation mode and parameters (given the special constant from the constants directory);
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|отключить канал от драйвера UART, вернуть управление каналом драйверу каналов ввода-вывода и разрешить изменения его состояния из функциональной диаграммы.
+
|style="padding-left:0.5em;"|disable the channel from UART driver, return channel control to IO channels driver and allow status changing from the functional diagram.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 55: Line 55:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр установки таймаута приема сообщения UART1, бит
+
|style="padding-left:0.5em;"|UART1 Receive Timeout Setup Register, bits
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр установки таймаута приема сообщения UART2, бит
+
|style="padding-left:0.5em;"|UART2 Receive Timeout Setup Register, bits
 
|}
 
|}
 
|
 
|
Line 64: Line 64:
 
|width="70px" style="padding-left:0.5em;"|1...65535
 
|width="70px" style="padding-left:0.5em;"|1...65535
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|прекращение приема данных, если в течении времени, за которое может быть принято указанное число бит данных, на линии не было зафиксировано ни одного изменения потенциала и линия находится в пассивном состоянии;
+
|style="padding-left:0.5em;"|stop data reception, if during the time for which a specified number of data bits can be recd, line was not recorded any potential change and the line is in the passive state.;
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|использовать значение по умолчанию, задаваемое в конфигурации канала (13).
+
|style="padding-left:0.5em;"|use the default value defined in channel (13) configuration.
 
|}
 
|}
 
|}
 
|}
  
Конфигурация драйвера UART определяется константой, представляющей комбинацию параметров, определяющих скорость, режим, дополнительные параметры передачи данных и потенциал линии в пассивном режиме.
+
UART driver configuration is determined by the constants that represent the combination of parameters that determine the speed, mode, additional date transmission parameters and line potential in the passive mode.
  
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
|- align="center" valign="top"
 
|- align="center" valign="top"
!width="250px"|Параметр
+
!width="250px"|Parameter
!Перечень допустимых значений
+
!Acceptable values
 
|- valign="top"
 
|- valign="top"
|Скорость передачи данных, бод
+
|The data rate, bps
 
|110; 150; 300; 600; 1200; 1800; 2400; 4800; 9600; 19200; 38400; 57600
 
|110; 150; 300; 600; 1200; 1800; 2400; 4800; 9600; 19200; 38400; 57600
 
|- valign="top"
 
|- valign="top"
|Режим работы
+
|Mode
 
|UART; RS-232
 
|UART; RS-232
 
|- valign="top"
 
|- valign="top"
|Подтяжка в режиме UART
+
|Pull-up in UART mode
|плюс; воздух
+
|plus; air
 
|- valign="top"
 
|- valign="top"
|Направление передачи в режиме RS-232
+
|The transfer direction in RS-232 mode
|прием; передача
+
|receive; transmit
 
|- valign="top"
 
|- valign="top"
|Количество бит данных
+
|Data bits
 
|8; 9
 
|8; 9
 
|- valign="top"
 
|- valign="top"
|Контроль четности
+
|parity
|N (no) — нет; O (odd) — нечетный; E (even) - четный
+
|N (no) ; O (odd) ; E (even)
 
|- valign="top"
 
|- valign="top"
|Количество стоповых бит
+
|Number of stop bits
 
|1; 2
 
|1; 2
 
|}
 
|}
  
Именованные константы, представляющие доступные пользователю комбинации параметров конфигурации UART, содержатся в разделе «Конфигурация UART / RS-232» справочника констант CannyLab, доступ к которому осуществляется через контекстное меню констант на функциональной диаграмме.
+
Named constants that represent UART configuration parameters combination, available to the user in the "UART / RS-232 Configuration" CannyLab constants directory, which can be accessed via function block entry context menu having "constant" type.
  
Регистры диагностики драйвера UART / RS-232 / Modbus.
+
UART / RS-232 / Modbus driver diagnostic registers.
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
|- align="center" valign="top"
 
|- align="center" valign="top"
!width="250px"|Адрес
+
!width="250px"|Address
!Возвращаемые значения
+
!Return values
 
|- valign="top"
 
|- valign="top"
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр переполнения буфера UART1
+
|style="padding-left:0.5em;"|UART1 Overflow Register
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр переполнения буфера UART2
+
|style="padding-left:0.5em;"|UART2 Overflow Register
 
|}
 
|}
 
|valign="top"|
 
|valign="top"|
Line 121: Line 121:
 
|width="70px" style="padding-left:0.5em;"|1
 
|width="70px" style="padding-left:0.5em;"|1
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|буфер UART переполнен;
+
|style="padding-left:0.5em;"|UART buffer is full;
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|переполнения не зафиксировано.
+
|style="padding-left:0.5em;"|Overflow is not fixed.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 131: Line 131:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр ошибки приема UART1
+
|style="padding-left:0.5em;"|UART1 Receive Error Register
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр ошибки приема UART2
+
|style="padding-left:0.5em;"|UART2 Receive Error Register
 
|}
 
|}
 
|
 
|
Line 140: Line 140:
 
|width="70px" style="padding-left:0.5em;"|1
 
|width="70px" style="padding-left:0.5em;"|1
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|во время приема данных UART произошла ошибка;
+
|style="padding-left:0.5em;"|during UART data reception an error occurred;
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|драйвер работает в нормальном режиме.
+
|style="padding-left:0.5em;"|the driver is operating normally.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 150: Line 150:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр готовности буфера передачи данных UART1
+
|style="padding-left:0.5em;"|UART1 Ready To Send Register
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр готовности буфера передачи данных UART2
+
|style="padding-left:0.5em;"|UART2 Ready To Send Register
 
|}
 
|}
 
|
 
|
Line 159: Line 159:
 
|width="70px" style="padding-left:0.5em;"|1
 
|width="70px" style="padding-left:0.5em;"|1
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|буфер передачи данных драйвера UART свободен;
+
|style="padding-left:0.5em;"|UART driver data transmit buffer is free;
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|буфер передачи данных драйвера UART занят, передача данных невозможна.
+
|style="padding-left:0.5em;"|UART driver data transmit buffer is busy, data transmission not possible.
 
|}
 
|}
 
|}
 
|}
  
Регистры приема драйвера UART / RS-232 / Modbus.
+
UART / RS-232 / Modbus driver receive registers.
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
|- align="center" valign="top"
 
|- align="center" valign="top"
Line 176: Line 176:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр наличия принятых данных UART1
+
|style="padding-left:0.5em;"|UART1 Data Set Ready Register
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр наличия принятых данных UART2
+
|style="padding-left:0.5em;"|UART2 Data Set Ready Register
 
|}
 
|}
 
|valign="top"|
 
|valign="top"|
Line 185: Line 185:
 
|width="70px" style="padding-left:0.5em;"|1
 
|width="70px" style="padding-left:0.5em;"|1
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|сообщение получено и помещено в буфер приема соответствующего канала драйвера UART;
+
|style="padding-left:0.5em;"|the message is received and placed into corresponding channel receive buffer of the UART driver;
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|в буфере приема соответствующего канала драйвера UART отсутствуют актуальные данные.
+
|style="padding-left:0.5em;"|in the receive buffer of the corresponding channel UART driver no actual data present.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 195: Line 195:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр признака RTU буфера приема данных UART1
+
|style="padding-left:0.5em;"|UART1 RTU Received Register
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр признака RTU буфера приема данных UART2
+
|style="padding-left:0.5em;"|UART2 RTU Received Register
 
|}
 
|}
 
|
 
|
Line 204: Line 204:
 
|width="70px" style="padding-left:0.5em;"|1
 
|width="70px" style="padding-left:0.5em;"|1
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|полученное по соответствующему каналу сообщение UART является корректным сообщением Modbus RTU, контрольная сумма корректна;
+
|style="padding-left:0.5em;"|received a message on the appropriate channel UART is correct Modbus RTU message, the checksum is correct;
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|полученное по соответствующему каналу сообщение UART не является корректным сообщением Modbus RTU.
+
|style="padding-left:0.5em;"|received a message on the appropriate channel UART is incorrect Modbus RTU message.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 214: Line 214:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр отсутствия активности драйвера UART1
+
|style="padding-left:0.5em;"|UART1 Idle Register
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр отсутствия активности драйвера UART2
+
|style="padding-left:0.5em;"|UART2 Idle Register
 
|}
 
|}
 
|
 
|
Line 223: Line 223:
 
|width="70px" style="padding-left:0.5em;"|1
 
|width="70px" style="padding-left:0.5em;"|1
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|активность соответствующего канала драйвера UART отсутствует, линия находится в пассивном режиме;
+
|style="padding-left:0.5em;"|no activity on the corresponding channel UART drivers, the line is in a passive mode;
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|зафиксирована активность на линии соответствующего канала драйвера UART.
+
|style="padding-left:0.5em;"|fixed activity on the line of corresponding channel UART driver.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 233: Line 233:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр длины принятого сообщения UART1
+
|style="padding-left:0.5em;"|UART1 Received Data Length Register
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр длины принятого сообщения UART2
+
|style="padding-left:0.5em;"|UART2 Received Data Length Register
 
|}
 
|}
 
|
 
|
Line 242: Line 242:
 
|width="70px" style="padding-left:0.5em;"|0...16
 
|width="70px" style="padding-left:0.5em;"|0...16
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|значение, равное количеству байт данных, в принятом по соответствующему каналу драйвера UART пакете данных.
+
|style="padding-left:0.5em;"|value equal to the number of data bytes in the received via respective channel UART driver data packet.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 248: Line 248:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр принятого сообщения UART1 b1:b0
+
|style="padding-left:0.5em;"|UART1 Received Data Register b1:b0
 
|- valign="top"
 
|- valign="top"
 
|style="padding-left:0.5em;"|...
 
|style="padding-left:0.5em;"|...
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр принятого сообщения UART1 b15:b14
+
|style="padding-left:0.5em;"|UART1 Received Data Register b15:b14
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр принятого сообщения UART2 b1:b0
+
|style="padding-left:0.5em;"|UART2 Received Data Register b1:b0
 
|- valign="top"
 
|- valign="top"
 
|style="padding-left:0.5em;"|...
 
|style="padding-left:0.5em;"|...
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр принятого сообщения UART2 b15:b14
+
|style="padding-left:0.5em;"|UART2 Received Data Register b15:b14
 
|}
 
|}
 
|
 
|
Line 265: Line 265:
 
|width="70px" style="padding-left:0.5em;"|0...65535
 
|width="70px" style="padding-left:0.5em;"|0...65535
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|значения соответствующих байт данных приемных буферов UART каждого канала, по два байта на регистр.
+
|style="padding-left:0.5em;"|values of UART receive buffers respective data bytes of each channel, by two bytes to the register.
 
|}
 
|}
 
|}
 
|}

Revision as of 06:36, 7 January 2016

General description

Two of eleven IO channels (#9 and #10) CANNY 7 supports UART, RS-232 serial protocols data transmission/reception. It may be used to connect the controllers with each other or with external equipment supporting this communications protocols. The channels may be activated independently of each other and have individual data speed setting, protocol type and configuration, pull up line.

UART implementation in CANNY 7 controllers allows to organize serial data reception and transmission over a single wire in half-duplex mode. Thus CANNY7 may have two independent connections using the UART protocol. Monitoring of the data link status should be done from the functional diagram. If the channel is free, the device may start data transmitting , otherwise the device should wait for the line release.

RS-232 implementation by using both UART data channels , allows to exchange data with other RS-232 device in a duplex mode, i.e. one channel to perform data sending and on the other to simultaneously receive data.

Modbus protocol in CANNY7 controllers implemented as over UART as over RS-232. As ADU (Application Data Unit) used compact binary option Modbus RTU. Checking the data integrity carried out by automatically calculated checksum (CRC). Package size is limited to 16 bytes including the CRC.

Note: For correct operation of all protocols based on the UART / RS-232 requires that all GND terminals of the devices committing communication, were given to a single potential ("common ground").
Note: In UART implementation-active line is the potential GND 100mA, passive - positive potential of a given internal or external channel pull-up. In implementing RS-232 - the potentials inverse.

Driver UART/RS-232/Modbus operates using controllers' channels resources, but has a higher priority than a discrete input-output driver. Thus, upon activation of UART/RS-232/Modbus driver, for channels involved in its operation, a value changes in registers associated with discrete input-output driver, will be ignored.

Driver registers

The following describes the acceptable and returnable values of the driver control operation registers.

UART / RS-232 / Modbus Driver Configuration Registers.

Address Expected values
UART1 Mode Setup Register
UART2 Mode Setup Register
1...65535 = set controller channel configuration, which determines current operation mode and parameters (given the special constant from the constants directory);
0 = disable the channel from UART driver, return channel control to IO channels driver and allow status changing from the functional diagram.
UART1 Receive Timeout Setup Register, bits
UART2 Receive Timeout Setup Register, bits
1...65535 = stop data reception, if during the time for which a specified number of data bits can be recd, line was not recorded any potential change and the line is in the passive state.;
0 = use the default value defined in channel (13) configuration.

UART driver configuration is determined by the constants that represent the combination of parameters that determine the speed, mode, additional date transmission parameters and line potential in the passive mode.

Parameter Acceptable values
The data rate, bps 110; 150; 300; 600; 1200; 1800; 2400; 4800; 9600; 19200; 38400; 57600
Mode UART; RS-232
Pull-up in UART mode plus; air
The transfer direction in RS-232 mode receive; transmit
Data bits 8; 9
parity N (no) ; O (odd) ; E (even)
Number of stop bits 1; 2

Named constants that represent UART configuration parameters combination, available to the user in the "UART / RS-232 Configuration" CannyLab constants directory, which can be accessed via function block entry context menu having "constant" type.

UART / RS-232 / Modbus driver diagnostic registers.

Address Return values
UART1 Overflow Register
UART2 Overflow Register
1 = UART buffer is full;
0 = Overflow is not fixed.
UART1 Receive Error Register
UART2 Receive Error Register
1 = during UART data reception an error occurred;
0 = the driver is operating normally.
UART1 Ready To Send Register
UART2 Ready To Send Register
1 = UART driver data transmit buffer is free;
0 = UART driver data transmit buffer is busy, data transmission not possible.

UART / RS-232 / Modbus driver receive registers.

Адрес Возвращаемые значения
UART1 Data Set Ready Register
UART2 Data Set Ready Register
1 = the message is received and placed into corresponding channel receive buffer of the UART driver;
0 = in the receive buffer of the corresponding channel UART driver no actual data present.
UART1 RTU Received Register
UART2 RTU Received Register
1 = received a message on the appropriate channel UART is correct Modbus RTU message, the checksum is correct;
0 = received a message on the appropriate channel UART is incorrect Modbus RTU message.
UART1 Idle Register
UART2 Idle Register
1 = no activity on the corresponding channel UART drivers, the line is in a passive mode;
0 = fixed activity on the line of corresponding channel UART driver.
UART1 Received Data Length Register
UART2 Received Data Length Register
0...16 = value equal to the number of data bytes in the received via respective channel UART driver data packet.
UART1 Received Data Register b1:b0
...
UART1 Received Data Register b15:b14
UART2 Received Data Register b1:b0
...
UART2 Received Data Register b15:b14
0...65535 = values of UART receive buffers respective data bytes of each channel, by two bytes to the register.

Регистры передачи драйвера UART / RS-232 / Modbus.

Адрес Ожидаемые значения
Регистр начала передачи UART1
Регистр начала передачи UART2
1 = загрузить данные из регистров передачи в буфер передачи соответствующего канала драйвера UART;
0 = не загружать данные в буфер передачи соответствующего канала драйвера UART.
Регистр признака RTU буфера передачи данных UART1
Регистр признака RTU буфера передачи данных UART2
1 = команда драйверу дописать к сообщению в буфере передачи соответствующего канала драйвера UART контрольную сумму в формате Modbus RTU, сформировав для отправки пакет данных в соответствии с протоколом Modbus RTU;
0 = передавать данные буфера передачи соответствующего канала драйвера «как есть».
Регистр длины сообщения передачи UART1
Регистр длины сообщения передачи UART2
0...16 = количество байт данных, которое будет необходимо передать в линию, при получении команды на отправку соответствующего канала драйвера UART.
Регистр сообщения передачи UART1 b1:b0
...
Регистр сообщения передачи UART1 b15:b14
Регистр сообщения передачи UART2 b1:b0
...
Регистр сообщения передачи UART2 b15:b14
0...65535 = значения соответствующих байт данных для передачи по соответствующему каналу драйвера UART, по два байта на регистр.


Работа контроллера в режиме UART

Работая в режиме UART контроллер может осуществлять полудуплексный прием/передачу данных по одному проводу.

Пример функциональной диаграммы для получения данных по UART.

6 8 3 1.png

Пример функциональной диаграммы для передачи данных по UART.

6 8 3 2.png


Примечание: Особое внимание следует обратить на то, что для избежания коллизий, при отправке данных, необходимо строго контролировать регистр готовности буфера передачи данных канала UART: если буфер не готов, значит в данный момент драйвером выполняется прием данных — отправка данных должна быть отложена.

Работа контроллера в режиме RS-232

Работая по протоколу RS-232 контроллер может использовать каждый их своих каналов передачи данных только в симплексном (однонаправленном) режиме. При использовании сразу обоих каналов UART, которые работают независимо друг от друга, возможно организовать дуплексный режим обмена информацией по двум проводам: один канал — только прием, второй — только передача.

Пример функциональной диаграммы для работы с RS-232. Получая данные по каналу UART2, при условии, что значение полученных байтов b1:b0 равно «0хAAAA», контроллер отправляет, по каналу UART1, 2 байта данных, содержащих значение «0xBBBB».

6 8 4 1.png

Реализация Modbus RTU

Драйвер UART/RS-232 включает в себя функционал автоматического формирования и проверки контрольной суммы по стандарту Modbus RTU, что упрощает включение контроллера в сеть работающую по данному протоколу. Управлять формированием контрольной суммы передаваемых сообщений и её проверкой при приёме можно через соответствующие регистры драйвера.

Примечание: При работе в режиме Modbus регистр чтения длины UARTx содержит значение с учетом принятых байт контрольной суммы (CRC), т. е. на 2 байта больше чем длина полезной нагрузки сообщения. При отправке пакета Modbus значение регистра установки длины сообщения UARTx также должно быть увеличено на 2 байта для возможности размещения и пересылки CRC.

Пример функциональной диаграммы работы контроллера в режиме MASTER-узла Modbus поверх RS-232. Выполняя диаграмму, контроллер периодически отправляет SLAVE-узлу с адресом 0х20 запрос на получение от него значения из Modbus-регистра данных с адресом 0х0001. Получение ответа на свой запрос MASTER сопровождает коротким включением своего зеленого светодиода.

6 8 5 1.png

Строка запроса, при обмене данными между устройствами, будет выглядеть так: -> 20 03 00 01 00 01 D3 7B

Адрес опрашиваемого устройства: 0x20 (байт b0 регистра приема сообщения UART2 b1:b0).

Функция: 0x03 - чтение значений из нескольких регистров хранения (байт b1 регистра приема сообщения UART2 b1:b0).

Номер первого запрашиваемого регистра: 0x0001 (байты b2 и b3 регистра приема сообщения UART2 b3:b2).

Число запрашиваемых регистров: 0x0001 (байты b4 и b5 регистра приема сообщения UART2 b5:b4).

Контрольная сумма: 0xD37B (байты b6 и b7 регистра приема сообщения UART2 b7:b6 — добавляются драйвером автоматически).


Пример функциональной диаграммы работы контроллера в качестве SLAVE-узла Modbus поверх RS-232. Получая от MASTERа запрос на передачу данных, контроллер в ответ передает состояние запрошенного регистра. Контроллер передает 2 байта данных (+2 байта CRC), т.к. регистры Modbus имеют разрядность 16 бит.

6 8 5 2.png

Строка ответа, при обмене данными между устройствами, будет выглядеть так:

<- 20 03 02 00 10 C6 A0

Адрес отвечающего устройства: 0x20 (байт b0 регистра сообщения передачи UART1 b1:b0).

Функция: 0x03 - результат чтения значений из нескольких регистров хранения (байт b1 регистра сообщения передачи UART1 b1:b0).

Число возвращаемых байт: 0x02 (байт b2 регистра сообщения передачи UART1 b3:b2).

Значение старшего байта запрашиваемого регистра: 0x00 (байт b3 регистра сообщения передачи UART1 b3:b2).

Значение младшего байта запрашиваемого регистра: 0x10 (байт b4 регистра сообщения передачи UART1 b5:b4).

Контрольная сумма: 0xC6A0 (байт b5 регистра приема сообщения UART1 b5:b4 и байт b6 регистра приема сообщения UART1 b7:b6 соответственно — добавляются драйвером автоматически).

Смотри также

CANNY 7

CANNY 7, LIN Driver