CC2652R Hardware Design

В процессе проектирования схем для CC2652R и изучения референс-мануалов и апноутов, у меня скопилось много записей по Hardware Design и я решил оформить эти записи в одну статью, чтобы помочь другим и себе, если забуду, быстро разобраться в нюансах аппаратной конфигурации микроконтроллера.

Вступление

Те, кто впервые сталкиваются с TI и их номенклатурой беспроводных микроконтроллеров, по началу могут запутаться в их характеристиках, семействах и как использовать тот или иной чип. В документации TI есть очень удобная таблица, которая описывает все актуальные на данный момент решения и чем они отличаются друг от друга:

cc2652 device family

В таблице можно увидеть и CC2652R, тот МК, с которым работаю я. У него есть несколько модификаций. CC2652RB — МК, которому не нужен отдельный кварц на 48 МГц, CC2652RP — имеет встроенный усилитель мощности на 20 dBm.

В первой статье я уже описывал более-менее все характеристики CC2652R, отдельно нашел еще вот такую блок-схему из референс-мануала, которая иллюстрирует написанное мной более наглядно. Также описание данной схемы, можно найти на сайте Компэла и в их вебинаре.

cc2652 блок схема

Описание выводов CC2652R

Первым делом я отрисовал УГО в Kicad (найти его можно в моем репозитории компонентов), разделив его на две части следующим образом. Основная часть:

cc2652 kicad

и порты ввода / вывода:

cc2652 kicad

DIO_23DIO_30 (36 — 43) имеют возможность ввода аналоговых сигналов. АЦП 12-битный на 8 каналов.

DIO_5 (10), DIO_6 (11), DIO_7 (12), JTAG_TMSC (24), DIO_16 (26), DIO_17 (27) маркируются как high-drive capability и рассчитаны на больший ток, чем обычные порты ввода / вывода.

DCDC_SW (33) выход внутреннего DC/DC конвертера.

DCOUPL (23) служит для развязки внутреннего регулируемого цифрового источника питания 1.27 В. От этого вывода нельзя питать другие элементы схемы.

JTAG_TMSC (24) вывод отладчика.

JTAG_TCKC (25) вывод отладчика.

DIO_16 (26) вывод отладчика JTAG_TDO (опционально).

DIO_17 (27) вывод отладчика JTAG_TDI (опционально).

RESET_N (35) вход сброса, активный уровень — низкий, не имеет внутреннего подтягивающего резистора как на STM32!

VDDR (45) и VDDR_RF (48) входы питания, должны быть запитаны от внутреннего DC/DC конвертера или внутреннего LDO по следующей схеме:

cc2652 питание

Индуктивность L1 и конденсатор C12 22u необходимо располагать как можно ближе к выводу 33. Если выход DCDC_SW (33) не используется, оставить не подключенным. В этом случае индуктивность между ним и VDDR можно убрать, но конденсатор 22u необходимо оставить.

VDDS (44) основной вывод питания микросхемы, от 1.8 В до 3.8 В.

VDDS2 (13), VDDS3 (22) выводы питания DIO.

VDDS_DCDC (34) питается от DC/DC конвертера, требуется подключать к VDDS, т.е. основному питанию микроконтроллера.

Последние 4 вывода соединяются вместе и запитываются следующим образом:

cc2652 питание

VSS (49) вывод ground pad под микросхемой, подключается к земле.

X48M_N (46) и X48M_P (47) входы кварцевого резонатора 48 МГц.

X32K_Q1 (3) и X32K_Q2 (4) входы кварцевого резонатора 32 кГц, если не используется, то оставляются не подключенными.

Неиспользуемые DIO рекомендуется оставлять без подключения.

Спросите, где остальная периферия, где UART, SPI, таймеры? А как оказалось, цифровая периферия CC26x2 может быть присвоена любому GPIO, что просто невероятно удобно. Нет необходимости, как в STM32 смотреть, где какой вывод и париться, что занял пины SPI1, включив сразу 2 UART и т.п. Назначаешь себе UART0 на любые выводы микроконтроллера и готово!

