Подключаем SensorTag от Texas Instruments к микроконтроллеру
snegovick — Чт, 18/09/2014 - 18:12
Если вы разрабатываете что-то относящееся к модному теперь интернету вещей, то наверняка задумывались о каналах для коммуникаций, которые сейчас представлены тремя типами технологий (беспроводных): WiFi, Bluetooth, прочие радио-интерфейсы.
Не будем останавливаться на остальных, нас интересует Bluetooth 4, а именно Bluetooth Low Energy (BLE), потому что батарейка у нас маленькая, а BLE обещает существенную экономию.
Из относительно легко доставаемых модулей, можно вспомнить сс254x от Texas Instruments (и производные от них, типа BLE11x от Bluegiga) и модули от Nordic.
Долго ли, коротко ли, но в результате метаний между Nordic, у которого встроен Cortex-M0 и TI с их древним 8051 на борту, я выбрал-таки TI, выдал им так сказать, кредит доверия. Да, с ними не так просто, потому что BLE-стэк имеется в виде статической библиотеки собранной компилятором от IAR. Что мешало собрать еще и с помощью sdcc, не понятно, и подлецы отказываются говорить.
Т.к. я привык сначала собирать макет, а только потом разводить плату и лепить что-то полностью своё, то и в этот раз надо было выбрать некий devkit. Выбор пал на Ti SensorTag, за небольшую цену, а также пады для подключения UART.
Ах да, зачем же нам UART, у нас же целый контроллер встроен в сам чип ? UART нужен чтобы рулить радиомодулем извне, с помощью внешнего контроллера. Почему ? Потому что когда TI завтра наконец выпустит радио модуль с нормальным контроллером внутри, или, кто-то еще выпустит радио модуль подешевле, то нужно будет только поменять модуль (в теории, конечно же), и всё, потому что BLE подразумевает наличие специфицированного интерфейса подключения внешних контроллеров, а вот специфицированного API нет. Ну и уже во вторую очередь, IAR с его недешевой лицензией отталкивает от применения 8051 контроллера как основного.
Проблема
Сложность заключается в том, что реализация спецификации BLE HCI сделана в виде примера под разные девкиты, но только не под SensorTag. Но это в целом поправимо, потому что изменений немного. В оригинальной прошивке от TI, UART0, который используется для общения с внешним контроллером, подключен на пины порта 0, а нам нужно использовать пины порта 1. Всё. Чтобы не ползать по коду и не искать по сто раз где и что нужно поменять, я предлагаю воспользоваться готовым проектом (да-да, под IAR), который можно забрать на гитхабе. В репозитории лежит полная копия BLE-stack 1.4 от Ti, для того чтобы сохранить структуру директорий и зависимости. Измененный проект находится в Projects/ble/HostTestApp.
Кроме собственно перекидывания пинов, в прошивке есть еще изменения:
- при старте прошивка говорит "Start\r\n" на скорости 115200 в тот самый UART0.
- аппаратное управление потоком отключено.
Эти изменения, как нетрудно догадаться, облегчают начальную отладку, и поменять их обратно несложно.
Схема электрического подключения:

Отправить комментарий