illumium.org

Главная › Блоги › Блог snegovick

Подключаем 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.

Кроме собственно перекидывания пинов, в прошивке есть еще изменения:

  1. при старте прошивка говорит "Start\r\n" на скорости 115200 в тот самый UART0.
  2. аппаратное управление потоком отключено.

Эти изменения, как нетрудно догадаться, облегчают начальную отладку, и поменять их обратно несложно.

Схема электрического подключения:

cc2541.png

  • Разработка устройств
  • development
  • разработка
  • Блог пользователя - snegovick

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

Содержимое этого поля является приватным и не будет отображаться публично.
  • Доступные HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Syntax highlight code surrounded by the {syntaxhighlighter SPEC}...{/syntaxhighlighter} tags, where SPEC is a Syntaxhighlighter options string or "class="OPTIONS" title="the title".

Подробнее о форматировании

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
 __  __          _____       _  __     __   ___  
\ \/ / _ _ |___ / | | \ \ / / / _ \
\ / | | | | |_ \ _ | | \ \ / / | | | |
/ \ | |_| | ___) | | |_| | \ V / | |_| |
/_/\_\ \__,_| |____/ \___/ \_/ \__\_\
Введите код, изображенный в стиле ASCII-арт.
RSS-материал

Навигация

  • Подшивки
  • Фотоальбомы

Работает на Drupal, система с открытым исходным кодом.

(L) 2010, Illumium.Org. All rights reversed ^_~