Референсная схема CC2652R

Теперь хочу обратиться к апноуту CC13xx CC26xx Hardware Configuration and PCB Design и извлечь из него как можно больше информации по Hardware Design для CC2652R, но описав ее сжато в рамках только этой статьи.

Когда проектируешь свою печатную плату необходимо следовать референсному дизайну максимально точно, насколько это возможно. Для микроконтроллера CC2652R такой платой является CC226x2REM-7ID. Ее описанию я и старался следовать в своей схеме (кликабельно):

cc2652 схема устройства

RF Front-end

RF front-end может быть в одном из двух режимов: несимметричный и дифференциальный. Установка производится командой CMD_RADIO_SETUP:

  • Config.frontEndMode = 0x00 : Дифференциальный режим;
  • Config.frontEndMode = 0x01 : Несимметричный режим RFP;
  • Config.frontEndMode = 0x02 : Несимметричный режим RFN;

Несимметричный режим рекомендуется, когда не нужна максимальная выходная мощность, а нужна мощность около 0 dBm. Референсы на все режимы включения можно найти по ссылке в категории Design Files, где X — External Bias, I — Internal Bias, S — Single Ended, D — Differential.

48 MHz кварцевый резонатор

Нужен для тактирования микроконтроллера. Подробные рекомендации по выбору конденсаторов можно найти в разделе 6.4 документа.

32 kHz кварцевый резонатор

Опционален, вместо него можно использовать внутренний RC генератора на 32 кГц, что я и планирую сделать в своем устройстве. Нужен, когда требуется уменьшить потребление или для протоколов синхронизации.

Balun

Balun это часть схемы, которая преобразует дифференциальный сигнал в несимметричный. Имеет сдвиг фазы ±90° с помощью low-pass и high-pass фильтров. Если используется только один RF вывод, то balun не нужен, только фильтр до антенны.

Фильтр

LC-фильтр между balun и антенной необходим для подавления гармоник и согласования импедансов.

Антенна

CC2652R однодиапазонный микроконтроллер, поэтому в референс-дизайне используется Single-Band антенна на 2.4 ГГц. Референс-дизайн антенны подробно рассмотрен в предыдущей статье.

В целом, по антеннам у TI доступно 2 документа: Antenna Selection Quick Guide и Antenna Selection Guide. Также есть дополнительный документ CC-Antenna-DK2 and Antenna Measurements Summary, в котором есть вся исчерпывающая информация по антеннам.

Основное внимание следует уделить согласованию импедансов, для этого TI предлагает цепь П-фильтра рядом с антенной:

согласование антенны cc2652 zigbee

В данной схеме элемент ANT2 ставится всегда, даже когда антенна идеально согласована и обычно равно 0 Ом.

Bootloader выводы

Загрузчик может загружаться либо через UART, либо через 4-проводной SSI интерфейс. SSI0 более продвинутый интерфейс, нежели UART, но требует больше выводов. Для LAUNCHXL-CC26x2R1 используются следующие выводы:

UART0 RXВход с подтяжкой к питаниюDIO_2
UART0 TXВыход без подтяжекDIO_3
SSI0 CLKВход с подтяжкой к питаниюDIO_10
SSI0 FSSВход с подтяжкой к питаниюDIO_11
SSI0 RXВход с подтяжкой к питаниюDIO_9
SSI0 TXВыход без подтяжекDIO_8

JTAG отладчик

Подключение отладчика осуществляется к следующим выводам микросхемы:

JTAG_TMSC (24) вывод отладчика.
JTAG_TCKC (25) вывод отладчика.
DIO_16 (26) вывод отладчика JTAG_TDO (опционально).
DIO_17 (27) вывод отладчика JTAG_TDI (опционально).
RESET_N (35)
VDDS и VSS

Референс-дизайн печатной платы

Balun

Основная задача разместить его как можно более симметрично относительно выводов RF микроконтроллера. Как тут:

cc2652 balun

LC-фильтр

Лучший дизайн LC фильтра после balun’а показан ниже:

cc2652 lc фильтр

Самый нежелательный вариант выглядит следующим образом:

