Silicon laboratories что это за программа
Silicon Labs включает Z-Wave в свой арсенал радио-технологий
На прошлой неделе завершилась сделка между Silicon Labs и Sigma Designs о покупке бизнеса Z-Wave. По сути, все наработки, сервисы и сотрудники Sigma Designs, связанные с Z-Wave (а у Sigma Designs было ещё два направление: PLC чипы и медиа чипы для STB приставок) перешли в SiLabs.
Сделка готовилась год, а стоимость сделки составила около 240 миллионов долларов.
Зачем Silicon Labs нужен Z-Wave?
Даже неспециалистам видно, что Z-Wave стал самым популярным протоколом в сегменте DIY и стремительно врывается на рынок охранных систем. Достаточно сравнить, как выглядел CES в этом году и три-четре года назад: если три года назад «островки» Z-Wave и ZigBee, стоящие друг напротив друга, были примерно одного размера, вводя несчастных потребителей в ступор своими похожими предложениями, то в этом году ZigBee почти не было видно, а «островок» Z-Wave напоминал большой город.
Это не означает, что ZigBee перестали использовать, или что он уходит с рынка. Просто Sigma Designs и Z-Wave Alliance смогли сделать из протокола Z-Wave самостоятельный бренд, узнаваемый потребителем в США и Европе. В то же время едва объединённые альянсом производители ZigBee устройств такую цель, похоже, даже и не ставили, и используют протокол как просто транспорт в своих решениях, не вкладываясь в маркетинг протокола и развитие экосистемы ZigBee.
Даже на московской Hi-Tech Building в 2017 году логотип Z-Wave пестрил с каждого третьего стенда, а ZigBee не был виден вообще, хотя сама технология не менее популярна.
С уверенностью можно сказать, что Sigma Designs смогла собрать вокруг Z-Wave множество сильных производителей, образующих вместе мощную экосистему с высочайшим уровнем совместимости между собой.
Являясь одним из лидеров среди производителей чипов для IoT, SiLabs понимают, как развивать протоколы, как привлекать и обучать специалистов для работы со своими чипами. Так же у Silicon Labs есть видение «надпротокольного» решения, сочетающего в себе сразу несколько технологий в одном чипе.
Z-Wave отлично дополнит Wi-Fi и Bluetooth, и встанет рядом с фактически несостоявшимся Thread и уходящим в чистый транспорт ZigBee.
В конце концов, дать производителям возможность одновременно, да ещё и прозрачным образом использовать и Z-Wave, и ZigBee — это отличная идея!
Многие скажут, а зачем им Z-Wave. Есть же BLE, который скоро станет круче. Есть 6LowPAN и NB-IoT, которые придут и всех убьют на этом рынке. Но это всё про будущее — мы видели уже не раз, как появление крутого стандарта либо не приводит к появлению новых продуктов вообще (Thread-устройства, где вы?) или требует 2-3 года до появления первых 10-15 устройств и ещё два до появления целой линейки (так происходит, например, с HomeKit). За это время и сам Z-Wave изменится. Происходит встречное движение: Z-Wave повышает дальность и скорость, уменьшая и так низкое энергопотребление, и скоро окажется в том же сегменте, куда двигаются Bluetooth LE и иже с ними из класса более энергозатратных, но быстрых протоколов.
Для тех, кто дочитал до этого места, но ещё не знает, что такое Z-Wave, советую прочитать хоть и старую, но ещё актуальную статью Немного о технологии Z-Wave.
Как смена собственника повлияет на Z-Wave?
Для Z-Wave событие это однозначно позитивное. SiLabs не из тех компаний, которые покупают, чтобы развалить. Уверен, мы уже в 2018 году увидим первые анонсы, а к середине 2019 уже и сами чипы «радио-комбайнов», включающих несколько протоколов сразу под куполом общей SDK.
Последние несколько лет у Сигмы откровенно не хватало ресурсов на развитие протокола, на внедрение, было недостаточно FAE. Слухи говорят, что SiLabs это точно исправит — с точки зрения масштабов Sigma Designs новый отдел Z-Wave получит почти неограниченные ресурсы в свои руки и множество FAE для работы с клиентами.
С точки зрения надёжности это тоже важный шаг. SiLabs — это не просто более надёжный и опытный производитель по сравнению Sigma Designs. SiLabs наверняка сможет более удачно договорится с игроками рынка о multiple source производстве чипов. Некоторое время Sigma Designs сотрудничала с японской Mitsumi, но потом Z-Wave опять стал single source чипом, что стало препятствием для некоторых проектов крупных телеком-операторов.
Вместе с переездом на платформу SiLabs SDK и инструменты разработчика стали доступны любому зарегистрировавшемуся. Не только словами, но и делом SiLabs показывает изменение в векторе развития Z-Wave.
Где почитать?
Все ресурсы Sigma Designs уже переехали на площадку Silicon Labs.
Протокол — не самое главное
До сих пор Z-Wave развивался как протокол-бренд. Начиная с 2014 года это было целеноправленной политикой Sigma Designs: все устройства на чипах Z-Wave обязаны были быть сертифицированными на совместимость и должны были носить гордый логотип Z-Wave или Z-Wave Plus как на самом устройстве, так и на коробке. Чипы Z-Wave использовать кроме как для создания устройств Z-Wave тоже стало невозможным.
Очевидно, это добавило узнаваемости Z-Wave и «набило» цену активу Sigma Designs, ставшему вскоре основным.
Будет ли Silicon Labs проводить ту же политику? Не факт. Строгие ограничения использования чипа мешают самому производителю продавать эти самые чипы. Возможно, Silicon Labs даже сочтёт возможным открыть ещё не открытые части протокола (см. Протокол Z-Wave становится открытым). Они же понимают, что важен не сам протокол, а решения на нём.
Кстати, интересно, что примерно в то же время компания Ring, которая помимо звонков-домофонов делает решение на Z-Wave и является одним из основных клиентов Sigma Designs, была куплена Amazon за 1 миллиард. Это к тому, что законченное консьюмерское решение, конечно, более ценно, чем технология, на которой оно основано.
Приобщение к миру USB-устройств на примере микроконтроллеров от Silicon Laboratories
Устройства от Silicon Laboratories не пользуются широкой популярностью в любительских кругах, им далеко до таких флагманов, как Atmel. Однако у них есть и вполне доступные простому смертному микроконтроллеры основных линеек в корпусе TQFP, и стартовые комплекты USB ToolStick (о чем совсем недавно упоминалось на хабре). Я сам начал свое знакомство с микропроцессорной техникой, работая с «силабсами», и вполне успешно.
В данной статье я расскажу, каким образом можно организовать связь компьютера с МК, используя USB-интерфейс, и как Silabs попытались сделать это простым для разработчика.
В качестве испытуемого будем использовать плату С8051F320DK, с микроконтроллером соответственно F32x серии, поддерживающей USB аппаратно, и Keil’овскую среду разработки uVision4.
Перед тем, как начинать копать в сторону реализации связи по USB необходимо определиться с некоторыми базовыми аспектами протокола: какое место занимает устройство в топологии (хост или ведомое устройство) и какой характер будет иметь информация, передаваемая по интерфейсу.
Создание USB совместимого HID-устройства типа джойстик
Начинаем с дескриптора устройства
Для упрощения задачи составления дескриптора можно воспользоваться программой, лежащей на www.usb.org (HID Descriptor Tool). В комплекте с программой предоставляются примеры конфигураций некоторых HID-устройств, которые можно корректировать под свою задачу или создавать собственное HID-устройство.
На этом описание джойстика заканчивается и нужно подготовить данные для передачи в PC.
Процедуры передачи данных
Находим в примере следующий код:
void IN_Report(void)<
IN_PACKET[0] = VECTOR;
IN_PACKET[1] = BUTTONS;
// point IN_BUFFER pointer to data packet and set
// IN_BUFFER length to transmit correct report size
IN_BUFFER.Ptr = IN_PACKET;
IN_BUFFER.Length = 2;
>
В этой процедуре идет составление отправляемого пакета, который после через хитрый указатель (на самом деле это просто структура из указателя и его длины) и передается нашим устройством. Главное аккуратно составить пакет, о чем нам и намекает комментарий, а дальше уже с ним сделают все без нашего участия.
Теперь расскажу о том, как и откуда мы берем переменные VECTOR и BUTTONS (обе, к слову, имеют тип unsigned char размером в байт).
Глобальной переменной VECTOR присваиваются значения с АЦП во время возникновения прерывания от него:
void ADC_Conver_ISR(void) interrupt 10
<
AD0INT = 0;
VECTOR = ADC0H;
>
Глобальная переменная BUTTONS аналогично изменяет значение в зависимости от нажатия кнопок. Кнопки опрашиваются по прерыванию от таймера. Таймер настраивайте в соответствии с личными предпочтениями.
void Timer2_ISR (void) interrupt 5
<
P2 &=
if ((P2 & Sw1)==0) // Проверка нажатия кнопки #1
<
// pressed
BUTTONS = BUTTONS | (1
Дескриптор имени HID-устройства
Напоследок можем скорректировать строковые данные, чтобы устройство имело то название, какое мы хотим (в моем примере «JOYSTICK-HABR»).
Ищем строковый дескриптор String2Desc, переписываем
#define STR2LEN sizeof («JOYSTICK-HABR») * 2
Идентификация HID-устройства
После компиляции проекта и программирования микроконтроллера можно подключить устройство к USB-порту. Хост определяет, что устройство принадлежит к HID классу и передает управление устройством соответствующему драйверу.
Теперь в Windows идем в Панель управления->Игровые устройства и видим там нашего пассажира. Смотрим свойства и проверяем функциональность.
Низкая скорость передачи является главным ограничением HID-варианта построения устройства. Максимально возможная скорость передачи данных при такой организации обмена составляет 64 Кбит/сек. Такой показатель в сравнении с 12 Мбит/сек полной скорости USB-шины выглядит минусом HID-технологии в вопросе выбора конкретной USB-реализации. Однако для многих задач коммуникации указанной скорости вполне хватает и HID-архитектура как специализированный инструмент занимает достойное место среди способов организации обмена данными.
Вообще говоря, HID-устройства легки в реализации практически на любом МК с поддержкой USB. Как правило, достаточно одного работающего примера от разработчиков, корректируя который можно получать любой требуемый функционал.
Создание полноценного USB-устройства с использованием инструментария Silabs USBXpress
Но вот наступает момент, когда вам необходимо использовать свой протокол работы с устройством на МК. При этом хотелось бы передавать много данных на большой скорости, и делать все это с помощью своего ноутбука, в котором много USB и ни одного COM, да еще и ваше устройство должно быть не больше спичечного коробка, и лепить на плату USB-UART на микросхеме FT232RL нет никакой возможности.
Тут-то ребята из Silabs и решили облегчить всем жизнь и показать “дорогу в будущее”, без тяжелого ломанья зубов об написание собственных дров и прошивок.
USBXpress Development Kit – это законченное решение для МК и хоста (PC), обеспечивающее простую работу с протоколом USB с помощью высокоуровневого API для обоих сторон. Не требуется особых знаний ни самого протокола USB, ни написания драйверов. Так пишут силабовцы в своем гайде.
Кстати о Programmer’s Guid: занимая всего 30 страниц, он крайне прост и доходчив. Примеры же лично мне не нравятся, часто встречаются очень кривые места, программы же под PC вообще лучше не смотреть, крайне нечитабельны.
USBXpress DK предоставляется к микроконтроллерам линеек C8051F32x, C8051F34x и для CP210x (USB-to-UART Bridge Controller). Библиотека USBXpress включает в свой состав библиотеку нижнего уровня, драйверы USB для ПК и DLL-библиотеку для разработки приложений на верхнем уровне. Ну и, конечно же, набор документации и примеров.
В библиотеке реализована передача данных только в режиме BULK. При использовании всех функций библиотеки, их реализация займет всего 3 Кбайта Flash-памяти микроконтроллера.
Firmware
Написание USB-дескриптора
В отличие от HID с его хитро формализованной структурой тут все просто
code const UINT USB_VID = 0x10C4;
code const UINT USB_PID = 0xEA61;
code const BYTE USB_MfrStr[] = <0x1A,0x03,'S',0,'i',0,'l',0,'a,0,'b,0,'s,0>;
code const BYTE USB_ProductStr[] = <0x10,0x03,'U',0,'S',0,'B',0,'X',0,'_',0,'A',0,'P',0>;
code const BYTE USB_SerialStr[] = <0x0A,0x03,'H',0,'A',0,'B',0,'R',0>;
code const BYTE USB_MaxPower = 15;
code const BYTE USB_PwAttributes = 0x80;
code const UINT USB_bcdDevice = 0x0100;
С VID, PID и именами думаю все понятно, плюс еще можно задавать максимальный ток параметром MaxPower (макс.ток = _MaxPower*2), PwAttributes — параметр отвечающий за удаленный wake-up хоста, и bcdDevice — номер релиза устройства.
Нюанс инициализации устройства и USB на борту
0x40; // Disable Watchdog timer
USB_Clock_Start(); // Init USB clock *before* calling USB_Init
USB_Init(USB_VID,USB_PID,USB_MfrStr,USB_ProductStr,USB_SerialStr,USB_MaxPower,USB_PwAttributes,USB_bcdDevice);
Initialize();
USB_Int_Enable();
.
Здесь, как требует комментарий, в первую очередь необходимо инициализировать тактовый генератор для USB перед самой его инициализацией, только потом провести остальные стартовые операции для МК — Initialize(); — который настраивает порты, таймер и АЦП; затем разрешаем прерывания от USB.
Обработка входящих данных и формирование исходящего пакета
Вот подобрались к самому главному
//. продолжение main
while (1)
<
if (Out_Packet[0] == 1) Led1 = 1;
else Led1 = 0;
if (Out_Packet[1] == 1) Led2 = 1;
else Led2 = 0;
In_Packet[0] = Switch1State;
In_Packet[1] = Switch2State;
In_Packet[2] = Potentiometer;
In_Packet[3] = Temperature;
>
// конец main
>
Out_Packet – пакет, принятый от хоста;
In_Packet — пакет, отправляемый хосту;
Суть ясна, МК постоянно обновляет отправляемый пакет и считывает статус полученного.
Обработка прерываний
Теперь в 2-х словах о том, откуда получаем значения в отправляемый пакет. Как и в примере с HID, состояния кнопок получаем по прерываниям от таймера, а значения АЦП и термометра — по прерываниям от АЦП.
Вот здесь один тонкий момент — при инициализации АЦП настраиваем его так, чтобы конвертирование значений происходило по переполнению таймера (того же, который мы используем для кнопок), а само же прерывание от АЦП возникает по завершению конвертирования. И тут кроме получения значений преобразователя в конце процедуры вызываем API функцию
Block_Write(In_Packet, 8)
которая и отправляет собранные данные на компьютер.
Получение команд от компьютера происходит в процедуре обработки прерываний от USB:
void USB_API_TEST_ISR(void) interrupt 16
<
BYTE INTVAL = Get_Interrupt_Source();
if (INTVAL & DEV_CONFIGURED)
<
Initialize();
>
>
Этот момент подробно расписан в Programmer’s Guid. Суть в том, что вызывается API-функция Get_Interrupt_Source(), возвращающая код причины возникновения API прерывания. Далее код анализируется и выполняется необходимое действие.
Программ на PC
Разбирать программу для компьютера я не буду. Силабовцы предоставили примеры на Visual Basic и на C, но, даже не заглядывая в исходники, подключить библиотеку в используемой вами среде разработки и прочитать пару страниц о функциях сложности вызвать не должно.
Поэтому я воспользуюсь уже скомпилированной программой из примера.
Итак, компилируем проект для МК, зашиваем, устанавливаем универсальные драйвера для USBXpress и подключаем отладочную плату. Система определит новое устройство и установит для него драйвера.
Посмотрим после установки, что творится в диспетчере устройств Винды:
Теперь запускаем программу:
Видим, что она правильно нашла устройство.
Все, теперь можно тут потыкать кнопки, поморгать диодами, погреть МК руками, увидеть как растет температура.
Заключение
В целом создание USB устройства с помощью библиотек USBXpress оказалось более быстрым и прозрачным процессом, нежели используя HID-архитектуру. Да и скорость будет однозначно выше. Наиболее тонким местом является то, что библиотека закрыта, и узнать насколько надежным является это решение невозможно, к тому же доступен только BULK режим передачи данных.
Инвестидея: Silicon Laboratories, потому что интернет вещей
Сегодня очередная спекулятивная идея: купить акции производителя электроники Silicon Laboratories с расчетом на то, что основные потребители продукции компании завалят ее заказами в ближайшие годы.
Потенциал роста: 10% годовых в долларах.
Срок действия: 5 лет.
Почему акции могут вырасти: основные продажи у Silicon Laboratories приходятся на сектор интернета вещей, который будет расти бешеными темпами.
Как действуем: ждем, пока P / E компании станет меньше хотя бы на треть, а лучше — раза в два.
Без гарантий
Наши размышления основаны на анализе бизнеса компании и личном опыте наших инвесторов, но помните: не факт, что инвестидея сработает так, как мы ожидаем. Все, что мы пишем, — это прогнозы и гипотезы, а не призыв к действию. Полагаться на наши размышления или нет — решать вам.
На чем зарабатывает компания
Silicon Laboratories делает разную сложную электронику, но свыше 75% выручки приходится на секторы интернета вещей и коммуникаций.
Согласно годовому отчету, только 17% продаж приходится на США. На КНР приходится чуть меньше 40%, прочие страны бухгалтерский отдел лаконично охарактеризовал как «остальной мир».
Что вообще такое интернет вещей и почему это будет двигать рост прибыли компании
Простым языком интернет вещей — это когда множество электронных устройств подключены к интернету и могут взаимодействовать друг с другом. В практическом смысле это умные дома, браслеты, считающие калории и пройденные шаги, умные сети — когда счетчики воды и электричества сами отсылают информацию куда надо и вам не приходится это делать самому — и такие скучные вещи, как промышленные системы, которые считывают информацию со всех подключенных на заводе устройств.
Собственно, это направление не просто считается перспективным — оно такое и есть: рынок устройств и программ в этой отрасли растет серьезными темпами. Таким образом, Silicon Laboratories работает на развивающийся рынок и потребность в ее устройствах постоянно увеличивается.
Что еще хорошего у компании
Бухгалтерия в порядке. Согласно последнему отчету, на счете у компании есть около 250 млн долларов — если считать деньги вместе с задолженностями контрагентов. А сумма всех долгов самой компании составляет 550 млн долларов. Это очень хорошее соотношение по сравнению с конкурентами-коллегами из Microchip, у которых сумма всех долгов превышает суммы на счетах в 10 раз.
Опять-таки у компании очень капиталоемкий бизнес, поэтому объявленная астрологами ФРС эпоха низких ставок благоприятна для компании: она может занимать под очень низкий процент.
Что может помешать
Неприлично высокий ценник. P / E компании составляет какие-то невероятные 152. Даже по меркам остальных технологических бизнесов это перебор: упомянутый выше Microchip, например, стоит куда меньше — P / E на уровне 62. С такой стоимостью Silicon Laboratories прямая дорога к коррекции.
Доходность бизнеса хромает. Выручка компании стабильно растет уже не первый год, а вот итоговая прибыль топчется на месте. Отсюда такой сумасшедший P / E : компанию оценивают сильно выше того уровня прибыльности, на котором она находится. Последний квартал вообще вышел убыточным. Понятно, что компания инвестирует в развитие производства в перспективном секторе, — и хорошо, что она инвестирует собственные средства. Но хотелось бы, чтобы актуальные доходы компании лучше отражали ее безусловно высокий потенциал.
Что в итоге
Перспективность бизнеса не оправдание для завышенной стоимости. Относительно небольшой долг Silicon Laboratories и блестящие перспективы сектора интернета вещей — это очень хорошо, но я рекомендую инвестировать в компанию, только если ее P / Е будет в районе 50—75. Понятно, что чем дешевле, тем лучше, но для технологического бизнеса высокая стоимость — это нормально, по крайней мере пока технари у руля таких бизнесов продолжают успешно убеждать инвесторов и покупателей, что «ценник у нас соответствует качеству, а вы лучше покупайте, у нас тут будущее сегодня».
P / E у Silicon Laboratories может снизиться в результате следующих процессов: либо стоимость акций сильно упадет, либо продажи вырастут во много раз в скором времени. В любом случае соотношение стоимости акции и прибыли на нее здесь ключевой момент, поэтому называть конкретную цену не хотелось бы: вдруг у компании и вправду случится такой дикий рост продаж и доходности, что это соотношение изменится.
У вас есть инвестидея? Расскажите, во что, по вашему мнению, стоит вложить свои кровные.
USB Toolstick, или программирование микроконтроллеров «для самых маленьких»
Приобщаясь к описанному выше направлению постов, предлагаю вашему вниманию ряд девайсов, позволяющих совершенно безболезненно начать процесс изучения и программирования совершенно реальных чипов.
Итак, наименее искушенным в области электроники неофитам в качестве средства для самого быстрого старта поспешу отрекомендовать Silabs Toolstiсk Evaluation Kit, стоящий 14.80 долларов, например, в питерском «Электроснабе».
Внешне устройство очень напоминает обычную USB-флэшку. Все что нужно для работы с девайсом: подключить его к компьютеру и установить находящиеся на прилагающемся диске драйверы и интегрированную среду разработки.
В схему устройства включены два микроконтроллера: вспомогательный С8051F321 (чип с интегрированным usb-интерфесйом), осуществляющий программирование и внутрисхемную отладку по интерфейсу USB второго микроконтроллера — С8051F300, одного из самых недорогих чипов фирмы Silabs, обладающего, тем не менее, достаточной функциональностью для многих стандартных микроконтроллерных решений.
Кроме того, на плате размещены 4 светодиода: светодиод PWR, отображающий наличие питания по USB; светодиод RUN/STOP, отображающий активность процесса внутрисхемной отладки; два пользовательских светодиода, подключенных у цифровым портам ввода-вывода общего назначения микроконтроллера C8051F300. Собственно с ними и предлагается «поиграть» начинающему разработчику.
Замечу, что Silabs предлагает довольно подробное (для функционала данного устройства) руководство.
После установки софта пользователь получает возможность создавать в среде проекты и прямо из среды программировать установленный на плате микроконтроллер C8051F300 на ассемблере и С, а также осуществлять его внутрисхемную отладку (останавливать работу программы, ставить breakpoint-ы, изучать состояние памяти, регистров и отдельных переменных и т.д.)
Кроме того, доступны готовые исходники на C в Application note’s на сайте Silabs, которые можно разбирать для ускорения процесса обучения.
В своей организации студентам-старшекурсникам из технических ВУЗов, направленным к нам на прохождение практики, я часто выдавал на неделю такой девайс. Обычно результаты не заставляли себя долго ждать.
Однако функциональности данного устройства становится недостаточно для более продвинутых задач. Изучив вдоль и поперек Silabs Toolstiсk Evaluation Kit, пора переходить на Silabs Toolstick Base adapter и Silabs Toolstick Daughter card с выбранным Вами микроконтроллером. Полный список отладочный устройств — на сайте производителя.
Базовый адаптер реализует функции USB-программатора/внутрисхемного отладчика, а также содержит индикацию питания и процесса отладки.
На дочерней плате микроконтроллера C8051F311 предоставлен доступ ко всем выводам микроконтроллера (зона Full Pin Access на плате). Это позволяет подключать к чипу любые дополнительные электрические цепи. (Можно, например, поуправлять электромотором или нагрузкой «пощелкать» через реле, только желательно через гальваническую развязку.) На плате установлена кнопка, подключенная к одному из выводов микроконтроллера. Кроме того, на плате присутствует потенциометр, подключенный ко входу аналого-цифрового преобразователя.
С помощью такого решения можно легко и непринужденно изучить весь функционал выбранного Вами кристалла.
Дочерние платы для различных микроконтроллеров могут различаться между собой. Например, дочерняя плата чипа C8051F321, содержащего интерфейс USB, содержит разъем microUSB.
Описанный отладочный комлект позволяет быстро превратить любой компьютер в лабораторию по изучению микроконтроллеров. Использование usb-удлинителя позволит сделать этот процесс еще комфортнее.
Отмечу, что Silicon Laboratories — не единственный производитель подобных отладочных средств. Выше приведено изображениe отладочного устройства компании Texas Instruments EZ430-F2013, содержащего микроконтроллер популярного семейства MSP430.
Напоследок, желаю всем больших успехов в области изучения и программирования новых микроконтроллеров в частности и проектирования качественной радиоэлектронной аппаратуры в целом!