Введение
Написать эту статью меня вынудили обстоятельства. Я всегда неровно дышал к изделиям фирмы NORDIC и наверное так бы и оставался их преданным поклонником, если бы не санкции. Многие европейские IT гиганты перестали поставлять свою продукцию в нашу страну. Поэтому пришлось обратить взгляд на наших китайских братьев :-) Самым интересным вариантом, на мой взгляд, является фирма TeLink. Для работы с BLE годятся несколько семейств. У меня был KIT для работы с mesh сетью, поэтому я изучал контроллер TLSR8258.
В принципе не имеет большого значения с какого контроллера начать. У TeLink, так же как и у NORDIC-а, можно использовать одно и то же железо с разными SDK. Просто перейдите на страницу понравившегося вам семейства и выберите то что хотите использовать. Т.к. у меня был контроллер TLSR8258, то и разговор пойдет о нем.
Установка среды
Прежде чем начинать работу с контроллером, необходимо установить среду разработки. В разделе IDE for TLSR8 Chips скачивается среда разработки на основе Eclipse, а так же инструкция подключения выбранного SDK. Надо сказать, что документации на сайте предостаточно. Это, безусловно, является большим плюсом данной фирмы.
В разделе vendor находятся примеры, которые предварительно надо откомпилировать. У меня на рисунке красным прямоугольником выделен пример b85m_ble_sample. Что бы его откомпилировать надо сначала щелкнуть мышкой по названию SDK, а затем выбрать в выпадающем меню с молоточком нужный пример. Компиляция начнется автоматически и у вас в левом окошке появится папка с соответствующим названием. Её можно открыть и увидеть конечный бинарный файл, готовый к прошивке в контроллер.
И вот тут мы сталкиваемся с первой проблемой. Не все примеры удастся скомпилировать. Я потратил немало времени, что бы разобраться почему так происходит. Оказалось всё просто. В мануале к этому SDK в главе 16 Q&A , описывается причина и способ её обойти. В двух словах, для некоторых проектов не хватает выделенной оперативной памяти. Что бы кристалл мало потреблял, не всю память включают при инициализации. Каким то проектам хватает и 16к, а другим нужно 32к оперативки. И у меня вопрос - почему бы не включить сразу 32к памяти? На первом этапе изучения, потребление не так важно, гораздо важнее рабочие примеры. Как мы увидим далее, это не самый большой косяк у TeLink-а.
Программатор
После того, как мы смогли собрать бинарный файл, нам надо его прошить. Здесь мы сталкиваемся с ещё одной проблемой от TeLink. В среде Eclipse есть встроенный программатор/дебаггер wtcdb, но я так и не смог разобраться как с ним работать. При нажатии кнопок Run и Debug на панели Eclipse, вылетает ошибка. Возможно кто то из читателей знает как решить эту проблему. Тогда пишите в комментариях, поможете не только мне, но и многим другим. Мы пойдем другим путем.
Мы будем использовать фирменный программатор/дебаггер Telink BDT. На рисунке сверху видна черная коробочка с надписью Telink - это аппаратная часть программатора. В принципе, если у вас его нет, вы легко можете купить его на АлиЭкспрессе или сделать самому из модуля ET104-BT10 по рекомендациям пользователя pvvx с форума сообщества разработчиков esp8266. На этом форуме есть много веток, где обсуждаются чипы от фирмы TeLink. И, раз уж пошел разговор о форуме, то рекомендую вам посмотреть раздел BLE модули TB-04/TB-03F (TLSR8253F512), где описываются устройства на основе чипа TLSR8253. Их так же легко купить на АлиЭкспрессе и использовать вместо KIT-а.
Теперь давайте вернемся к программатору. BDT - это Burning and Debugging Tool. С его помощью можно программировать и отлаживать программный код. На его странице есть подробное описание как с ним работать. Мы лишь коснемся основных моментов. Вот так выглядит рабочее окно BDT. Если программная часть видит аппаратный блок, то слева внизу мы увидим надпись evk device: ok
Красным цветом я выделил основные элементы управления. Для работы нам надо выбрать тип контроллера. У меня он стоит равным 8258. Затем выбираем линию программирования. Она может быть как USB, так и EVK - evaluation kit. Некоторые платы (см. верхний рисунок) позволяют программировать контроллер через USB порт, но так как у меня был аппаратный программатор, то я использовал его и следовательно EVK режим. Тут надо уточнить, что контроллеры фирмы TeLink программируются по однопроводной линии SW, т.е. от программатора к плате идут три провода Vpp, Gnd, SW. Со стороны программатора линия называется SWM (single wire master), а со стороны контроллера SWS (single wire slave). На панели инструментов у нас так же есть кнопка SWS. Если её нажать, происходит проверка линии программирования. В главном окне мы должны увидеть соответствующую запись. В некоторых случаях, линия SWS может быть неактивна, тогда надо нажать на кнопку Activate. Функции остальных кнопок понятны из названия. Erase - стирает кристалл, Download - записывает прошивку. Предварительно её надо выбрать в пункте меню File->Open и мы увидим внизу панели путь к текущему файлу. Кнопка Reset запускает выполнение программы на контроллере.
Debugging
Если мы перейдем во вкладку Tdebug, мы сможем совершать некоторые действия по отладке программы. Если мы открыли бинарный файл в сгенерированной компилятором папке, то в ней так же находится файл листинга (*.LST) с таким же названием. Это позволяет просматривать содержимое памяти. Для этого надо нажать правой кнопкой мыши в левую половину экрана и выбрать пункт Refresh. Мы увидим список переменных с их значениями. Если переменные представляют из себя буфер, то вместо их значения увидим три точки. Двойной клик по ним, и мы видим в правом окне содержимое всего буфера. Кроме того, используя кнопки Run, Pause, Step, мы можем двигаться по программе и смотреть как меняется содержимое регистров. У BDT есть ещё не мало возможностей, все перечислять я не стану, они подробно описаны в документации.
И вот тут начинается самое интересное. Спадает пелена и ты понимаешь, что нормально отлаживать программу не получится. Протокол SWS не умеет ставить точки остановки. Да и отлаживать программу приходится без привязки к исходникам. Производитель предлагает для отладки использовать функцию printf(). Для этого в конфигурационный файл проекта app_config.h надо вставить несколько строк, которые позволят его использовать. И тут хочется воскликнуть: "Карл!!! Как такое может быть в 21 веке?!"
Заключение
В конце статьи хотелось бы подытожить своё впечатление о BLE контроллерах фирмы TeLink. С одной стороны, сами процессоры , а так же большое количество разных отладок вызывает уважение. Цена на кристалл в районе $1,5 - $2.0 не идет ни в какое сравнение с европейскими чипами, которые после санкций сильно скакнули в цене. Наличие различных SDK (Single Connection, Multi Connection, Telink Mesh и др.) так же является большим плюсом данной фирмы. Но недоделанная среда разработки вносит огромный черпак дегтя в бочку с медом. Использовать эти контроллеры или нет - решайте сами. По-видимому, для простых проектов они вполне сгодятся, а вот проекты со сложными алгоритмами делать на них будет сложно. Я вполне могу в чем то ошибаться, т.к. я только начал изучение этого семейства. Может быть читатели укажут мне и остальным как обойти минусы этих чипов. В этом случае я с удовольствием поменяю свою точку зрения на них.
Сотрудник Группы Компаний «Цезарь Сателлит» Печерских Владимир