Silicon labs usb debug adapter софт для программирования
Трудности, связанные с обслуживанием водителя
Silicon Laboratories USB Adapter от Silicon Laboratories подвержены поврежденным и устаревшим драйверам устройств. Водители будут работать в один прекрасный день, и по разным причинам внезапно бросили работу на следующий день. Не волнуйтесь, потому что эти проблемы с ПК, вероятно, будут исправлены после обновления драйверов USB-адаптер.
Часто трудно найти правильное решение аппаратной ошибки Silicon Laboratories USB Adapter, посетив веб-сайт Silicon Laboratories. Несмотря на опыт поиска, установки и ручного обновления драйверов Silicon Laboratories USB Adapter, задача будет занимать много времени и очень надоедлительной. Неправильная загрузка драйвера может привести к проблемам с программным обеспечением и нанести ущерб функциональности компьютера.
Для времени и усилий, связанных с процессом обновления драйверов, мы настоятельно рекомендуем использовать утилиту драйверов. Расширенное средство обновления драйверов гарантирует наличие всех новых версий драйверов, подтверждает совместимость обновлений и обеспечивает резервную копию текущих драйверов. Вы уверены, что можете вернуться к более ранней версии, если вы столкнулись с некоторыми проблемами с вашим драйвером.
Приобщаясь к описанному выше направлению постов, предлагаю вашему вниманию ряд девайсов, позволяющих совершенно безболезненно начать процесс изучения и программирования совершенно реальных чипов.
Итак, наименее искушенным в области электроники неофитам в качестве средства для самого быстрого старта поспешу отрекомендовать 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, которые можно разбирать для ускорения процесса обучения.
- изучить интегрированную среду разработки фирмы Silicon Laboratories
- изучить типовой набор команд микропроцессоров C8051Fxxx c 8051-архитектурой
- написать программы для C8051F300 на ассемблере и C
- изучить принцип работы встроенного коммутатора ресурсов Crossbar
- изучить работу конфигурационного мастера для автоматической инициализации микроконтроллерной периферии
- разобраться с настройкой цифровых портов общего назначения и принципами работы с ними
- изучить систему прерываний
- изучить принципы работы и поэкспериментировать со встроенными таймерами
- разобраться с широтно-импульсной модуляцией и реализовать ее на базе встроенных таймеров
В своей организации студентам-старшекурсникам из технических ВУЗов, направленным к нам на прохождение практики, я часто выдавал на неделю такой девайс. Обычно результаты не заставляли себя долго ждать.
Однако функциональности данного устройства становится недостаточно для более продвинутых задач. Изучив вдоль и поперек 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.
Напоследок, желаю всем больших успехов в области изучения и программирования новых микроконтроллеров в частности и проектирования качественной радиоэлектронной аппаратуры в целом!
Микроконтроллеры семейства EFM8 Bee с каждым днем становятся всё популярнее и уже накопился список частых вопросов, на которые приходится регулярно отвечать. Решил разместить их здесь, чтобы люди, которые стесняются задавать вопросы инженерам компании «ЭФО», могли найти ответы через поисковик.
Для читателей, кто не знаком с микроконтроллерами EFM8 Bee, вкратце изложу основные особенности этих кристаллов, ответив тем на уже наверняка возникший вопрос: Чем особенны микроконтроллеры EFM8 Bee?
Микроконтроллеры EFM8 Bee представлены четырьмя семействами «пчел»: Busy Bee, Sleepy Bee, Universal Bee и Laser Bee, каждая из которых имеет свои отличительные особенности. В основу
EFM8 Bee заложено процессорное ядро CIP-51 с системой команд 51-го процессора, в отличие от которого более 70% команд выполняются за 1-2 такта системной тактовой частоты — такое же как в известных микроконтроллерах C8051Fxxx.
Не вдаваясь в хитросплетения брендинга и аналогии с пчелами, рассмотрим ключевые особенности этих кристаллов и их технические характеристики:
1. Серия EFM8 Busy Bee
Самая бюджетная серия кристаллов, где ключевой акцент ставится на стоимость микросхем. Стоимость самого дешевого микроконтроллера — 0,21$ без учета НДС (0,25$ с учетом НДС) на проекты с годовым объемом от 10 тыс. шт.
- максимальная производительность до 50 MIPS на тактовой частоте до 50 МГц;
- Flash-память: до 64 кБайт;
- ОЗУ: до 4352 Байт;
- линий ввода/вывода общего назначения: до 29;
- АЦП: 12 бит с максимальной частотой дискретизации до 350 тыс. отсчетов в сек.;
- до четырех 12-разрядных ЦАП;
- понижающий регулятор напряжения 5В > 3,3В.
- процессорное ядро с производительностью до 25 MIPS на тактовой частоте 25МГц;
- Flash-память 2 кБайта;
- ОЗУ 256 Байт;
- два встроенных тактовых генератора на частоты 24,5 МГц и 80 кГц;
- интерфейс SMBus / I2C;
- интерфейс SPI;
- интерфейс UART;
- 16 линий ввода/вывода общего назначения;
- 3-канальный программируемый массив счетчиков;
- четыре 16-битных таймера/счетчика;
- два аналоговых компаратора со встроенным ЦАП для гибкой установки порогов;
- 12-разрядный АЦП с мультиплексором на 15 каналов, источником опорного напряжения и датчиком температуры;
- 16-разрядный блок CRC;
- встроенный загрузчик по UART.
2. Серия EFM8 Sleepy Bee
Серия кристаллов, ориентированная на приложения с батарейным питанием. Имеет сходные параметры энергопотребления с 32-разрядными микроконтроллерами EFM32 этого же производителя, но не реализованы «интеллектуальные» режимы работы и значительно меньше периферии. Выгода EFM8 Sleepy Bee состоит в меньшей стоимости кристаллов и более простом их освоении.
- максимальная производительность до 25 MIPS на тактовой частоте до 25 МГц;
- аппаратный контроллер сенсорных клавиатур;
- ток потребления в активном режиме: 88 мкА/МГц на тактовых частотах от 14 МГц;
- ток потребления в режиме сна с часами реального времени (тактирование от внутреннего генератора): 0,3 мкА при 1,8В и 0,5 мкА при 3,6В;
- ток потребления в режиме сна с пробуждением от сенсорной кнопки: 1 мкА (среднее значение);
- время пробуждения не превышает 2 мкс при использовании внутреннего генератора.
Младшая микросхема EFM8SB10F2G-A-QFN20, аналогичная по «начинке» минимальному кристаллу из серии EFM8 Busy Bee, предлагается по цене 0,32$ + НДС.
Более функциональная и в более удобном для многих корпусе QSOP24 микросхема EFM8SB10F8G-A-QSOP24 с 8 кБайт Flash-памяти и 512 Байт ОЗУ предлагается по цене 0,48$ + НДС
Цены действительны для проектов с годовым потреблением порядка 10 тыс. шт. в год.
3. Серия EFM8 Laser Bee
Серия кристаллов EFM8 Laser Bee ориентирована на приложения с аналоговыми измерениями — кристаллы этой серии снабжены 14-разрядным АЦП, который обеспечивает типовое значение сигнал/шум + искажения (SNDR) на уровне 72 дБ, общие гармонические искажения (THD) -74 дБ и динамический диапазон, свободный от гармоник (SFDR) 74 дБ. Помимо этого, кристаллы EFM8 Laser Bee применимы в приложениях, где требуется недорогой микроконтроллер с высокой рабочей тактовой частотой.
- максимальная производительность до 72 MIPS на тактовой частоте до 72 МГц;
- 14-разрядный АЦП последовательного приближения с частотой дискретизации до 900 тыс. отсчетов в секунду с возможностью организации непрерывного сбора данных по всем каналам АЦП без участия процессорного ядра;
- два либо четыре 12-разрядных ЦАП с возможностью генерации комплементарных синусоидальных сигналов и сигналов произвольной формы;
- два аналоговых компаратора с перестраиваемым соотношением «время реакции»/«энергопотребление» и гибкой схемой выбора входных сигналов;
- встроенный калиброванный датчик температуры, обеспечивающий в базовом исполнении измерения с погрешностью в пределах ±3°C, а с применением описанных производителем методик – в пределах ±0,2°C;
- диапазон рабочих температур всех кристаллов в серии от -40°C до +105°C.
В «минимальной комплектации» представлена микросхема EFM8LB10F16E-B-QFN24, которая имеет 16 кБайт Flash-памяти и 1.25 кБайт ОЗУ. Её цена составляет 0,54$ + НДС. Более универсальный вариант EFM8LB10F16E-B-QFP32 в корпусе QFP32 предлагается по цене 0,70$ + НДС.
Наиболее функциональный вариант из серии — EFM8LB12F64E-B-QSOP24 — с 64 кБайтами Flash-памяти, 4.25 кБайтами ОЗУ и четырьмя ЦАП доступен по цене 0,94$ + НДС.
Цены из расчета на 10 тыс. шт. в год.
4. Серия EFM8 Universal Bee
Название серии происходит из названия интерфейса USB, которым снабжены кристаллы этой серии.
- интерфейс USB Device с режимом пониженного энергопотребления;
- стабильный генератор тактовой частоты, обеспечивающий работу интерфейса USB без внешнего кварца во всем диапазоне рабочих температур и напряжений питания;
- регулятор напряжения 5 В > 3,3 В для обеспечения работы устройства от шины USB без использования дополнительного регулятора напряжения;
- функцию распознавания подключения к зарядному устройству согласно спецификации USB-BCS 1.2.
Устройство с минимумом внешних компонентов (без внешнего кварца и регулятора напряжения) можно построить на микросхеме EFM8UB10F8G-C-QFN20 ценой 0,43$ + НДС, которая помимо интерфейса USB снабжена 8 кБайтами Flash-памяти, 2304 Байтами ОЗУ, 12-разрядным АЦП и типовыми блоками микроконтроллера, которые есть и в других сериях EFM8.
Если говорить обо всех микроконтроллерах EFM8 Bee, то в целом можно отметить, что «начинка» кристаллов всех серий достаточно насыщенна, в чем наглядно можно убедиться в сводной таблице под спойлером.
Сводная таблица EFM8
Корпуса с одинаковым названием (QFN24 и QFN32) представлены в разных размерах — отмечено отдельными цветами.
Ну вот, пожалуй, и сложился ответ на первый вопрос «Чем особенны микроконтроллеры EFM8 Bee?» и можно приступить к ответам на типовые вопросы разработчиков, кто решил применить кристаллы этого семейства в своих разработках.
Почему EFM8 значительно дешевле C8051Fxxx, продолжением которых кристаллы EFM8 являются?
Архитектурно EFM8 продолжают линейку C8051Fxxx, но производятся по проектным нормам — 0,18 мкм, т.е. меньшей чем C8051Fxxx, большинство которых производится по технологии 0,35 мкм. Тем не менее, по новым проектным нормам выпускаются серии C8051F7xxx, C8051F8xx, C8051F9xx, цены на которые ниже аналогичных в этом семействе.
Также низкая цена на кристаллы EFM8 является частью стратегии производителя, который позиционирует данное семейство для бюджетных задач.
С чего начать?
Начать освоение EFM8 Bee можно с этапа оценки ключевых возможностей выбранного микроконтроллера. Это можно осуществить на фирменной отладочной плате, которая выпускается для каждой серии EFM8. Стоимость этих плат колеблется в диапазоне от 45$ до 55$ c учетом НДС.
На каждой плате распаян старший микроконтроллер из семейства и реализован эмулятор/программатор, обеспечивающий полный доступ ко всем ресурсам этого микроконтроллера.
В качестве программного средства для большинства этапов разработки с использованием EFM8 и их фирменных отладочных плат оптимально использовать интегрированную платформу разработки Simplicity Studio. Обзор её компонентов представлен в видео материалах на YouTube.
- загрузить на плату любой из готовых демонстрационных примеров, созданных для демонстрации отдельных периферийных блоков и режимов работы кристалла;
- использовать готовый пример в исходных кодах, модифицировав требуемым образом; с использованием графического конфигуратора или без него.
Какую среду разработки использовать? Есть ли бесплатный компилятор языка С?
Предлагаемый производителем инструмент – упомянутая выше платформа разработки Simplicity Studio. После просмотра видео демонстраций начинать её освоение значительно проще.
На день написания статьи доступны для скачивания на сайте производителя две версии Simplicity Studio: версии 3 и новой — версии 4. Версия 3 вызывает меньше трудностей при освоении, но её компоненты более не обновляются, а в версию 4 интегрируются все новые программные компоненты и документация. С каждым новым выпуском Simplicity Studio версии 4 трудностей в работе возникает всё меньше и меньше.
После установки Simplicity Studio любой версии нужно доустановить требуемые компоненты как показано в видеороликах для версии 3 и для версии 4.
В результате будет установлена Simplicity Studio со всеми компонентами, необходимыми для работы. Для EFM8 сюда будет входить профессиональный компилятор Keil, являющийся стандартом де-факто для архитектуры 8051, система команд которой заложена в ядро CIP-51 микроконтроллеров EFM8. Неограниченная лицензия для микроконтроллеров EFM8 Bee предоставляется бесплатно после регистрации на сайте Keil.
Для получения лицензии в Simplicity Studio версии 3 необходимо выйти в форму регистрации после установки компонентов для EFM8 Bee в диалоговом окне “Setup tasks”. Этого может и не потребоваться, если до установки Simplicity Studio уже были установлены лицензии для Keil и они успешно «подтянулись» средой Simplicity Studio. В качестве проверки можно запустить компиляцию любого проекта и посмотреть выходную информацию компилятора – лицензия не требуется, если в окне Output среди последних строк будет запись: «C51 COMPILER V9.53.0.0 — SN: ххххх-хххххх».
В Simplicity Studio версии 4 диалоговое окно получения лицензии появится при первой компиляции проекта, в случае, если компилятор в составе Simplicity Studio не найдет уже имеющуюся лицензию, которой будет достаточно для работы.
В качестве альтернативного подхода к реализации проекта компания Silicon Labs также предлагает использование платформы mbed, возможности которой описывались раньше в нашем корпоративном блоге.
Какие есть программные библиотеки?
Для всех линеек кристаллов EFM8 Bee предлагается набор библиотек, включающий драйверы для внутренней периферии кристаллов и BSP для поддержки компонентов, размещаемых на фирменных отладочных платах.
При создании проекта с нуля или загрузки его из примера в Simplicity Studio необходимо выбрать SDK последней версии (если их уже несколько), тогда в дальнейшем для добавления в проект нужных модулей можно будет использовать возможности графической оболочки Simplicity Studio – расставив галочки напротив требуемых компонентов в свойствах проекта в разделе [C/C++ Build] > [Project Modules] — как показано на рисунке под спойлером.
Все имеющиеся компоненты в выбранной версии SDK выводятся списком и добавляются/убираются галочками.
Где найти документацию на микросхемы, отладочные средства, программное обеспечение?
Самый полный и свежий список документации с фильтрацией доступен на сайте производителя. Здесь список включает в себя документацию, созданную не только для кристаллов серий EFM8, но и сходных по внутренней организации микроконтроллеров C8051Fxxx.
- в Simplicity Studio версии 3 доступ к документации и её поиск организован удобно, а сама документация размещается локально — на жестком диске компьютера. Для доступа к документации на выбранную микросхему и отладочных комплект, руководствам по применению и примерам программ предусмотрены соответствующие кнопки в главном окне Simplicity Studio. В этом способе доступа есть единственный минус – обновление документации в третьей версии с момента выхода четвертой версии Simplicity Studio более не происходит;
- в Simplicity Studio версии 4 поиск любой документации осуществляется через поисковую строку в верхней части главного окна Simplicity Studio. Казалось бы простой путь, но он для многих не очевиден – окно поиска слабо выделяется среди остальных компонентов. Подробнее это можно увидеть в видеоролике от производителя. При первом открытии требуемого документа он скачивается из сети Интернет, а при последующем доступе – локальная версия.
Как отладить проект на своём макете?
Отладка проекта на собственном макете возможна с использованием фирменной отладочной платы для любой серии EFM8 либо c помощью внутрисхемного эмулятора/программатора USB Debug Adapter, стоимостью 55$, который уже много лет выпускается для кристаллов C8051Fxxx и у кого-то даже имеется в “закромах”.
Правильное соединение сигнальных линий нужно делать согласно руководству по применению AN124.
Здесь для отладки внешнего процессора необходимы сигналы отладочного интерфейса C2 — линии C2D, C2CK и GND. Вывод Reset в EFM8 всегда одновременно является сигнальной линией C2CK – так задуман интерфейс C2 из соображений экономии портов ввода/вывода. Для устойчивой работы интерфейса соединительные провода нужно делать как можно короче.
Чтобы не изобретать питание для собственного макета, можно задействовать линии питания отладчиков – у USB Debug Adapter’а это 5В с 10-го контакта разъема, а у отладочной платы – 3,3В и 5В с разъема EXP.
При отладке собственного макета с помощью фирменной отладочной платы необходимо сконфигурировать её для работы с внешним процессором – для этого нужно в утилите Kit Manager в Simplicity Studio версии 3 или главном окне Simplicity Studio версии 4 в разделе Debug Mode выставить режим OUT — при этом должен загореться светодиод рядом с разъемом DBG.
Есть еще один, нестандартный путь для работы с микроконтроллерами EFM8 на собственном макете – для отладки использовать фирменную отладочную плату для микроконтроллеров EFM32, подключив сигналы C2D и C2CK микроконтроллера к 7 и 9 контактам разъема Debug Out отладочной платы, а также соединив линию питания и общий провод с линией VTARGET и GND этого разъема. Далее необходимо отладочную плату сконфигурировать в режим Debug: OUT и в свойствах соединения вручную указать целевой микроконтроллер.
Фирменная отладочная плата работает некорректно. Мне не удается установить связь с процессором. Что делать?
- в версии 3 Simplicity Studio запустить Kit Manager и после предложения обновить прошивку платы согласиться;
- в версии 4 Simplicity Studio в главном окне сверху будет выведена текущая версия прошивки и рядом ссылка для закачки последней её версии – после её закачки, при наличии новой версии прошивки, будет предложено её обновление на плате.
В случае, если в Simplicity Studio с помощью USB Debug Adapter’а выполнить стирание не удается, то можно проделать это в приложении Flash Programming Utilities, где на закладке Flash Erase нужно выполнить операцию стирания всего содержимого Flash-памяти. Алгоритм работы функции стирания в этой программе работает надежнее, нежели в других приложениях для EFM8 и C8051Fxxx, и позволяет вывести микроконтроллер из глубокого «коматозного» состояния.
У меня что-то [всё, ничего, не пойму что] не работает. Где искать ответы на вопросы?
Как программировать микроконтроллеры EFM8 в серийном производстве?
При выпуске приборов в небольшой серии микросхемы можно программировать в готовом изделии с использованием внутрисхемного эмулятора/программатора DEBUGADPTR1-USB, стоимостью 55$. В качестве программной оболочки можно использовать набор утилит Flash Programming Utilities либо Production Programmer. Flash Programming Utilities может работать в графическом режиме в готовой оболочке либо в режиме командной строки, что полезно в случаях создания сценариев программирования, помещаемых в .bat-файл.
В качестве более дешевой версии программатора можно применить бескорпусную версию указанного выше программатора, именуемую ToolstickBA, который можно купить по цене 30$ с учетом НДС. С ним можно еще экономнее исполнить разъемное соединение, т.к. у этого программатора установлен торцевой разъем, ответную часть для которого можно предусмотреть на печатной плате без дополнительных разъемов.
При объемах серийного производства, когда трудозатраты и стоимость накладных расходов на программирование превышают разумные значения, можно воспользоваться услугой программирования кристаллов на производстве Silicon Labs. Стоимость услуги в партиях от 5000 шт. составляет 0.06$/шт. — 0.1$/шт. с учетом НДС в зависимости от объема Flash-памяти.
Также нужно помнить, что в микроконтроллерах EFM8 есть встроенный загрузчик и при наличии в изделии разъема для подключения интерфейса, который поддерживается загрузчиком, можно организовать программирование микроконтроллера перед этапом финального тестирования собранного изделия — без программатора. Подробнее функционирование загрузчика можно изучить в руководстве по применению AN945 и программном обеспечении к нему.
И еще остается классический путь — использование параллельного программатора для программирования микросхем до установки на плату. Программаторы фирмы Фитон серии ChipProg поддерживают всю линейку микроконтроллеров EFM8.
Устройства от Silicon Laboratories не пользуются широкой популярностью в любительских кругах, им далеко до таких флагманов, как Atmel. Однако у них есть и вполне доступные простому смертному микроконтроллеры основных линеек в корпусе TQFP, и стартовые комплекты USB ToolStick (о чем совсем недавно упоминалось на хабре). Я сам начал свое знакомство с микропроцессорной техникой, работая с «силабсами», и вполне успешно.
В данной статье я расскажу, каким образом можно организовать связь компьютера с МК, используя USB-интерфейс, и как Silabs попытались сделать это простым для разработчика.
В качестве испытуемого будем использовать плату С8051F320DK, с микроконтроллером соответственно F32x серии, поддерживающей USB аппаратно, и Keil'овскую среду разработки uVision4.
Перед тем, как начинать копать в сторону реализации связи по USB необходимо определиться с некоторыми базовыми аспектами протокола: какое место занимает устройство в топологии (хост или ведомое устройство) и какой характер будет иметь информация, передаваемая по интерфейсу.
Создание USB совместимого HID-устройства типа джойстик
- простота реализации;
- компактный код;
- поддержка Windows (не нужны дополнительные драйвера).
- конфигурацию дескриптора HID-устройства;
- процедуры передачи данных;
- дескриптор имени HID-устройства.
Начинаем с дескриптора устройства
- диапазон значений, в котором будет действовать Throttle – LOGICAL_MINIMUM(0) и LOGICAL_MAXIMUM(255),
- задаем размер этого диапазона(один байт) – REPORT_SIZE (8) и
- количество органов управления данного типа – REPORT_COUNT (1).
- диапазон значений — LOGICAL_MINIMUM(0) и LOGICAL_MAXIMUM(1);
- размер диапазона(один бит) — REPORT_SIZE (1);
- количество кнопок больше одной, поэтому тут уже необходимо использовать поле байтовой длины, значит REPORT_COUNT (8);
Процедуры передачи данных
Находим в примере следующий код:
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;
// индикация работы АЦП
if( VECTOR != ADC0H)
LED = 1;
else
LED = 0;
VECTOR = ADC0H;
>
Глобальная переменная BUTTONS аналогично изменяет значение в зависимости от нажатия кнопок. Кнопки опрашиваются по прерыванию от таймера. Таймер настраивайте в соответствии с личными предпочтениями.
void Timer2_ISR (void) interrupt 5
P2 &= ~Led_2;
Дескриптор имени HID-устройства
Идентификация 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-дескриптора;
- Инициализация устройства и USB на борту;
- Обработка входящих данных и формирование исходящего пакета;
- Обработка прерываний.
Написание USB-дескриптора
В отличие от HID с его хитро формализованной структурой тут все просто
code const UINT USB_VID = 0x10C4;
code const UINT USB_PID = 0xEA61;
code const BYTE USB_MfrStr[] = ;
code const BYTE USB_ProductStr[] = ;
code const BYTE USB_SerialStr[] = ;
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 на борту
Теперь начнем собственно функцию main, в которой МК будет без устали выполнять прием и передачу данных.
void main(void)
PCA0MD &= ~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 режим передачи данных.
Полный перечень всех производимых в настоящее время фирмой Silabs MK и их парметры можно посмотреть на сайте MCU Parametric seach.Все микроконтроллеры образуют ряд семейств, имеющих особые свойства. Внутри каждого семейства имеется ряд модификаций, отличающихся количественными параметрами(в первую очередь количеством выводов корпуса). Обозначение каждого МК содержит строку символов «C8051F», после которых следует трехзначный десятичный номер модификации МК.
Впервые узнав о существующей фирме Silabs (да, изначально эти МК выпускались конторой «CYGNAL»)и ознакомившись с имеющимися тогда в продажи МК, сильно захотелось пощупать этот «микромир».Сразу возник вопрос вопрос: с какого же контроллера начать изучать данное семейство? Выбор был не велик — как по доступности так и по моим скромным финансам. И по определенным стечением обстоятельств достался мне некий C8051F320.
Что я хочу сказать, знатная вещица в своем классе. Для справки приведу краткое описание сего изделия:
Думаю на выше приведенном рисунке вполне полно дана характеристика. Если что подробнее — все вопросы к Оригинальной документации. Да, кстати, довольно много переведенной документации (оригинально) на великий и могучий русский язык. В чем несомненно есть +, и чем грех не воспользоваться. За время пользования переведенной документацией на свой МК не было замечено ошибок. Не исключено что просто не сталкивался.
Одной из особенностей настройки данных МК можно отметить назначение приоритета каждой функции ввода/вывода. Она осуществляется с помощью «Приоритетного декодера матрицы». Если какой-либо цифровой ресурс выбран, то этому ресурсу назначается не назначенный вывод порта с наименьшим приоритетом. К примеру, выводы интерфейса I2C — SDA и SCL — могут быть назначены любым из возможных и незадействованных выводам. В C8051F320 это выводы P0.(0,3,4,6) для SDA и P0.(1,4,5,7)для SCL.
Для, так бы сказать «пощупать» — развел небольшую плату с этим МК:
минимум — все линии ввода/вывода, возможность подключения внешнего кварца (хотя и внутреннего с головой хватало), переключение питания(внешнее или от USB) и отдельно разъм интерфейса С2 (4 вывода).
Для написания ПО использовал среду разработки Silabs IDE. Silabs IDE использует Keil'олвский компилятор для х51, что то типа «коробки разные, начинка одинаковая». Практически для каждого семейства МК в Silabs IDE имеются примеры по работе с различной периферией каждого микроконтроллера
начиная от линий ввода/выводы и заканчиваю интерфейсами USB/CAN.
Средства для программирования.Что особенно понравилось -так это процесс «кройки и шитья». Прошивается этот МК последовательно. Разные семейства имеет два типа интерфейса Programming/Debug — JTAG и C2.Существуют два программатора: EC2 и EC3. Один на СОМ порт, второй на USB. Используя их можно прошить МК и произвести отладку программы как по интерфейсу JTAG так и по C2 (в зависимости от используемого МК). FlashBlaster2 — самый простой программатор, подключаемый через LPT, для всех микроконтроллеров C8051Fxxx. Собирается на основе двух микросхем 74HC125.
Поэтому быстро за разводку платы! Получилась двусторонняя плата под данный программатор — удалось его вместить в корпус LPT разъема
В процессе монтажа, своими кривыми руками сорвал дорожку на плате. Пришлось строить городки.
Софт для заливки программы через FlashBlaster можно взять на сайте Dilogic'a.FlashLoad Lite
P.S. PCB-файлы макетки и программатора не прикреплял. Если кому нужно будет-добавлю.
Загрузить драйверы
Silicon Laboratories USB-адаптер
Как обновить драйверы устройств Silicon Laboratories USB Adapter вручную:
Основные драйверы Silicon Laboratories USB Adapter можно получить через %%os%% или проведя обновление Windows®. Хотя эти драйверы USB Adapter являются базовыми, они поддерживают основные аппаратные функции. Это руководство по эксплуатации проведет вас через обновление драйверов Silicon Laboratories.
Используйте автоматическое средство для обновления драйверов Silicon Laboratories USB Adapter:
Рекомендация: Как правило, мы настоятельно рекомендуем большинству пользователей Windows (за исключением случаев, если они являются продвинутыми пользователями) для обновления драйверов Silicon Laboratories USB-адаптер скачать специальный инструмент , например DriverDoc [DriverDoc - Продукт от Solvusoft]. Эта утилита для обновления драйверов гарантирует скачивание правильных драйверов для ваших Silicon Laboratories и версии операционной системы, предотвращая установку неправильных драйверов.
DriverDoc можно использовать для автоматического обновления не только драйверов USB-адаптер, но и всех прочих драйверов на вашем ПК. Данная утилита имеет доступ к базе, содержащей более 2 150 000 драйверов устройств (пополнение базы осуществляется на ежедневной основе), благодаря чему на вашем ПК всегда будут установлены последние версии необходимых драйверов.
Silicon Laboratories Часто задаваемые вопросы относительно обновления
Когда обновлять драйверы Silicon Laboratories?
Для того, чтобы реализовать все функции вашего оборудования Silicon Laboratories, мы рекомендуем периодически проверять наличие обновлений драйверов.
Какие операционные системы работают с драйверами Silicon Laboratories?
Silicon Laboratories полностью поддерживается Windows.
Как обновить драйверы Silicon Laboratories?
Silicon Laboratories драйверы можно обновить вручную с помощью Device Manager (Диспетчера устройств) Windows или автоматически с помощью инструмента для обновления драйверов.
Можете ли вы объяснить, что делают драйверы USB-адаптер Silicon Laboratories?
Эти крошечные программные средства являются помощниками таких аппаратных устройств, как Silicon Laboratories, поскольку они обеспечивают надлежащую связь между самим аппаратным обеспечением и конкретной версией операционной системы.
Комментарии ( 29 )
Милая штучка. Алсо, какой-то из их процев работает в Oscill'е и успевает сэиплить АЦП на вполне приличной скорости без ПЛИС, синхронизироваться и скармливать данные компу.
А чем их IDE от микровижна отличается? Какие фишки? Поддерживает, надо полагать, только силабовские МК?
Гм, этот МК для своей начинки стоит довольно гуманно. АВРки за такую цену вроде похуже. Еще и USB на борту.
А есть к ним дешевые в изготовлении (или покупке) USB программаторы?
1)IDE.В двух словах: позволяет кодить на Asm и С и отлаживать прогу в самом кристалле. «Программного» отладчика нет.
2)Поддерживает все свои МК. MCS-51 других производителей не подставлял.Нужно попробовать AT89x. «х51» он и в Африке «х51».
3)Самый дешевый программатор FlashBlaster2.Куда проще))). А так я приобрел EC3(USB) (ц.42 енота).
Если нужно то могу выложить PCB LPT программатора.
На этом сайте EC3 выложены все материалы для самостоятельной сборки программатора. Предупреждаю сразу: я не пробывал собирать. В сети гуляет прошивка для USB программатора, но ее «исправность» не знаю. На том же сайте есть схема и для COM программатора.
LPT — зверь раритетный. У меня правда есть, но пока туда воткнешься — изматеришься и обязательно какое-нить железо отвалится. Клава например. Или вообще питание. Бывали и просто БСоДы.
Это все равно, что описать Notepad++ «позволяет открывать и редактировать *.txt». Больше интересуют интеллектуальные возможности IDE — такие, как, например, подсказки и автодополнение. Ну и скриншотик можно добавить.
Чего нет того нет))Интерфейс пользователя у данной среды слабоват(пользовался в.4.1).Скриншотики завтра добавлю.
Кто сказал что она лучше Keil'a?)))Да, она бесплатная. Дело в том что я еще не пробывал шить и отлаживать прогу в кристале через Keil, используя оригинальный программатор (EC3) от Silab'a.
Халява, но не совсем. Если использовать «родной бесплатный компилятор», то есть ограничение по размеру кода. Ограничение можно обойти, установив кейл с таблеткой, а в силабс'е указать, что надо пользоваться внешним компилятором. Но, попробовав кейл, к силабу возвращаться не хочется. Единственная неудобность — кейл генерирует небольшой стартап код, который у меня так и не получилось отлючить полностью. В обычной жизни ни разу не мешает… но один раз нехорошо попал так. Два дня просидел, пока понял, почему микроконтроллер программу выполнять не хочет!
P.S. У кейла есть прикольная фича по части подсветки кода. Если поставить курсор на скобку (фигурную, ")" или "["), то среда покажет её пару! Если надо разобраться в чужом коде, в котором накручено неимоверное кол-во вложенных циклов, очень помогает. Да, в кейле очень толковая система симуляции для силабов. Можно для некоторых моделей писать процеруры (как точно это назвать не скажу), которые будут эмулировать поведение внешних раздражителей. Например, добавить панель, на ней расположить кнопки, и по нажатию на кождую из них среда будет генерить на «внешнем выводе» МК сигнал заданной формы, а программа в МК его уже обрабатывать. Вообщем нереально удобная среда! Рекомендую разу забить на Силиб и разобраться с кейлом.
Читайте также: