Фильтр по тематике

Преобразователь интерфейсов USB–SPI на новом x51-микроконтроллере EFM8UB1 Часть 1

В статье рассмотрены аппаратные средства (принципиальные схемы, варианты разводки плат и фотографии реальных устройств) и программное обеспечение (исходные тексты программ и их оттранслированные варианты в hex-формате) устройств преобразователей интерфейсов USB–SPI на базе новейших высокоскоростных миниатюрных x51-совместимых микроконтроллеров EFM8UB1 компании Silicon Laboratories. Применение этих микроконтроллеров в подобных преобразователях кардинально снижает их стоимость и габариты, а также существенно повышает скорость обмена. Статья состоит из трёх частей.

25.12.2016 371 0
Преобразователь интерфейсов USB–SPI  на новом x51-микроконтроллере EFM8UB1 Часть 1

Введение

Преимущества 8-разрядных x51-совместимых микроконтроллеров (МК), разработанных ещё в 1980 г. компанией Intel, перечислять нет необходимости – они всем хорошо известны. Однако ведущие производители в последнее время перестали уделять этим МК должное внимание. Последние разработки х51-совместимых МК таких компаний, как Atmel, NXP, TI и др. прекратились несколько лет назад. Причина этого, вероятно, кроется в различных маркетинговых особенностях, требующих агрессивного продвижения на рынок 32-разрядных МК. Однако востребованность х51-совместимых МК, на взгляд автора, до сих пор высока и, к сожалению, не зависит от маркетинговых нюансов. Вероятно, поэтому топовые модели х51-совместимых МК ведущих фирм до сих пор выпускаются и пользуются неизменным спросом.

В 2015 г. после приобретения компании Energy Micro, выпускавшей 32-разрядные МК EFM32 со сверх­малым потреблением энергии, компания Silicon Laboratories сделала настоящий прорыв, разработав и выпустив целую плеяду 8-разрядных х51-совместимых МК EFM8. Среди них – EFM8BB (Busy Bee), отличающиеся большим количеством встроенных периферийных устройств, EFM8SB (Sleepy Bee) со сверхмалым потреблением энергии, а также EFM8UB (Universal Bee), поддерживающие интерфейс USB (об одном из них (EFM8UB1) и пойдёт речь в данной статье).

Однако на этом Silicon Laboratories не остановилась и уже в 2016 г. выпустила новое семейство EFM8LB (Laser Bee) со встроенным 14-разрядным АЦП с частотой дискретизации до 900 кГц, который включает входной мультиплексор и контроллер прямого доступа к памяти – DMA (в статье также будет приведён пример использования этого МК). Кроме того, эти МК оборудованы четырьмя конфигурируемыми логическими блоками (CLU), позволяющими проектировщикам реализовать комбинационную логику и/или синхронизаторы (т.е. функции И, ИЛИ, НЕ, мультиплексоры и триггеры) без применения внешних компонентов. По своим функциональным особенностям EFM8LB могут соперничать с МК C8051F06X со встроенным 16-разрядным АЦП со скоростью преобразования до 1 млн операций в секунду и имеющими прямой доступ к памяти (DMA), что позволяет записывать в память результаты АЦП без участия МК. Последний до сих пор выпускается, поскольку достаточно востребован, несмотря на относительную дороговизну и невысокую тактовую частоту 25 МГц. Все же МК EFM8 – однотактные и могут работать на максимальной частоте 50 МГц (а EFM8LB1 – до 75 МГц), или, другими словами, максимальная скорость их работы составляет 50 млн операций в секунду (MIPS). Благодаря очень низкой цене в средних и больших партиях, МК семейства EFM8, на взгляд автора, в настоящее время не имеют альтернативы.

Ранее автором была опубликована статья о преобразователе интерфейсов USB–SPI на базе МК C8051F321 и бесплатно поставляемой компанией Silicon Laboratories библиотеке USBXpress, позволяющей, не вдаваясь в подробности спецификации интерфейса USB, простыми средствами производить обмен информацией C8051F321 с компьютером по этому интерфейсу [1]. В связи с выпуском нового МК EFM8UB1, оборудованного интерфейсом USB и имеющего сверхмалые габариты (корпус QFN20 размером всего 3 ´ 3 мм), автор решил попробовать его также в роли преобразователя интерфейсов USB–SPI. Результат превзошёл самые смелые ожидания.