cc2652 lc фильтр

Развязывающие конденсаторы

Основные правила их размещения на печатной плате:

  • Для лучшего результата размещайте конденсаторы в том же слое, что и активный компонент;
  • Подводите питание сперва к конденсатору и уже потом к активному компоненту;
  • Каждый конденсатор должен иметь свое переходное отверстие к земле;
  • Размещать конденсатор надо как можно ближе к выводу питания активного компонента;
  • Путь прохождения обратного тока между конденсатором и микросхемой должен быть как можно короче и прямее, для наименьшего импеданса;

DC/DC регулятор

Компоненты регулятора должны быть как можно ближе к выводу DCDC_SW как показано на рисунке ниже:

cc2652 питание

П-фильтр антенны

Согласующий фильтр следует располагать как можно ближе к точке запитывания антенны.

Линии передачи

Должны быть как можно короче и иметь импеданс 50 Ом, TXLine утилита, которая позволяет рассчитать импеданс длинных линий.

Симуляция

Если дизайн не соответствует референсному, то следует произвести симуляцию в Advanced Design System (ADS). Данный пакет программ проприетарен и стоит денег, если знаете open-source аналог напишите, пожалуйста, в комментариях.

Конфигурация питания

VDDS основной домен питания микроконтроллера 1.8-3.8 В, это то напряжение, которое нужно подать от внешнего источника питания. Для более наглядного представления вставлю схему из документации:

cc2652 питание

VDDR домен питания, который требуется запитать от внутреннего DC/DC или от внутреннего Global LDO 1.68 В или 1.95 В в режиме boost.

DCOUPL требует подключения внешнего конденсатора 1 мкФ для внутреннего LDO 1.28 В.

Микроконтроллер автоматически переключается между Global LDO и DC/DC, смотря что эффективнее, к примеру если VDDS падает ниже 2 В, то DC/DC не особо эффективен и МК переключается на питание от Global LDO.

Настройка CCFG для использования DC/DC конвертера:

#ifndef SET_CCFG_MODE_CONF_DCDC_RECHARGE
#define SET_CCFG_MODE_CONF_DCDC_RECHARGE	0x0	// Use the DC/DC during recharge in powerdown
// #define SET_CCFG_MODE_CONF_DCDC_RECHARGE 0x1	// Do not use the DC/DC during recharge in powerdown
#endif

#ifndef SET_CCFG_MODE_CONF_DCDC_ACTIVE
#define SET_CCFG_MODE_CONF_DCDC_ACTIVE		0x0 // Use the DC/DC during active mode
// #define SET_CCFG_MODE_CONF_DCDC_ACTIVE	0x1 // Do not use the DC/DC during active mode
#endif

Для уменьшения стоимости и размера печатной платы можно VDDR запитать от внутреннего Global LDO, убрав DC/DC индуктивность, однако емкость 22мкФ рядом с VDDR по прежнему нужна. Cbulk VDDS расположить рядом с пином VDDS, а не VDDS_DCDC. DCDC_SW вывод оставить не подключенным.

Настройка CCFG для использования внутреннего Global LDO:

#ifndef SET_CCFG_MODE_CONF_DCDC_RECHARGE
// #define SET_CCFG_MODE_CONF_DCDC_RECHARGE	0x0	// Use the DC/DC during recharge in powerdown
#define SET_CCFG_MODE_CONF_DCDC_RECHARGE 0x1	// Do not use the DC/DC during recharge in powerdown
#endif

#ifndef SET_CCFG_MODE_CONF_DCDC_ACTIVE
// #define SET_CCFG_MODE_CONF_DCDC_ACTIVE		0x0 // Use the DC/DC during active mode
#define SET_CCFG_MODE_CONF_DCDC_ACTIVE	0x1 // Do not use the DC/DC during active mode
#endif

Есть еще режим использования внешнего регулятора напряжения, описан в пункте 9.4, подробно на нем останавливаться не буду, статья, итак, уже довольно большая получилась.

На этом пока все, скоро будут еще статьи, следите за анонсами на моем канале.