Texas Instruments CC3220SF-LAUNCHXL

Приехала на днях демоплата от Texas Instruments. С микроконтроллером СС3200 я балуюсь достаточно давно, и узнав о появлении его новой версии CC3220 — практически при первой же возможности решил заказать отладочный набор. Но в апреле-мае это у меня не вышло — TI отказывался слать набор из своего магазина в Россию, ссылаясь на проблемы с таможенными органами, а в Чип-и-Дипе и Терраэлектронике эта же платка стоила неприлично дорого. Настолько неприлично, что я даже стал рассматривать варианты заказа в каком-нибудь Farnell или Mouser — по срокам то же, а по деньгам выходило дешевле. Останавливало одно — даже на коробке написаны слова WiFi и 256-bit encryption, на которые, по слухам, любят возбуждаться таможенники.

Но вот буквально на прошлой неделе я просматривал нотификации ФСБ и обнаружил многообещающий документ. Теперь можно было не пугаться надписей на коробке — так как согласно этому документу, этот отладочный набор средством шифрования не является. В общем, от «таможенных» проблем я был избавлен и со спокойной совестью заказал игрушку непосредственно у TI.

Кстати, обратите внимание на интернет-магазин Texas Instruments. Понятно, что заказывать оттуда отдельные детали — не совсем правильный путь, велик шанс, что посылку признают «коммерческой партией», а вот отладочные наборы — почему бы и нет? Тот же CC3220SF-LAUNCHXL стоит у TI 49,99$ + 6,99$ доставка (а при заказе от 150$ — доставка бесплатна) — итого что-то около 3300 рублей. Для сравнения — в Терраэлектронике этот же набор предлагается за 5684 рубля со сроком поставки три недели, в Чип-и-Дипе — был примерно за 6000 с аналогичным сроком поставки (по-моему, раздел «Позиции на заказ» у них повторяет каталог Farnell). При этом TI store доставляет экспресс-почтой FedEx, у меня от момента заказа до вручения посылки прошла всего лишь неделя (пять рабочих дней — по идее, заказав в понедельник, теоретически можно получить свой заказ уже в пятницу).

Комплект поставки — сама плата в антистатическом пакетике, шнурочек с MicroUSB и пара бумажек с адресами сайтов TI и Terms and Conditions. В общем, ничего особенного. Что же мы получаем за 3300 рублей? На демоплате имеется:

— микроконтроллер CC3200SF со всей необходимой «обвязкой»;
— подключенные по I2C датчик температуры и акселерометр;
— повторитель на ОУ для аналоговых входов;
— две кнопки, три светодиода;
— «гребенки», соединенные со свободными пинами МК;
— отладчик типа XDS110.

Разрабатывая демо-платы линейки LaunchPad, в TI явно посматривали в сторону ардуины. Во всяком случае, идея, что надо сделать универсальный разъем для дочерних плат с любой периферией (у TI они называются BoosterPack) — явно оттуда. В фирменном интернет-магазине встречаются такие платы со слотом для SD-карты, например, или с маленьким дисплейчиком, кнопками и джойстиком. Не знаю, кем надо быть, чтобы покупать BoosterPack со слотом для SD-карты, а затем героически дорабатывать его напильником, когда примерно то же самое можно сделать, имея в хозяйстве адаптер для MicroSD и разъем типа BLD-20 — но давайте не будем смеяться.

Главное здесь, конечно — это микроконтролер CC3220SF. Заявленные характеристики звучат весьма многообещающе:

— ядро Cortex-M4 с тактовой частотой 80 МГц;
— 256 кБ SRAM (в версиях без встроенной флеш-памяти пользователю доступно около 240 Кб);
— 1 МБ флеш-памяти процессора (в версии SF);
— 2xUART;
— SPI;
— I2C;
— SD-host;
— 4 таймера с ШИМ;
— watchdog;
— 4 канала АЦП с разрядностью 12 бит;
— McASP;
— интерфейс камеры (parallel camera interface module);
— до 27 линий ввода-вывода.

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

Естественно, нельзя забывать и об основной фишке серии CC32xx — встроенном отдельном процессорном ядре, отвечающем за работу с WiFi. Это вам не ESP8266 с китайской прошивкой, управляемой AT-командами, а полноценный сетевой процессор (еще одно ядро ARM Cortex-M, судя по тому, что встречаетсчя в других микроконтролерах этой серии — M0, под управлением специальной прошивки в ПЗУ). Он отвечает за подключение к WiFi, сетевые соединения (интерфейс в стиле BSD socket — так что никаких особых сложностей в программировании не возникает), а для полного счастья в нем реализованы еще и несколько сетевых приложений — HTTP-сервер, DHCP-сервер, ping и DNS-клиент. В новом семействе увеличено количество ресурсов, доступных сетевому процессору — теперь в режиме точки доступа к устройству может быть подключен не 1, а 4 клиента, а количество одновременно доступных сокетов увеличилось с 8 до 16.

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