Дальнейшее изложение будет вестись в следующей последовательности. Вначале будут описаны аппаратные средства преобразователей интерфейсов USB–SPI на базе МК EFM8UB1 (принципиальные схемы устройств и макетных плат, разводка плат и фотографии готовых устройств), а затем – программные средства (тексты программ, рекомендации по конфигурированию портов ввода/вывода с помощью матрицы соединений, а также по трансляции программ; снимки экранов, показывающих реальные скорости обмена USB–SPI и т.п.).

Аппаратные средства преобразователей USB–SPI на базе МК EFM8UB1

В этом разделе представлены четыре устройства преобразователей USB–SPI на базе EFM8UB1.

Первое – неизолированный преобразователь USB–SPI с общими цепями «земли» и питания интерфейсов USB и SPI. В этом преобразователе интерфейс SPI работает в полном четырёхпроводном режиме, т.е. осуществляет обмен с помощью четырёх сигналов: MISO, MOSI, SCK и NSS.

Второе – изолированный преобразователь USB–SPI, у которого интерфейс SPI оборудован гальванической развязкой с помощью четырёхканального цифрового изолятора SI8642. Интерфейс SPI в этом устройстве работает в усечённом трёхпроводном режиме, в котором используются только сигналы MISO, MOSI и SCK, а сигнал NSS не применяется.

Третье – изолированный преобразователь USB–SPI на базе 6-канального цифрового изолятора SI8662. Гальванически изолированный интерфейс SPI в этом устройстве работает в четырёхпроводном режиме.

Четвёртое – изолированный преобразователь USB–SPI, в котором осуществлена гальваническая изоляция интерфейса USB с помощью цифрового изолятора ADUM3160/4160, а интерфейс SPI не изолирован и работает в четырёхпроводном режиме.

Для тестирования этих преобразователей USB–SPI в статье представлены две макетные платы. Первая – на базе МК C8051F061, вторая – на базе EFM8LB12.

В статье [1] для тестирования преобразователя USB–SPI на базе C8051F321 был использован МК C8051F067, имеющий аналогичные характеристики (с точки зрения интерфейса SPI) с МК C8051F061. В настоящей статье использована макетная плата с C8051F061. Причины, по которым автором изготовлена новая макетная плата с МК C8051F061, состоят в следующем.

Во-первых (и это главная причина), плата-переходник для МК C8051F067 имеет двустороннюю разводку [1], которую осуществить своими силами достаточно проблематично. Поэтому автором разведена и изготовлена новая плата-переходник с односторонней разводкой, которая намного проще в изготовлении. Эта односторонняя разводка по выводам отличается от двусторонней, поэтому схема новой макетной платы отличается от схемы, приведённой в [1]. Во-вторых, макетная плата из [1] достаточно сложна, поскольку имеет несколько ненужных опций, которые в новой макетной плате отсутствуют.

Вторая макетная плата изготовлена на базе нового МК EFM8LB12 разработки 2016 г. В свою очередь, эта плата изготовлена по следующим причинам.

Во-первых, автору хотелось проверить новый МК в режиме обмена информацией с ПК по интерфейсу USB с помощью преобразователей USB–SPI на базе МК EFM8UB1. Во-вторых, автора заинтересовало сравнение скоростных характеристик обмена по интерфейсу SPI двух МК: C8051F061 и EFM8LB12. Забегая вперёд, можно отметить, что скорость обмена по SPI у EFM8LB12 превысила таковую у C8051F061 в 6 раз!

Принципиальные схемы устройств

Принципиальная схема преобразователя USB–SPI (см. рис. 1) предельно проста и содержит собственно МК EFM8UB1 (DD1) и два разъёма.

