[Перевод] Клоны STM32: хороший, плохой, злой

После того, как некий продукт становится популярным, у компаний, которые могли бы его создать, но не сделали этого, неизбежно возникает желание прокатиться на волне его популярности. Это — лишь вопрос времени. Именно этот феномен в ответе за то, что было создано так много ужасных детских игрушек и компьютерных игр. Проявляется он и в мире электроники. Поэтому неудивительным должно выглядеть то, что произошло с чрезвычайно успешной серией микроконтроллеров (Microcontroller Unit, MCU) STMicroelectronics, основанных на ARM. На долю этих контроллеров выпало немалое количество имитаций, клонов и явных подделок.

8zjwens8bzevau95vnqnoudspdq.jpeg

Пожалуй, подделки — это главная проблема. Дело в том, что эти чипы прикидываются, судя по их маркировке, настоящими STM32. Но при этом характеристики их совместимости с другими компонентами могут очень сильно отличаться от характеристик настоящих чипов. Если говорить об имитациях и клонах, которые маркированы по-своему, то тут ситуация выглядит немного более запутанной. Ведь вполне можно представить себе, что компании, производящие такие микроконтроллеры, по чистой случайности, спроектировали такие чипы, которые, и в плане распиновки, и в плане регистров, полностью совместимы с крайне популярными микросхемами-конкурентами. Это, пожалуй, было бы самой искренней формой подхалимажа.

Поговорим о том, какие существуют подделки и имитации STM32, и о том, каково это — с чем-то подобным столкнуться.

Анатомия фальшивки


В начале сего года был опубликован хороший разбор, посвящённый поддельным микросхемам STM32F103, встречающихся на платах Blue Pill. На корпусах подделок можно видеть такую же маркировку, что и на корпусах настоящих STM32. Однако подделки можно распознать, присмотревшись к схеме расположения углублений на корпусах и к качеству нанесения маркировки.

361bdd1583137515e62c72163a94ce9f.jpg


Слева — настоящая микросхема STM32, а справа — поддельная. На её корпусе есть дополнительные углубления

Подделки не всегда отличаются тем же функционалом, что и оригинальные микроконтроллеры. Автор вышеупомянутой статьи отмечает, что многие из этих микросхем нельзя даже нормально прошить, или хотя бы запустить на них универсальный пример Blinky. Возможно даже то, что эти подделки, на самом деле, сделаны на основе бракованных кристаллов интегральных схем STM32F103 или подобных им, которые кто-то продаёт на чёрном рынке.

6075f1f26b5f1e7cb84ab99dde7c9fae.jpg


STM32FEB — это не настоящий STM32

Куда коварнее, возможно, чипы, которые можно назвать «полуподделками». Они, на первый взгляд могут выглядеть как настоящие. Но их выдаёт маркировка. Выглядит она как STM32FEBKC6. У компании STMicroelectronics нет компонентов с такой маркировкой. Наличие на чипе подобной маркировки служит важным признаком его поддельности. Это — клон STM32, столкнувшись с которым, можно нажить себе кучу проблем. Хотя подобные микроконтроллеры и работоспособны, они представляют собой урезанную версию STM32F103, в которой реализованы не все возможности настоящих чипов. О них, кроме того, очень сложно найти подробные сведения.

Копии талантливых подражателей


А тут мы поговорим о самых хитрых клонах, представленных в виде MCU CS32F103. Такие клоны работают точно так же, как настоящие чипы, на них нормально запускается код Blinky, скомпилированный для STM32F103. Некоторые из них могут быть даже маркированы как микросхемы производства STMicroelectronics. Это усложняет их уверенную идентификацию.

1de1af7a1f80e44cbcfc7681cf1e9a83.jpg


CS32F103 — более честный клон

Некоторые из них производит китайская компания CKS (中科芯微), которая, по всей видимости, создала полноценную версию STM32F103, дойдя даже до исправления дефектов, описанных в документации STMicroelectronics. Подробнее об этих микроконтроллерах можно почитать здесь.

Главное отличие этих копий от оригиналов становится заметным при получении сообщения об ошибке «UNEXPECTED idcode: 0×2ba01477» в ходе загрузки кода на них. Правда, эту проблему можно решить, например, используя соответствующий конфигурационный скрипт в OpenOCD.

Клоны производства GigaDevice


Возможно, самый известный создатель клонов STM32 — это компания GigaDevice со своими микроконтроллерами GD32. Как отмечено в этом материале, GD32F103, по-видимому, является более быстрой и функциональной версией STM32F103. GD32F103 имеет более высокую тактовую частоту и более быструю флеш-память. А изучение разобранного чипа показало, что в корпусе имеются две микросхемы. Одна — это основной чип, а вторая — это флеш-хранилище. А такое внутреннее устройство GD32F103 позволяет довольно гибко менять размер памяти чипов, производимых GigaDevice.

8ee7bdf38e9defa1cc8d94cd642117cf.jpg


Разобранный GD32F103. Поверх основной микросхемы видна отдельная флеш-микросхема

На первый взгляд чипы GD32 выглядят привлекательнее, чем STM32F1. Их тактовая частота выше (108 против 72 Мгц), в них более быстрая память. Хотя флеш-хранилище GD32 должно было бы работать очень медленно, так как это — SPI ROM, в микроконтроллере используется SRAM главного чипа в роли «кеша» для флеш-хранилища, что приводит к тому, что это хранилище быстрее того, которое входит в состав основного чипа. Оно не пребывает в состоянии ожидания даже при работе микроконтроллера на полной доступной ему тактовой частоте.

