www.promwad.ru Тел. +7 (495) 642–82–43. Email: [email protected] www.promwad.com Тел. +375 (17) 312–12–46. Email: [email protected] Promwad l Electronics Design © 2014 1
6 мая в 16:11
Знакомство с программированием DECT-модуля SC14CVMDECT
Беспроводные технологии*, Телефония*, Программирование*
Блог компании: habr.ru/users/Promwad/
www.promwad.ru Тел. +7 (495) 642–82–43. Email: [email protected] www.promwad.com Тел. +375 (17) 312–12–46. Email: [email protected] Promwad l Electronics Design © 2014 2
В данной статье мы познакомимся с программированием DECT модуля SC14CVMDECT,
обязательно помигаем светодиодом, а также поделимся опытом разработки решения для
SIP-телефонии на базе этого модуля.
Что такое DECT
DECT (Digital Enhanced Cordless Telephone) – технология беспроводной передачи данных
на частотах 1,9 ГГц. Применяется в основном для передачи звука в телефонии.
Существует очень много терминов, связанных с DECT, многие из которых чисто
маркетинговые и их наличие в спецификации телефонного аппарата не гарантирует
совместимость трубок или базовых станций.
Вот краткий их перечень:
DECT – общий термин, каждый производитель делает свои модификации на базе
DECT-технологии.
DECT GAP (General Access Profile) – попытка стандартизации функций и процедур
DECT-телефонов.
DECT EU, US – работа DECT в разных частотных диапазонах, и с разными уровнями
мощности.
CAT-iq (Cordless Advanced Technology, Internet and Quality) – спецификации
поддерживаемых функций. CAT-iq v1 регламентирует в основном передачу звука,
CAT-iq v2 – возможность хранения и синхронизации текстовых данных (адресной
книги, например), CAT-iq v3 – передача бинарных данных, удалённое обновление
прошивки, передача HTTP-контента.
FP (Fixed Part) – базовая станция, регистрирующая трубки. PP (Portable Part) – переносная телефонная трубка.
Простейшие примеры использования DECT
Передача звука Точка-Точка (он же режим Walkie-talkie) – можно использовать для
общения двух абонентов без посредников.
Передача FP – PP – с трубки можно позвонить на обычную телефонную линию или
на SIP-сервер, используя базовую станцию для подключения к ним.
Передача FP — несколько PP – аналогично предыдущему примеру, к тому же
возможно совершать вызовы Трубка-Трубка (но только через FP), устраивать конференции, совершать несколько параллельных вызовов.
Сравнение с Wi-Fi, Bluetooth
Кроме беспроводных телефонов DECT, сейчас набирают популярность телефоны Wi-Fi – они проще
интегрируются в инфраструктуру организации, поскольку в качестве базовой станции используется
обычный Wi-Fi-роутер. К тому же некоторые Wi-Fi-телефоны имеют выход Ethernet – т.е. можно
подключать стационарные ПК, в которых нет сетевого адаптера Wi-Fi.
В DECT же есть одно неоспоримое преимущество – работа на отдельном диапазоне частот. А с
Блог компании: habr.ru/users/Promwad/
www.promwad.ru Тел. +7 (495) 642–82–43. Email: [email protected] www.promwad.com Тел. +375 (17) 312–12–46. Email: [email protected] Promwad l Electronics Design © 2014 3
учётом, что Wi-Fi-устройств становится всё больше и больше, это главный плюс.
Из дополнительных плюсов DECT по сравнению с Wi-Fi – качественная передача речи, без задержек и
разрывов. В Wi-Fi качество тоже может быть хорошим, но только если Wi-Fi-телефон используется как
телефон и вокруг не так много радиопомех. Если же он совмещает функции телефона и точки
подключения ПК, то нужно настраивать QoS (quality of service) для приоритезации звонков, а это не
всегда доступно и не всегда удобно.
Если сравнивать DECT с Bluetooth, то тут однозначно лучше DECT. У DECT радиус действия больше.
Bluetooth работает на частоте 2,4 ГГц, как и Wi-Fi, т.е. более подвержен помехам, и, как следствие,
качество передачи речи хуже.
В итоге, остаётся выбор DECT vs Wi-Fi, и однозначного решения, что лучше, нет.
Описание кита SC14CVMDECT_AF
Более подробная информация: http://www.dialog-semiconductor.com/products/short-range-
wireless/cordless-voice-module-(cvm)
Общий вид кита:
Блог компании: habr.ru/users/Promwad/
www.promwad.ru Тел. +7 (495) 642–82–43. Email: [email protected] www.promwad.com Тел. +375 (17) 312–12–46. Email: [email protected] Promwad l Electronics Design © 2014 4
Возможности чипа:
DECT ULE (Ultra Low Energy) – поддержка ультранизкого потребления энергии
Поддержка протоколов CAT-iq 1.0, 2.0, 3.0
Регистрация до 6 трубок к одной базовой станции Работа в частотных диапазонах:
1. 1880 – 1900 МГц – Европа
2. 1920 – 1930 МГц – США и Канада
3. 1893,5 – 1906,1 МГц – Япония
Напряжение питания: 2,1 – 3,45 В Потребление тока:
1. Режим готовности – 4,5 мА 2. Разговор – 30 мА
Встроенная антенна. Есть возможность подключения внешней антенны
Управляющий интерфейс – UART
Передача звука:
1. Возможность подключения микрофона и наушников 2. PCM шина – до 4-х каналов одновременно
324 Кбайт доступной flash-памяти для хранения пользовательской программы
Блог компании: habr.ru/users/Promwad/
www.promwad.ru Тел. +7 (495) 642–82–43. Email: [email protected] www.promwad.com Тел. +375 (17) 312–12–46. Email: [email protected] Promwad l Electronics Design © 2014 5
0,4 Кбайт EEPROM для хранения данных пользовательской программы
Общая схема подключения внешних устройств:
На рисунке приведена схема типовой DECT-трубки на базе микроконтроллера и
SC14CVMDECT модуля. Микроконтроллер отвечает за управление ЖКИ-экраном и опрос
нажатых кнопок; функции определения уровня заряда батареи, приём и передача звука отведены для DECT-модуля.
Возможные варианты разработки приложений
Разрабатывать своё приложение, взаимодействующее с DECT-модулем, можно двумя
способами:
1. На отдельном устройстве (микроконтроллере) обрабатывать всю логику и
обмениваться управляющими данными с DECT-модулем по последовательному
порту (UART), используя протокол Busmail. Busmail-протокол имеет механизм для
предотвращения потери пакетов (схож с механизмом в HDLC-протоколе), содержит
проверку очерёдности пакетов и вычисление контрольной суммы. Одновременно
можно отправить максимум 7 пакетов. Подтверждение на приём пакета должно
быть отправлено в течение 100 мс.
2. Интегрировать свою логику в приложение на DECT-модуле. С внешним миром оно
будет общаться посредством GPIO-контактов и UART. Это называется разработка COLA-приложения (Co-Located Application).
Блог компании: habr.ru/users/Promwad/
www.promwad.ru Тел. +7 (495) 642–82–43. Email: [email protected] www.promwad.com Тел. +375 (17) 312–12–46. Email: [email protected] Promwad l Electronics Design © 2014 6
Эти варианты отображены на следующем рисунке:
Выбор определённого типа разработки зависит, в первую очередь, от сложности
приложения. Если приложение несложное, либо использование внешнего
микроконтроллера крайне нежелательно, то лучше — второй вариант.
В остальных случаях, безусловно, удобнее первый вариант:
Он более гибкий – нет жёсткой привязки к архитектуре отдельного DECT модуля.
Более наглядный – можно просматривать и анализировать все команды,
приходящие от DECT-модуля с ведением логов.
Более простой в отладке – узнать причину падения приложения на микроконтроллере проще, чем падения на DECT-модуле.
Примеры управления DECT-модулем
Для того чтобы проще было разбираться с протоколом DECT-чипа, лучше взять уже
готовую утилиту Sendmail.exe – она входит в состав SDK. Поскольку утилита написана для
Windows, то и проверять будем на Windows.
Эта утилита позволяет отправлять команды в сыром виде. Сам формат команд нужно
смотреть в спецификации API_PpCVMDECT_v0808.pdf
Для начала, два простых примера – управление светодиодом и проигрывание мелодий.
Блог компании: habr.ru/users/Promwad/
www.promwad.ru Тел. +7 (495) 642–82–43. Email: [email protected] www.promwad.com Тел. +375 (17) 312–12–46. Email: [email protected] Promwad l Electronics Design © 2014 7
Как помигать светодиодом:
Первый аргумент Sendmail – номер COM-порта в 10м формате, т.е. у нас DECT-
модуль подключен к COM31.
Второй аргумент – номер задачи в DECT-модуле, которой адресуется команда. Для
сторонних разработчиков это значение всегда равно 1.
Третий – уникальный идентификатор команды в 16м формате. 0x5902 – это запрос
API_HAL_LED_REQ на управление светодиодом. Четвёртый и последующие – аргументы команды в 16м формате.
Для запроса API_HAL_LED_REQ эти аргументы значат:
02 — LedNr – номер светодиода
03 – CmdCount – количество заданий
01 FF 00 – 1е задание, включить светодиод на 255 мс (ALI_LED_ON)
00 FF 00 – 2е задание, выключить светодиод на 255 мс (ALI_LED_OFF) 02 0A 00 – 3е задание, повторить все задания 10 раз (ALI_REPEAT_SEQUENCE)
Как проиграть мелодию:
5306 – запрос API_PP_AUDIO_START_TONE_REQ на включение проигрывания тона
или мелодии
16 – ToneIndex – номер тона/мелодии
00 – VolumeDb – громкость в дБ (±127дБ)
00 – TrackGenVol – требуется ли регулировать громкость относительно общего
уровня громкости 02 – Dest – устройство вывода звука (API_TONE_HANDSFREE_LSR – через динамик)
Блог компании: habr.ru/users/Promwad/
www.promwad.ru Тел. +7 (495) 642–82–43. Email: [email protected] www.promwad.com Тел. +375 (17) 312–12–46. Email: [email protected] Promwad l Electronics Design © 2014 8
Получение версии прошивки DECT-модуля:
в ответ должны получить что-то похожее на:
09 88 00 00 – VersionHex – версия прошивки, т.е. 0x00008809
12 09 06 17 32 – LinkDate – дата сборки прошивки, 06 сентября 2012 в 17:32
f – DectType – частотный режим приёмо-передатчика (API_DECT_TYPE_INVALID).
Этот параметр важен, если модуль работает в режиме FP. Может быть EU, US, China и др. Для изменения режима нужно отправить запрос API_PROD_TEST_REQ.
Если данные примеры не воспроизводятся, восстановите заводские настройки (включается режим PP):
Подождите секунд 10 и отключите COLA (Co-Located Application):
А затем перезапустите модуль:
Пример Walkie Talkie (Pp2Pp) — возможность вызова абонентами друг друга
Блог компании: habr.ru/users/Promwad/
www.promwad.ru Тел. +7 (495) 642–82–43. Email: [email protected] www.promwad.com Тел. +375 (17) 312–12–46. Email: [email protected] Promwad l Electronics Design © 2014 9
Pp2Pp – двусторонняя беспроводная связь между двумя абонентами.
В составе SDK есть уже пример Pp2Pp, причём и для случая запуска приложения на DECT-
чипе и в случае его запуска с PC. Он универсален, и от того первое знакомство с ним
может привести в шок.
Мы же рассмотрим, как реализовать связь двух трубок между собой с помощью всё той же
консольной утилиты Sendmail.exe.
Схема подключения КИТ’ов к PC:
Процедура установления связи с использованием Sendmail.exe
1) Вход в режим Pp2Pp
Sendmail.exe 30 1 4920 02 02 30
Sendmail.exe 31 1 4920 02 02 31
Sendmail.exe 30 1 5324
Sendmail.exe 31 1 5324
2) Вызов абонента
Sendmail.exe 30 1 4924
Sendmail.exe 30 1 4926 31
Sendmail.exe 31 1 5306 16 00 00 02
3) Подъём трубки
Sendmail.exe 31 1 4929
Блог компании: habr.ru/users/Promwad/
www.promwad.ru Тел. +7 (495) 642–82–43. Email: [email protected] www.promwad.com Тел. +375 (17) 312–12–46. Email: [email protected] Promwad l Electronics Design © 2014 10
4) Включение звука
Sendmail.exe 30 1 5303 0
Sendmail.exe 30 1 5323 01
Sendmail.exe 30 1 5301 03
Sendmail.exe 31 1 5303 0
Sendmail.exe 31 1 5323 01
Sendmail.exe 31 1 5301 03
Ура! Звук пошёл!
За этими магическими наборами цифр кроется управление машиной состояний DECT-
модуля. Поэтому очерёдность вызовов очень важна. К сожалению, Sendmail.exe не
дожидается прихода подтверждающих уведомлений от модуля, и полная картина обмена
сообщениями не ясна.
А вот на следующем рисунке отображена полная последовательность Busmail-сообщений
между ПК и двумя DECT-модулями:
Блог компании: habr.ru/users/Promwad/
www.promwad.ru Тел. +7 (495) 642–82–43. Email: [email protected] www.promwad.com Тел. +375 (17) 312–12–46. Email: [email protected] Promwad l Electronics Design © 2014 11
Трудности, с которыми мы столкнулись при реальной разработке
Реальная задача, в которой использовались DECT-модули – это реализация SIP-телефонов
для 6 одновременно зарегистрированных трубок. Причём трубки могут быть различных
производителей, главное, чтобы они поддерживали в полном объёме базовый CAT-iq. В
качестве DECT-модуля использовался SC14CVMDECT-AF. Одновременно разговор может
вестись по 4м трубкам. Каждая трубка может вызывать одновременно несколько SIP-
абонентов и переключаться между ними. Для трубок CAT-iq 2.0 поддерживается общая
телефонная книга, информация о пропущенных вызовах и wideband-звонки.
Блог компании: habr.ru/users/Promwad/
www.promwad.ru Тел. +7 (495) 642–82–43. Email: [email protected] www.promwad.com Тел. +375 (17) 312–12–46. Email: [email protected] Promwad l Electronics Design © 2014 12
Трудности:
1. В первоначальных редакциях SDK настоятельно предлагалось использовать AT-
команды. Они похожи на AT-команды модемов, но более специфические. Эти AT-команды
генерировало и обрабатывало отдельное приложение, выполняющееся на DECT-модуле.
Работали они кое-как, хорошо, что были исходники этого приложения, мы уже начали
исправлять какие-то ошибки, как вдруг оказалось, что Dialog Semiconductor отказывается
от -команд и заменяет их более низкоуровневыми -командами.
На тот момент не было ещё чудо-утилиты Sendmail.exe и её исходников, так что пришлось
самим писать парсер и генератор для -протокола, что было, конечно, не самой простой
задачей.
Но в последних редакциях документацию хорошо подготовили, примеров полно. Так что
пользоваться можно без опасений.
2. Многообразие «совместимых» CAT-iq трубок усложняет процедуру установления связи
между FP и PP: последовательность Busmail-сообщений может меняться, и об этом в
документации мало данных, т.к. одни трубки присылают набранный номер в одном
сообщении, другие – в нескольких или в дополнении к иному сообщению.
Очень порадовали трубки — 2.0. По сравнению с — 1.0, они гораздо стабильнее работают
и процесс взаимодействия наиболее схож с описанным в документации.
3. На момент разработки с трудом нашли трубки CAT-iq 2.0, пришлось заказывать в
Германии. Они только появлялись на рынке. Возможно, сейчас ситуация получше.
4. Для UART нужен отдельный драйвер (согласователь уровней), поскольку для него
сигнал логической «1» равен 1.8В.
5. Busmail-интерфейс предполагает подтверждение ответа в течении 100 мс. Поэтому
обработка Busmail-сообщений должна выполнятся как можно быстрее.
Заключение
SC14CVMDECT довольно неплохой модуль для реализации поддержки DECT. У него много
возможностей, и поэтому его применение только в качестве средства связи двух точек
слегка избыточно. Но вот если нужна реализация CAT-iq 2.0, регистрация и
одновременная работа нескольких трубок или при отсутствии внешнего микроконтроллера
SC14CVMDECT – очень даже неплохой вариант.
Жаль только, что в нём не реализовано управление по SPI (для встраиваемых применений
SPI иногда удобнее, чем UART).
Блог компании: habr.ru/users/Promwad/
www.promwad.ru Тел. +7 (495) 642–82–43. Email: [email protected] www.promwad.com Тел. +375 (17) 312–12–46. Email: [email protected] Promwad l Electronics Design © 2014 13
Источник: http://habrahabr.ru/post/221997/