CANNY 5.3 MD1A. Драйвер Dallas 1-Wire
Общее описание
Контроллер CANNY 5.3 MD1A может быть использован в качестве ведущего (MASTER) узла в однопроводной сети передачи данных Dallas 1-Wire, при этом он имеет возможность только отправлять запросы на получение данных от ведомых устройств.
Для подключения контроллера CANNY 5.3 MD1A к шине 1-Wire может быть использован любой из каналов ввода-вывода, при этом он должен быть снаружи подтянут к напряжению 5В резистором номиналом от 3 кОм до 7 кОм.
ВНИМАНИЕ! Драйвер Dallas 1-Wire использует для свой работы ресурсы драйвера UART1. Одновременное использование драйверов Dallas 1-Wire и UART1 невозможно.
В контроллерах CANNY 5.3 MD1A предусмотрена возможность обращения к конкретному устройству на шине 1-Wire по его адресу, что позволяет организовать работу контроллера с несколькими ведомыми устройствами по одному каналу.
Драйвер Dallas 1-Wire в своей работе использует ресурсы каналов контроллера, но имеет более высокий приоритет чем драйвера ввода-вывода. Таким образом, при активации драйвера Dallas 1-Wire, для задействованных в его работе каналов, изменение значений в связанных с ними регистрах драйвера ввода-вывода будет проигнорировано контроллером.
Ведомое устройство должно иметь постоянное, а не паразитное питание.
Регистры драйвера 1-Wire
Ниже приведено описание регистров управления работой драйвера 1-Wire.
Регистры конфигурации драйвера 1-Wire.
Для активации драйвера 1-Wire необходимо в регистр конфигурации Dallas установить константу, соответствующую типу устройств 1-Wire, подключенных к данной однопроводной шине и установить номер канала контроллера, подключенного к шине 1-Wire, с которым предполагается начать работу, в соответствующий регистр драйвера.
Примечание: В каждый отдельный момент времени драйвер может работать только с одной из подключенных к нему шин 1-Wire, при этом допускается динамическое переключение между шинами в процессе выполнения функциональной диаграммы.
ВНИМАНИЕ! Используя динамическое переключение между шинами 1-Wire, подключенными к разным каналам контроллера, в процессе выполнения функциональной диаграммы, необходимо деактивировать драйвер (записать в регистр конфигурации Dallas значение 0), указать номер канала контроллера, подключенного к следующей шине 1-Wire и снова активировать драйвер (записать в регистр его конфигурации значение соответствующей константы).
Управление отправкой запросов на получение данных от ведомых устройств и контроль получения их ответов (опросов датчиков) выполняется с помощью соответствующих регистров драйвера 1-Wire.
Примечание: Во избежание потери данных при работе с несколькими устройствами Dallas, выполняйте переключение между ними только после получения от ведомых устройств ответов на запрос контроллера и обработки или сохранения полученных данных.
Регистр | Ожидаемые значения |
---|---|
Регистр конфигурации Dallas | 1…N = активизация драйвера и установка типа подключаемого устройства (задается специальной константой из справочника констант); 0 = отключить канал от драйвера 1-Wire, вернуть управление каналом драйверу каналов ввода-вывода и разрешить изменения его состояния из функциональной диаграммы. |
Регистр номера канала Dallas | 8…10 = установить номер канала контроллера используемого для работы с шиной 1-Wire. |
Регистр | Ожидаемые значения |
---|---|
Тип устройства 1-Wire | Датчик температуры DS18X20, считыватель iButton DS1990A |
Регистры передачи драйвера 1-Wire.
С помощью регистров передачи драйвера 1-Wire пользователь может задать адрес опрашиваемого ведомого устройства и отправить запрос на получение данных.
Регистр | Ожидаемые значения |
---|---|
Регистр начала передачи Dallas | ≥ 1 = отправить ведомому устройству запрос на получение данных; 0 = не отправлять ведомому устройству запрос на получение данных. |
Регистр установки 64-битного ROM-кода адресата передачи Dallas SN0:FC | 0…0xFFFF = значение регистра: младшая часть содержит идентификатор семейства устройства (FC), старшая часть содержит первый байт уникального адреса устройства (SN0). |
Регистр установки 64-битного ROM-кода адресата передачи Dallas SN2:SN1 | 0…0xFFFF = значение регистра: младшая часть содержит второй байт уникального адреса устройства (SN1), старшая часть содержит третий байт уникального адреса устройства (SN2). |
Регистр установки 64-битного ROM-кода адресата передачи Dallas SN4:SN3 | 0…0xFFFF = значение регистра: младшая часть содержит четвертый байт уникального адреса устройства (SN3), старшая часть содержит пятый байт уникального адреса устройства (SN4). |
Регистр установки 64-битного ROM-кода адресата передачи Dallas CRC:SN5 | 0…0xFFFF = значение регистра: младшая часть содержит шестой байт уникального адреса устройства (SN5), старшая часть содержит контрольную сумму ROM-кода адресата (CRC). |
Примечание: Регистры установки 64-битного ROM-кода адресата передачи Dallas используются только для выбора устройства на шине 1-Wire по его уникальному номеру (ROM-коду), в случае подключения к одной шине нескольких устройств. При работе с единственным устройством на шине, в случае если его ROM-код неизвестен, установите значение «0» во все регистры ROM-кода адресата передачи Dallas.
Регистры приема драйвера 1-Wire.
В процессе работы, при получении от ведомых устройств ответов на запросы контроллера, данные, в зависимости от конфигурации драйвера 1-Wire, размещаются в его соответствующие регистры приема.
Регистр | Возвращаемые значения |
---|---|
Регистр наличия принятых данных Dallas | 1 = данные от ведомого устройства успешно получены и доступны в регистрах чтения драйвера Dallas; 0 = в буфере приема драйвера отсутствуют актуальные данные. |
Регистр ошибки приема Dallas | 1 = при приеме данных Dallas произошла ошибка, приняты некорректные данные; 0 = при приеме данных Dallas ошибок не обнаружено. |
Регистр | Возвращаемые значения |
---|---|
Регистр чтения 64-битного ROM-кода устройства Dallas SN0:FC | 0…0xFFFF = значение регистра: младшая часть содержит идентификатор семейства ключа (FC), старшая часть содержит первый байт уникального адреса ключа (SN0). |
Регистр чтения 64-битного ROM-кода устройства Dallas SN2:SN1 | 0…0xFFFF = значение регистра: младшая часть содержит второй байт уникального адреса ключа (SN1), старшая часть содержит третий байт уникального адреса ключа (SN2). |
Регистр чтения 64-битного ROM-кода устройства Dallas SN4:SN3 | 0…0xFFFF = значение регистра: младшая часть содержит четвертый байт уникального адреса ключа (SN3), старшая часть содержит пятый байт уникального адреса ключа (SN4). |
Регистр чтения 64-битного Dallas CRC:SN5 | 0…0xFFFF = значение регистра: младшая часть ROM-кода устройства содержит шестой байт уникального адреса ключа (SN5), старшая часть содержит контрольную сумму ROM-кода ключа (CRC). |
Регистр | Возвращаемые значения |
---|---|
Регистр чтения показаний температуры: целые градусы Цельсия | 0…125 = модуль целой части значения измеренной датчиком температуры. |
Регистр чтения показаний температуры: десятитысячные доли градуса Цельсия | 0…9999 = модуль десятичной части значения измеренной датчиком температуры. |
Регистр чтения показаний температуры: знак (0 = выше нуля ; 1 = ниже нуля) | 0 = измеренная датчиком температура не ниже нуля; 1 = измеренная датчиком температура ниже нуля. |
Примечание: При приеме в режиме DS18X20 период опроса датчика температуры, т. е. отправки ему запросов с помощью регистра начала передачи Dallas, должен быть не менее 750мс.
Примеры
Опрос термодатчика, подключенного к каналу №9 контроллера, осуществляется 1 раз в секунду. При получении данных от DS18X20, в регистре наличия принятых данных драйвера Dallas появляется значение «1» и данные из регистров чтения показаний температуры, с помощью D-триггеров, сохраняются (для возможности дальнейшей обработки), преобразуются в тестовый формат (ASCII) и передаются в CAN.
Опрос термодатчика, подключенного к каналу №9 контроллера, осуществляется 1 раз в секунду. При получении данных от DS18X20, в регистре наличия принятых данных драйвера Dallas появляется значение «1» и данные из регистров чтения показаний температуры, с помощью D-триггеров, сохраняются (для возможности дальнейшей обработки), преобразуются в тестовый формат (ASCII) и передаются в UART2.