Первый – USBmicroB-5S REV (X1), к которому подключается кабель интерфейса USB, и второй – mini USB-8S (X2), на который выведены сигналы интерфейса SPI (NSS, MOSI, MISO, SCK), сигнал RST067 для сброса (Reset) МК C8051F067, с которым производится обмен информацией по интерфейсу SPI, и «земля» (эти же сигналы используются для подключения устройства к макетной плате с EFM8LB12), а также сигналы интерфейса C2 (RST/C2CK, C2D и общий), предназначенные для программирования микроконтроллера EFM8UB1 с помощью USB-Debug-адаптера. Цепочка R1–R2–C1 формирует сигнал сброса (Reset) МК при подаче питания (+3 В). Это напряжение (Vdd – 6-й вывод), в свою очередь, формируется встроенным в МК стабилизатором +3 В, если питание +5 В, присутствующее на линии VBUS интерфейса USB, попадает на выводы Vregin и VBUS (7-й и 8-й выводы соответственно).

Для программирования устройства, показанного на рисунке 1, необходимо изготовить два кабеля с разъёмами (см. рис. 2). Первый кабель соединяет разъём USB-Debug-адаптера SCM-10 (X1) с разъёмом устройства mini USB-8P (X2). По этому кабелю в устройство передаются сигналы интерфейса C2. Второй кабель подаёт питание +5 В с разъёма РС4ТВ(р) БП (X3) на МК через разъём USBmicro-5P (X4).

В качестве микроконтроллеров, с которыми сопрягается МК EFM8UB1 по интерфейсу SPI, были выбраны: C8051F067/61, который был подробно описан в статье [1], и новейший МК EFM8LB12 разработки 2016 г.

Для подключения устройства USB–SPI к макетным платам с МК C8051F061 и EFM8LB12 (их схемы приведены далее) необходимо изготовить кабель по схеме, показанной на рисунке 3.

Несколько слов о входных и выходных разъёмах устройства.

Для подключения устройства к интерфейсу USB использован относительно новый разъём USBmicro-5S REV. Он имеет зеркальное (Revers) расположение контактов интерфейса USB по сравнению со стандартным USB micro-5S. Это как нельзя лучше соответствует расположению контактов USB ИС EFM8UB1 (и C8051F321), по­этому разводка платы получается проще и надёжнее, чем при использовании стандартного разъёма. Новый разъём легко приобрести, и по стоимости он не отличается от стандартного. Внешне этот разъём отличается от стандартного тем, что его нижняя часть, где расположены контакты, шире верхней части (у стандартного разъёма всё наоборот).

Для подключения к интерфейсу SPI (в рабочем режиме) и интерфейсу C2 (для программирования) используется один 8-контактный разъём mini USB-8S. Это позволило вообще отказаться от отдельного разъёма, предназначенного для программирования МК, что упростило конструкцию устройства, уменьшило его габариты и повысило надёжность. Сам по себе разъём mini USB-8S малогабаритен (экономит место на плате), его стоимость не превышает стоимость стандартного USB micro-5S и, по опыту автора, он исключительно надёжен.

Для экономии места в статье схема соответствия контактов ответного разъёма (mini USB-8P), подключаемого к разъёму mini USB-8S, контактам, предназначенным для пайки, приведена в дополнительных материалах к статье, которые доступны для скачивания на сайте журнала.

Как уже упоминалось, гальванически изолированный преобразователь USB–SPI представлен тремя устройствами.

Первое устройство (см. рис. 4) сконструировано на основе высокоскоростного четырёхканального цифрового изолятора SI8642 (DD2), который показал идеальную работу с интерфейсом SPI, работающим в трёхпроводном режиме [1]. Для программирования EFM8UB1 (DD1) с помощью USB-Debug-адаптера сигналы интерфейса C2 выведены на трёхштырьковый разъём PLL-1x3 (X2). К интерфейсу USB МК EFM8UB1 подключается с помощью разъёма USBmicro-5S REV (X1), a к C8051F067 и EFM8LB12, расположенным на соответствующих макетных платах, по интерфейсу SPI – с помощью разъёма PBDHH 2x3 (X3), представляющего собой двухрядные гнёзда с шагом 2,54 мм. Остальные особенности схемы уже были описаны.

Для программирования МК EFM8UB1 в схеме, показанной на рисунке 4, необходимо изготовить два кабеля по схемам, приведённым на рисунке 5. Один – с разъёмом USBmicro-5P (X4) – для подачи питания +5 В описан ранее, второй – с разъёмами SCM-10 (X1) и PBL-1x03 (X2) – приведён в нижней части рисунка 5.