Описание Цена розничная в TI Store, $ Цена оптовая (1 ku) в TI Store, $ Цена в Терраэлектронике, р
CC3200 Микроконтролер 9,07 4,90 923-727
CC3200MOD Модуль 13,50 7,99 1491-1258
CC3220R Микроконтролер 11,08 5,14
CC3220S Микроконтролер с защитой данных 12,41 5,76 1021-736
CC3220SF Микроконтролер с защитой данных и 1 Мб флеш-памяти 12,66 6,79 1204-868
CC3220MODS Модуль, МК с защитой данных 17,52 9,39 1498-1262
CC3220MODSF Модуль, МК с защитой данных и 1 Мб флеш-памяти 19,76 10,59
CC3220MODAS Модуль, МК с защитой данных, встроенная антенна 19,57 10,49
CC3220MODASF Модуль, МК с защитой данных и 1 Мб флеш-памяти, встроенная антенна 21,81 11,69

Сравнивать эти модули с какими-нибудь ESP стоимостью три копейки за пучок, конечно, в целом бессмысленно — но не стоит забывать, что тут у нас имеется вполне неплохой микропроцессор на ядре Cortex-M4 c офигенным объемом памяти, сравнимый с теми же STM32 F1 и F3.

Но… В случае с CC3200 поджидает довольно неприятная засада — ядро Cortex-M4 не очень эффективно работает, когда исполняемый код находится в SRAM, каждая команда выполняется не за один, а за два такта. Скажу сразу, что я возлагал довольно большие надежды на CC3220SF, увидев в даташите слова про «1-Mb XIP Flash» — так что первым делом, скачав SDK, я решил… нет, не поморгать светодиодиком, а прогнать парочку бенчмарков.

Для встраиваемых микропроцессоров принято использовать писькомерки Dhrystone и CoreMark. Первая — довольно древняя, но по ее поводу имеется Application Note от ARM, регламентирующий использование оптимизаций компилятора (если коротко — запрещено все). Второй бенчмарк местами превращается в соревнование «кто круче расставит флаги оптимизаций», и его результаты крайне желательно приводить вместе с параметрами компилятора. Итак, первая табличка — Dhrystone и CoreMark на СС3200 и CC3220SF (код выполняется из флеш-памяти), компилятор IAR 8.10.1, параметры оптимизации для CoreMark приведены в заголовке.

Dhrystone, DMIPS CoreMark, -Ol CoreMark, -Om CoreMark, -Ohs
CC3200 46,8 71,05 87,95 135,69
CC3220SF, код в флеш-памяти 27,4 47,14 57,50 86,88

Ничего себе! — сказал я и офигел от результатов. Спрашивается, за что платили? Зачем мне огромная, по меркам младших Cortex, память, когда производительность процессора падает в три раза относительно «номинальной»? Cortex-M4 теоретически должен выдавать около 1,25 DMIPS/MHz и около 3 CoreMark/MHz (в зависимости от компилятора). Результаты CC3200 предсказуемые, но еще более-менее терпимые. Что же касается CC3220SF — то освободив SRAM для данных, мы получаем проигрыш в производительности в полтора раза. Зачем такая радость?

Я прогнал еще один вариант бенчмарка — на этот раз без использования флешки. Результат оказался аналогичен CC3200 — вот еще одна строчка в таблицу выше:

Dhrystone, DMIPS CoreMark, -Ol CoreMark, -Om CoreMark, -Ohs
CC3220SF, код в SRAM 46,5 71,02 87,76 135,50

В такой конфигурации, разумеется, CC3220SF теряет все преимущества перед своими «младшими» версиями без флеш-памяти. А теперь давайте вернемся к табличке с ценами и зададим себе вопрос — «А если нет разницы, зачем платить больше»? Мегабайт медленной флеш-памяти, в целом не особо нужной, стоит 1,5$.

Короче говоря, я ожидал большего.

UPD На данный момент придерживаюсь мнения, что флеш-память в CC3220SF неправильно сконфигурирована — так как в микроконтролерах серии MSP432 она устроена похожим образом, и буферизацию чтения необходимо включать «вручную».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *