CANNY 7.2 Duo. Драйвер пульта ИК ДУ
Общее описание
Контроллер CANNY 7.2 Duo позволяет принимать и передавать команды инфракрасных пультов дистанционного управления (ИК ДУ) в широко распространенных форматах NEC, extended NEC, Samsung и Sony. Работа драйвера возможна в трех режимах: только прием, только передача или прием/передача, в том числе в разных форматах. Для приема и передачи используются два любых канала контроллера.
При передаче команд ИК ДУ, используемый для этого канал контроллера CANNY 7.2 Duo выдает только модулирующий сигнал. Для формирования пакетов импульсов контроллеру требуется наличие несущей частоты, источником которой может выступать как один из каналов ВЧ ШИМ CANNY 7.2 Duo, так и внешний генератор ШИМ.
Прием команд ИК ДУ требует наличия внешнего демодулятора, например TSOP1736 или аналогичного.
Драйвер пульта ИК ДУ в своей работе использует ресурсы Драйвера каналов ввода-вывода контроллера, но имеет более высокий приоритет чем драйвера ввода-вывода. Таким образом, при активации драйвера пульта ИК ДУ, для задействованных в его работе каналов, изменение значений в связанных с ними регистрах драйвера ввода-вывода будет проигнорировано контроллером.
Регистры драйвера пульта ИК ДУ
Для работы контроллера CANNY 7.2 Duo с приемниками и передатчиками ИК-сигналов может использоваться любой из его каналов ввода-вывода, при этом тот или иной канал контроллера, в каждый отдельный момент, может работать либо только на прием, либо только на передачу. Драйвер пульта ИК ДУ предусматривает возможность организации одновременного приема и передачи данных по двум независимым каналам. Кроме того, возможно подключение к CANNY 7.2 Duo нескольких приемников/передатчиков ИК-сигналов.
Регистр | Ожидаемые значения |
---|---|
Регистр конфигурации ИК-порта | 1…N = установить конфигурацию драйвера пульта ИК ДУ контроллера, определяющую текущий режим и параметры его работы (задается специальной константой из справочника констант); 0 = отключить драйвер пульта ИК ДУ, вернуть управление каналом драйверу каналов ввода-вывода и разрешить изменения его состояния из функциональной диаграммы. |
Регистр номера канала приема ИК-порта | 0…8 = установить номер канала контроллера, используемый драйвером пульта ИК ДУ для приема данных. |
Регистр номера канала передачи ИК-порта | 0…8 = установить номер канала контроллера, используемый драйвером пульта ИК ДУ для передачи данных. |
Примечание: В конфигурации «Прием и передача» для приема и передачи данных должны быть назначены отдельные каналы контроллера.
Конфигурация драйвера задается именованными константами, представляющими комбинацию параметров, определяющих тип сигнала, определяющим электрические потенциалы исходного состояния канала и состояния канала при передаче данных, наличие и потенциал внутренней «подтяжки» канала контроллера.
Параметр | Перечень допустимых значений |
---|---|
Стандарт | NEC, Samsung, Sony |
Направление потока данных | Прием, передача, прием и передача |
Тип сигнала | Прямой («1»: плюс, «0»: минус), инверсный («1»: минус, «0»: плюс) |
Внутренняя подтяжка | Без подтяжки, подтяжка плюс, подтяжка минус |
Примечание: Поддерживаются режимы использования двух разных стандартов ИК пультов ДУ на прием и передачу. Возможна работа драйвера ИК ДУ в следующих комбинациях приема-передачи: NEC-NEC, NEC-Samsung, Samsung-Samsung, Samsung-NEC, Sony-Sony.
Регистр | Возвращаемые значения |
---|---|
Регистр отсутствия активности драйвера ИК | 1 = активность драйвера ИК ДУ на соответствующем канале отсутствует; 0 = зафиксирована активность драйвера ИК ДУ на соответствующем канале. |
Регистр переполнения буфера драйвера ИК | 1 = буфер соответствующего канала драйвера пульта ИК ДУ переполнен; 0 = переполнения соответствующего канала драйвера пульта ИК ДУ не зафиксировано. |
Регистр готовности буфера передачи ИК | 1 = буфер передачи данных драйвера пульта ИК ДУ свободен и готов к работе; 0 = буфер передачи данных драйвера пульта ИК ДУ занят. |
Регистр | Возвращаемые значения |
---|---|
Регистр наличия принятых данных ИК | ≥ 1 = сообщение успешно получено и доступно в регистрах буфера приема драйвера пульта ИК ДУ; 0 = в буфере приема драйвера пульта ИК ДУ отсутствуют актуальные данные. |
Регистр принятого сообщения ИК D1:D0 Регистр принятого сообщения ИК D3:D2 |
0…0xFFFF = значения соответствующих байт данных приемного буфера драйвера пульта ИК ДУ, по два байта на регистр. |
Регистр | Ожидаемые значения |
---|---|
Регистр начала передачи ИК | ≥ 1 = загрузить данные из регистров передачи в буфер передачи драйвера пульта ИК ДУ; 0 = не загружать данные в буфер ДУ передачи драйвера пульта ИК ДУ. |
Регистр сообщения передачи ИК D1:D0 Регистр сообщения передачи ИК D3:D2 |
0…0xFFFF = значения передаваемых байт сообщения драйвера пульта ИК ДУ по два байта на регистр. |
Специальная команда стандарта NEC – «повтор команды», кодируется значениями D1:D0 = 0xFFFF и D3:D2 = 0xFFFF как при приеме так и при передаче.
Примечание: При отправке ИК-сообщений, каждая последующая команда должна передаваться только после освобождения буфера передачи, т. е. при наличии в регистре готовности буфера передачи ИК-сообщения значения «1». Команда повтора предыдущей команды должна отправляться сразу после отправки основной команды, не дожидаясь освобождения буфера передачи, при этом отправка должна выполняться непрерывно, как можно чаще, все время, пока требуется передача подтверждения.
Особенность стандарта ИК ДУ Sony
Существуют три версии данного протокола использующие соответственно 12, 15 и 20 информационных бит. 12-битный протокол состоит из 5 бит адреса и 7 бит команды. В 15-битном протоколе - 8 бит адреса и 7 бит команды. 20-битный протокол похож на 12-битный, но в нем дополнительно содержится 8 бит расширения. Несущая частота Sony ИК ДУ - 40кГц.
При работе на прием ИК ДУ стандарта Sony, в регистре принятого сообщения ИК D1:D0 содержатся биты адреса и команды, полученные от внешнего пульта управления: начиная с байта D0 сначала следует команда, потом адрес. В регистре принятого сообщения ИК D3:D2, при 20-битном протоколе, в байте D2 содержатся старшие 4 бита расширения, в остальных случаях D2 равен 0, а в байте D3, содержится количество принятых бит, что позволяет определить используемый при передаче протокол Sony.
При работе на передачу, в регистр сообщения передачи ИК D1:D0 необходимо записать значение команды и адреса, в байт D2 регистра сообщения передачи ИК D3:D2 - значение 0, либо старшие 4 бита расширения (при 20-битном протоколе), а в байт D3 - количество передаваемых бит (12 = 0x0C, 15 = 0x0F, 20 = 0x14).
Примеры
Пример функциональной диаграммы приема контроллером команд от внешнего ИК-пульта ДУ.
Контроллер ожидает получения сообщения, содержащего номер адреса 0х00 и команду с кодом 0х01. Проверка полученных от пульта ИК ДУ команд на соответствие ожидаемым выполняется путем их сравнения с константами, содержащими в младшем байте требуемое значение, а в старшем — его инверсную версию.
Пример функциональной диаграммы эмуляции контроллером CANNY 7.2 Duo ИК-пульта ДУ, т.е. передачи ИК-команд управляемому устройству.
При появлении на входе канала №8 значения «1» (нажатия управляющей кнопки), контроллер отправляет ИК-сообщение внешнему устройству. В сообщении содержится адрес 0хAB и команда 0хCD. При длительном сохранении значения «1» на входе канала №8 (удержании кнопки) контроллер отправляет сообщение стандарта NEC «повтор команды». Специальная команда стандарта NEC – «повтор команды», кодируется значениями D1:D0 = 0xFFFF и D3:D2 = 0xFFFF как при приеме так и при передаче.
Примечание: В примере отправки ИК-сообщения также реализовано использование CANNY 7.2 Duo для формирования несущего высокочастотного сигнала установленного стандартом NEC, с помощью канала №1 контроллера работающего в режиме ВЧ ШИМ с периодом 26мкс и заполнением 9мкс.
Пример функциональной диаграммы приема контроллером команд от внешнего ИК-пульта ДУ Sony c 12-битным протоколом.
Контроллер ожидает получения сообщения, содержащего номер адреса 17 (CD-плеер) и команду с кодом 18 (увеличить громкость звука). Проверка полученных от пульта ИК ДУ команд на соответствие ожидаемым выполняется путем их сравнения с константами, также проверяется соответствие принятого сообщения 12-битному протоколу, т.е. что длина принятого сообщения равна 12 бит.
Пример функциональной диаграммы передачи контроллером команд ИК-пульта ДУ Sony c 12-битным протоколом.
По появлении на канале 8 отрицательного потенциала, контроллер однократно отправляет устройству с адресом 17 (CD-плеер) команду с кодом 18 (увеличить громкость звука). Отправка команды выполняется в соответствии с 12-битным протоколом Sony, т.е. в одном сообщении передается 12 бит данных.