Хотя гальванически изолированный интерфейс, работающий в трёхпроводном режиме (см. рис. 4), показал хороший результат при работе с МК C8051F067, при работе с EFM8LB12 эта схема показала довольно посредственный результат по скорости. Причины этого – более низкая тактовая частота МК C8051F067 (25 МГц) по сравнению с таковой у EFM8LB12 (50 МГц), а также усечённый трёхпроводный режим работы, в котором сигнал NSS, синхронизирующий приём/передачу каждого байта, отсутствует.

Для увеличения скорости обмена по интерфейсу SPI был изготовлен ещё один изолированный преобразователь USB–SPI, но уже работающий в полном четырёхпроводном режиме (см. рис. 6). В схеме используется высокоскоростной 6-канальный цифровой изолятор SI8662 (DD2), позволяющий добавить четвёртый сигнал интерфейса SPI – NSS. Благодаря этому сигналу схема, представленная на рисунке 6, показала более высокую скорость обмена по интерфейсу SPI, чем схема, изображённая на рисунке 4. Разъём X3 – четыре двухрядных цанговых штыря с шагом 2,54 мм. Для программирования МК EFM8UB1 в схеме на рисунке 6 используются те же кабели (см. рис. 5), что и для программирования МК по схеме, приведённой на рисунке 4.

Как показало тестирование уст­ройств, схемы которых изображены на рисунках 4 и 6, изолированные преобразователи USB–SPI по скорости обмена не могут соперничать с неизолированным (см. рис. 1).

Гальванически изолированный преобразователь интерфейсов USB–SPI может быть основан не только на принципе гальванической изоляции интерфейса SPI (см. рис. 4 и 6), но и на ином принципе, а именно – на гальванической изоляции самого интерфейса USB с помощью хорошо известных цифровых изоляторов ADUM3160/4160 [1]. Преимущество этих микросхем в том, что они не снижают скорость обмена по интерфейсу USB. А вот цифровые изоляторы интерфейса SPI снижают скорость обмена (особенно в трёхпроводном режиме). Недостатки ADUM3160/4160 – более крупный корпус (SOIC16W размером 10 ´ 10 мм), чем у цифровых изоляторов интерфейса SPI, а также достаточно высокая цена, которая на момент написания статьи [1] в 2012 г. составляла около 1000 руб. за штуку. Однако к настоящему времени цена на изоляторы (ADUM3160) упала почти в 2,5 раза и сравнялась с ценой 6-канальных цифровых изоляторов SI8662BC (около 400 руб.), используемых в схеме, показанной на рисунке 6. Кроме того, микросхемы ADUM3160 более доступны, чем SI8662BC.

Поэтому было принято решение сконструировать преобразователь интерфейсов USB–SPI на базе цифровых изоляторов ADUM3160/4160 (см. рис. 7). Забегая вперёд, отметим, что скоростные характеристики получившегося преобразователя не уступают характеристикам неизолированного преобразователя USB–SPI (см. рис. 1), являющегося самым скоростным из всех преобразователей, представленных в настоящей статье. Что касается схемы, приведённой на рисунке 7, то она достаточно проста и в отдельных комментариях не нуждается.

Для программирования МК EFM8UB1 в схеме, изображённой на рисунке 7, требуется два кабеля. Первый – для сопряжения с сигналами C2 USB-Debug-адаптера. Этот кабель аналогичен кабелю с разъёмами X1–X2, показанному в нижней части рисунка 5. Второй кабель подаёт питание на устройство (7 и 8 выводы X2 на рисунке 7) с помощью двух цанговых гнёзд (X4 на рисунке 8).

Схема макетной платы с МК C8051F061 (см. рис. 9) по сравнению со схемой, приведённой в [1], значительно упрощена и содержит минимум необходимого для тестирования устройств преобразователей интерфейсов USB–SPI.

В ней используется стабилизатор +3,3 В LP2950Z3.3 (DA1), к которому с разъёма X1 подаётся питание +5 В от стабилизированного источника с током не менее 100 мА. Устройст­во изолированного преобразователя USB–SPI, работающего в трёхпровод­ном режиме, подключается к разъёму X2, представляющему собой 6-контактный штыревой разъём с расстоянием между штырями 2,54 мм. Устройства не­изолированного преобразователя USB–SPI и изолированного преобразователя, работающего в четырёхпроводном режиме, подключаются к разъёму X3, представляющему собой четыре двухрядных цанговых гнезда с расстоянием между ними 2,54 мм.

