Эта статья посвящена применению программы
SmartRF Studio
В TexasInstruments постарались максимально упросить для разработчиков работу непосредственно с радиочастотным приемопередатчиком. Для простого конфигурирования радиочасти (или изменения конфигурации в готовом проекте) TI предлагает программноеобеспечение SmartRF Studio  www.ti.com/smartrf. 
Программу можно скачать с сайта TI http://www.ti.com/tool/smartrftm-studio. SmartRF ™ Studio представляет собой приложение для Windows, которые могут быть использованы для оценки и настройки Low Power RF-микросхем от Texas Instruments.Приложение поможет разработчикам радиочастотных систем быстро оценивать RF-микросхем на ранней стадии процесса проектирования. SmartRF ™ Studio представляет собой приложение для Windows, которые могут быть использованы для оценки и настройки Low Power RF-микросхем от Texas Instruments.Эта программа позволяет с помощью простого и понятного графического интерфейса сконфигурировать регистры приемопередатчика и экспортировать, например, ассемблерный код, который можно использовать в своем проекте. С помощью этого приложения можно быстро оценивать RF-микросхемы на ранней стадии процесса проектирования.
После загрузки с сайта ZIP файла и его установки на жёсткий диск, открывается окно всех поддерживаемых устройств. На  этом этапе выбираем нужную версию программы, интересуемый трансивер и подключаем если есть готовый hex файл с исходниками. ( их можно найти на форумах разработчиков в интернете:forum.roboclub.ru,http://forum.ixbt.com,). После открывается окно в котором отображаются два вкладки одна для упрощённой модели разработки Easy Mode, другая модель Expert Mode для полной. В окне configuration выбираем требуемую скорость передачи данных и частоту, на которой будет работать наш трансивер и нажимаем на Refresh.  Нажимаем на кнопку старт у передатчика затем у приёмника и наблюдаем как загорается значок связи на рисунке между TX и RX. Так можно пронаблюдать работу трансивера в упрощённом режиме.
Приведу пример работы в полной модели проектирования радиосвязи на основе микросхемы СС1100 , взятый с  http://www.chipinfo.ru/literature/compeljournal/2009/200907/p10.html:
Относящаяся к применению документация микросхемы СС1100, находится в достаточно большом количестве файлов (более 15). Это основной Datasheet, Errata Notes, различные Application и Design Notes. Все упоминаемые в статье файлы можно скачать с сайта www.ti.com, набрав в поиске их название. Самая важная причина, по которой была написана эта статья - отсутствие в документации понятного и простого алгоритма действий (FlowChart) и конкретных настроек (числовых значений) чипа к этому алгоритму. Ведь чип содержит более 40 различных регистров и много режимов работы, и правильно запрограммировать работу микросхемы достаточно трудно.
В статье приведен псевдокод, написанный на С++ для операционной сиcтемы FreeRTOS, который легко можно перенести в любую среду (и без операционной системы в том числе) и на любой микроконтроллер - достаточно лишь знать работу интерфейса SPI у выбранного микроконтроллера
Плата СС1100 подсоединяется к host-микроконтроллеру следующими сигналами:
  • питание +3,3В;
  • сигналы SPI: CSn, SCLK, SI, SO(GDO1);
  • сигнал GDO2- к выводу прерывания микроконтроллера (прерывание должно срабатывать по положительному фронту);
  • сигнал GDO0 опционально- для отладки с осциллографом.
Для простоты сигналы GDO2 можно не заводить на микроконтроллер - этот вариант подключения для передатчика и приемника описан ниже.

Генерирование конфигурации

В ПО SmartFR Studio на вкладке Normal View необходимо автоматически сгенерировать конфигурацию. Вручную (на вкладке Register View) инициализировать регистры бесполезно - эти настройки не экспортируются.
Из меню File запускается генератор исходников, и по шаблону на скриншоте рис. 1 и рис. 2
"CC1100_Write (CC1100_@RN@, @<<@0x@VH@); @<<@//0x@AH@ @<<@ = 0x@VH@" все сохраняется в файл.
Рис. 1. Генерирование конфигурации - шаг1
Рис. 2. Генерирование конфигурации - шаг 2
Сгенерированный файл показывает, в какие регистры какие значения нужно записывать, чтобы инициализировать СС1100 в выбранном частотном диапазоне. Приемник и передатчик инициализируются одинаковыми значениями регистров, поэтому их настройки совпадают, и это упрощает поставленную задачу. Исключение составляет лишь регистр конфигурации вывода GDO2 - это связано с тем, что событие успешной передачи и приема в принципе трактуется по-разному.
В качестве header-файла взят пример из swra141.zip - файл под названием сс1100.h. Этот файл содержит дефайны регистров, например:
#define CC1100_IOCFG2 0x00//GDO2 output pin configuration
и т.п. Дефайны улучшают читабельность кода и являются правилом хорошего тона. Этот файл был немного изменен, чтобы он был платформенно независим. Также в файл были добавлены дефайны некоторых битов, для улучшения читабельности.
В итоге получился некоторый реально работающий псевдокод, который и хочу предложить на обсуждение. Этот псевдокод содержится в:
1. модифицированном header-файле CC1100_Registers.h (см. выше)
2. исходнике CC1100_Task_Fixed.cpp.
Некоторые комментарии приведены в самом исходнике. Некоторые платформенно зависимые функции требуют пояснения:
  • функция TRACE служит для вывода отладочной информации в окне отладки;
  • CC1100_Write, CC1100_Read, CC1100_Write_Burst, CC1100_Read_Burst. Эти функции записывают и считывают информацию по SPI-интерфейсу;
  • vTaskDelay - задержка на заданное количество миллисекунд;
  • INIT_INTERRUPT_ON_PIN_GDO2 - процедура инициализации прерывания по положительному фронту на выводе GDO2;
  • xSemaphoreHandle xSemaphore_CC1100- это семафор, который срабатывает, когда на выводе GDO2 возникает положительный перепад;
  • xSemaphoreTake (xSemaphore_CC1100, 15000)- эта функция возвращает «1» при срабатывании семафора, или возвращает «0», когда он не срабатывает и истекает время таймаута в миллисекундах.
Псевдокод написан для одного из самых простых режимов - режима фиксированного пакета. Файл исходника для приемника и передатчика универсальный - необходимо лишь комментировать строку #define CC110_USE_AS_RX в начале файла.

Наладка передатчика

С помощью осциллографа на выводе GDO2 каждые 6 сек можно наблюдать отрицательный импульс (ниспадающий фронт - начало передачи пакета, положительный фронт - конец пакета) длительностью примерно 2,5 мс. (38,4 кбод = 208 мкс/байт, 10 байт = 2,1 мс). Расхождение между теоретическим и практическим временем Chipcon объясняет задержкой в чипе (swra121.pdf). Можно контролировать передачу по потребляемому току питания. Для этого TI рекомендует резистор 5 Ом включить в разрыв питания. На экране отладки передатчика можно наблюдать следующие сообщения:
############## CC1100 AS TX
##############
CC1100 PART_Number = 0x0
CC1100 VERSON_Number = 0x3
1 Write at 0xE counter=0x1
CC1100 Tx finsh
1 Write at 0xE counter=0x2
CC1100 Tx finsh
1 Write at 0xE counter=0x3
CC1100 Tx finsh
Если для передатчика сигнал GDO2 не заводить в микроконтроллер, то код можно даже не поправлять - все равно все будет работать. Просто в этом случае мы не будем знать об успешной передаче пакета, но он, тем не менее, будет передаваться. 
Подобные промеры можно найти на:
 http://housea.ru/index.php/electronics/15560
http://www.scanti.ru/pages/ti_components/2010/4(28)2010.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/41291F.pdf