Минус использования SRAM в связке с флеш-памятью заключается в том, что это повышает энергопотребление устройства. Это, кроме того, вызывает задержку при загрузке (небольшую), вызванную тем, что содержимое SPI ROM копируется в SRAM до того, как сможет загрузиться прошивка. В зависимости от конкретной ситуации это может быть и достоинством, и недостатком. Это, естественно, тот же подход, который используется в микроконтроллер ESP8266, где для хранения прошивки тоже используется внешняя SPI ROM.

Правда, если говорить о других устройствах GD32, то, видимо, их разработчики не так сильно стремились к созданию прямых клонов. Так, микроконтроллер GDF303 использует ту же периферию, что и GDF103, хотя периферия STM32F3, пожалуй, лучше. Это, кроме того, не позволяет использовать GDF303 на платах, рассчитанных на STM32F3xx. На решение вопроса об использовании GD32 может повлиять отношение того, кто решает этот вопрос, к периферии STM32F1.

Они повсюду


7e8c6ca76029896df1432d98c0156a7d.jpg


Настоящий MCU CH32F103 на плате Blue Pill

Хотя я и знала о вышеописанных подделках и клонах, я, тем не менее, недавно встретилась с кое-чем новым из этой сферы. Я купила несколько плат Blue Pill с чипами STM32F103 у крупного немецкого продавца, занимающегося импортом подобных вещей. Я этим не горжусь, но мне нужны были дешёвые платы для датчиков BlackMagic, а предложение выглядело очень уж заманчивым. В комментариях к товарам на Amazon одни говорили, что получили платы с настоящими чипами, другие же говорили о подделках.

Меня влекло нездоровое любопытство, я получила несколько таких плат, после чего, со смесью ужаса и удовольствия заметила, что на них установлены вовсе не обещанные контроллеры STM32F103C8T6. На них стояли чипы CH32F103C8T6. Хорошо хоть они не прикидывались настоящими STM32.

Микроконтроллер CH32F103 производит китайская компания WCH. Техническое описание и справочное руководство к этому чипу можно загрузить, но они есть только на китайском. Беглый просмотр этих документов создал впечатление, что перед нами чип, практически идентичный STM32F103, с таким же распределением памяти и с такими же периферийными регистрами.

Присоединив плату к ST-Link/V2 и подключившись к ней с помощью OpenOCD, я получила ту же ошибку CPUTAPID, которую выдают CS32F103 при использовании конфигурационного файла, рассчитанного на STM32F1xx. После того, как я отредактировала файл stm32f1xx.cfg, последовав найденным в интернете советам, я смогла без проблем прошить пример Blinkу из моего STM32-проекта Nodate.

Это говорит о том, что, по крайней мере, базовое управление тактированием и сбросом, GPIO и системный таймер достаточно похожи на то, что имеется в STM32. В результате система смогла пройти этот простой тест. Ещё мне хотелось бы исследовать то, как тут работают USART, DMA, SPI, I2C и I2S, узнать, соответствует ли их функционирование тому, что показывают STM32F103, которые имеются на нескольких моих платах. Если эти микроконтроллеры — это нечто вроде CS32F103, то я думаю, что они, скорее всего, будут работать так же, как STM32F103.

А когда я связалась с продавцом этих плат, сообщив о том, что в них нет обещанного чипа STM32, продавец сказал, что знал об этом, и заявил, что платы с настоящими STM32 появятся у них «через два месяца». Надо признать, после этого у меня возникло больше вопросов, чем ответов. Как минимум, я не понимаю, почему продаются платы, в которых установлен не тот микроконтроллер, который указан в их описании.

Пришло время для паники?


Внимательный читатель, возможно, заметил, что практически все рассмотренные клоны имитируют первое поколение микроконтроллеров STMicroelectronics на Cortex-M (серию STM32F1). В результате оказывается, что происходящее может обеспокоить лишь тех, кому нужно покупать платы Blue Pill для коммерческих проектов. Вряд ли это особо потревожит тех, для кого возня с STM32 — это хобби, и тех, кто держит у себя несколько дешёвых плат с Cortex-M3 на борту для разных «домашних» проектов. Если заказывать микроконтроллер и платы у надёжных поставщиков, вроде Digikey и Mouser, то о подделках тоже можно не волноваться.

Платы Blue Pill в последнее время претерпели некоторые улучшения, что выражается в выходе их новой версии с MCU STM32F4, которую, из-за её чёрного цвета, называют Black Pill. Хотя эти новые платы и немного дороже тех, что основаны на STM32F103, они дают разработчику значительно больше ресурсов и гораздо более интересную (как мне кажется) периферию. Это может повлиять на рынок плат, основанных на STM32F103, в результате чего ослабеет поток бесчисленных клонов, подделок и копий STM32F103.

Правда, так будет лишь до того момента, пока на рынок не попадут первые партии поддельных, клонированных и скопированных MCU STM32F401 и STM32F411. Вряд ли с этим можно что-то сделать.

А вам попадались поддельные STM32?

oug5kh6sjydt9llengsiebnp40w.png

3piw1j3wd_cgmzq9sefgferaumu.png

© Habrahabr.ru