Двухконтактная перемычка P2 предназначена для подачи или снятия (при необходимости) питания (VddSPI) на разъёмы X2 и X3 с помощью джампера. Цепочка R1–R2–C14 предназначена для формирования сигнала сброса МК. Кварцевый резонатор с частотой 20 971 520 Гц подключён к выводам XTAL1 и XTAL2 МК с заземляющими конденсаторами C9 и C10. Остальные конденсаторы служат для штатной работы микроконтроллера. Для индикации присутствия питания на плате используется светодиод LD1 с токоограничительным резистором R3.

Для программирования МК по интерфейсу JTAG с помощью USB-Debug-адаптера используется 6-штырьковый разъём IDC6M, к которому подключается кабель программирования, соединяющий выводы адаптера с выводами разъёма X4. Схема такого кабеля приведена на рисунке 10.


Схема макетной платы с МК EFM8LB12 (см. рис. 11) несколько проще предыдущей. В ней используются такие же разъёмы X3 и X4 для подключения устройств, работающих соответственно с трёхпроводным и четырёхпроводным интерфейсом SPI. Цепочка R1–R2–C1 служит для формирования сигнала сброса МК (RSTLB1). Стабилизатор LP2950Z3.3 (DA1) обеспечивает питание платы напряжением 3,3 В. К этому стабилизатору с разъёма X1 подаётся питание +5 В от стабилизированного источника с током не менее 100 мА.

Трёхконтактная перемычка P1 служит для подачи питания +3,3 В (на устройства с изолированным интерфейсом SPI (см. рис. 4 и 6)) или +5 В (на устройство с изолированным интерфейсом USB (см. рис. 7)) на разъёмы X3 и X4. Подача питания осуществляется путём установки двухконтактного джампера в соответствующее положение.

В схеме используется внешний кварцевый генератор SCO-223 (Z1) частотой 50 МГц, выходной сигнал которого подключён к выводу EXTCLK (30-й вывод).

Причина, по которой используется именно внешний кварцевый генератор, состоит в следующем. Дело в том, что МК EFM8LB12 оборудован двумя высокочастотными внутренними генераторами частотой 25 и 75 МГц, стабильность которых, как было выяснено в статье [1], не позволяет производить высокоскоростной обмен по интерфейсу SPI с необходимой надёжностью. Надёжный высокоскоростной обмен возможен только при условии, что частота генератора стабилизируется кварцевым резонатором. МК EFM8LB12 оборудован внут­ренним генератором, предназначенным для подключения внешнего кварцевого резонатора к выводам XTAL1 и XTAL2 (как и C8051F061). Однако максимальная частота такого генератора составляет только 25 МГц. А вот максимальная частота внешнего кварцевого генератора может достигать 50 МГц, поэтому он и был использован автором. Такой генератор достаточно дёшев, имеет малые размеры (2 ´ 2,5 мм), и всё, что требуется для его работы, – это подать на него питание +3,3 В (на 4-й вывод Vdd), соединить разрешающий вывод OE (Output Enable – 1-й вывод) с напряжением питания, заземлить вывод GND (2-й вывод) и соединить выходной сигнал OUT (3-й вывод) со входом МК (EXTCLK), предназначенным для подключения внешнего генератора (30-й вывод DD1).

Для программирования МК по интерфейсу C2 с помощью USB-Debug-адаптера используется трёхштырьковый разъём WF-03 (X2). К этому разъёму подключается кабель, соединяющий выходной разъём адаптера с разъёмом X2. Схема такого кабеля приведена на рисунке 12.

Продолжение статьи читайте в следующем номере журнала.

Литература

  1. Кузьминов А. Преобразователь интерфейсов USB–SPI с гальванической развязкой. Современная электроника. 2012. № 1, 2.

Если вам понравился материал, кликните значок - вы поможете нам узнать, каким статьям и новостям следует отдавать предпочтение. Если вы хотите обсудить материал - не стесняйтесь оставлять свои комментарии : возможно, они будут полезны другим нашим читателям!

25.12.2016 371 0
Комментарии
Рекомендуем

  Подписывайтесь на наш канал в Telegram и читайте новости раньше всех! Подписаться