954,7
карма
0,0
рейтинг
10 августа 2011 в 05:17

ARM — это сложно…?

После моей недавней статьи на хабре про рвущие все по цене армы было высказано много мнений, что ARM-у нужна 4-6-слойная плата, ну уж 2 то как минимум, и куча обвязки.

Я решил попробовать доказать, что это далеко от истины, и сделал платку, проще которой трудно: 1 сторонняя, 1 обязательный конденсатор (до стабилизатора не обязательно), 1 резистор, один стабилизатор 3.3V, и наконец младший STM32: STM32F100C4T6B — 16кб флеш, 4кб SRAM, 48 ног, Cortex-M3(!!!) с DMA, дебагом на лету, 32*32+32->32 за 1 такт и всеми прочими радостями за 28 рублей.

Программируется/дебажится это через китайский J-LINK за 24$, но весь JTAG-разъем я не распаивал: 5 контактов на плате захватывают только 2 необходимых контакта SWD(serial wire debug), и контакт определения напряжения питания JLINK-ом (используемые контакты от кабеля программирования подкрашены справа, чтобы такая схема работала нужно чтобы была общая земля у компьютера и платы — проще всего это получить питая схему от USB). Аппноут настоятельно рекомендует по отдельному конденсатору на каждую ногу питания — однако я шумов по питанию на самых дальних ногах питания выше 50-100мВ не увидел вплоть до 2нс диапазона не смотря на то, что использую всего 1, так что жить можно, особенно учитывая что чувствительное ядро питается от внутреннего стабилизатора (впрочем, нужно учитывать что дороги питания у меня несколько толще чем обычно используют). Но конечно нужно помнить, что это скорее proof-of-concept, для «боевых» применений делать придется как положено с 5-ю конденсаторами.

Изготавливается лутом — дороги 0.25-0.3 мм, что не смертельно, хотя и требует немного сноровки (в конце концев, это не 0.1мм). Опознается, шьётся и даже дебажиться кейлом без проблем :-) Себестоимость такой платки получается меньше 100 рублей (напомню, ARM этот стоит 28 рублей в розницу в терраэлектронике).

Схема и разводка для Eagle — прилагается. Впрочем, не ругайтесь за кривой символ МК — рисовал как умел — по прежнему ищу полную библиотеку STM32 чипов.


В рабочем состоянии выглядит так. Неотмытый флюс конечно сразу бросается в глаза — он был нужен чтобы не коротили ножки: все покрывается жидким флюсом вроде ЛТИ-120 и греется — припой автомагически растягивается по ногам, и коротких замыканий нет. ЛТИ-120 ток особо не проводит, так что практического смысла отмывать для «домашней» платы нет, а спирта всегда жалко :-)

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

Для программирования качаем демо-версию IDE keil (дебагер/компилятор/редактор) — для мелких мк работает без ограничений (но прямой ссылки дать не могу, ищите). Тестовую программу берем готовую тут, и остается только заменить код в main() (и поменять файл с настройками через wizard чтобы нога PA1 была выходом и работал мк от внутреннего генератора — см. вкладку «Configuration WIzard внизу при редактировании вайла с настройками»):
int main (void) {
  unsigned int hash = 0;
  int i = 0;
  stm32_Init (); // STM32 setup
  while (1) {
    for(i=0;i<50000;i++)
      hash=(hash*hash+1234567)/hash+hash+87654321; 
    GPIOA->ODR = (GPIOA->ODR & (~2)) | ((hash&256)?2:0);
  } // end while
} // end main

Настраиваем JLink: Ставим для него драйвера, затем в Keil: Flash->Configure Flash Tools. На вкладке Utilities выбираем JLINK, и жмем Settings. На вкладке Flash Download добавляем Programming algorithm «STM32F10x Low-density Flash».

Теперь билдим проект, и в меню выполняем Flash->Download, перезагружаем плату — и… оно работает. И кстати не отходя от кассы можно дебагером остановить программу, поставить брекпоинты, посмотреть переменные — все как в лучших домах



Вы все еще покупаете 8-и битные AVR-рки по 200 рублей? Тогда ARM идет к вам!
Михаил Сваричевский @BarsMonster
карма 954,7
рейтинг 0,0
Реклама

Комментарии (45)

ftp27
+3
Вы все еще покупаете 8-и битные AVR-рки по 200 рублей? Тогда ARM идет к вам!

Ну не 200 рублей, вы сильно преувеличиваете. Они стоят рублей 60-100.

А так с радостью бы их начал использовать. Компактно, красиво, но чертовски мелко. Без фена чувствую не обойтись…
Derailed
+3
ATmega32 стоит примерно 60 рублей. Там, где дороже — накрутка.
BarsMonster
+1
Нуууу не знаю )

www.terraelectronica.ru/catalog.php?ID=769&Search=1&Text=atmega32&Gde=2&PageS=1&InHave=1

Именно 32-я от 120 до 180 рублей в розницу, 3290 стоногая за 90. Если терраэлектроника накручивает, покажите где по 60 :-)
Derailed
0
Да что тут знать, тут искать надо, где дешевле. Оптовая цена ATmega32A-AU в корпусе TQFP44 полгода назад в Комплар была 64.5 рубля. Не 60, конечно, но почти =).
BarsMonster
0
Вот тут и есть 2 ключевых момента: «пол года назад» и «оптовая цена» :-)
Derailed
0
Насчет оптовой цены согласен, а вот с тем, что полгода назад — и что? Почему вдруг ATmega32 должна дорожать, если появляются новые конкурентные чипы, по такой же и более низкой цене?
BarsMonster
0
Потому что у AVR регулярно бывают проблемы с производством, да и зажрались они в целом :-) AVR вполне обоснованно стрижет купоны с того, что кучу девелоперов на себя подсадили за последний десяток лет.
IgorMats
0
В Харькове на радио рынке покупал пару дней назад за 18 грн. Это грубо говоря 18*3=54 руб.
ftp27
0
Гугло перевод помогает
18 украинских гривен = 66.0544991 российских рубля
Jere
0
Не 3 а примерно 3.7, так что выходит около 67 рублей
Jere
+2
я буду обновлять комментарии, обещаю
IgorMats
0
Я не понял зачем Вы делали лишние телодвижения. Это ничего не меняет.
BarsMonster
+1
И да, фен не особо нужен. Лично мне удобнее было паяльником запаивать эту плату. Каждый отдельный вывод само собой не припаивал — сразу кучу, а поверхностное натяжение само обеспечивало отсутствие КЗ. Единственное, что реально нужно — это жидкий флюс.
k0ldbl00d
0
У DIHALT была хорошая статья про пайку хитрым жалом, которое за счет поверхностного натяжения удерживает лишний припой и отдает ровно столько, сколько нужно.
iliar
+1
Если сложности вызывает именно печатная плата, то есть фирмы которые выполняют изготовление печатной платы по вашей разводке. Стоит это конечно уже не 100р а существенно дороже (зависит от размера партии, например взять 3-5 плат может стоит примерно столько же сколько и одну. количества слоев. размера платы. в 1к если взять чтото несложное из двух словев можно уложиться) и подождать придется недельку другую. Но с другой стороны их многослойностью не испугаешь.
BarsMonster
0
Да, заказывать вполне можно. Но блин медленно. 3 недели ждать можно только если это (полу)коммерческий проект — а свой проект ждать никакого терпения не хватит. Да и если ошибка — нужно быстро переделывать (и это неизбежно на первых порах)…

А так да, особенно у китайцев можно и меньше 1000р за мелкий заказ оставить…
Lockdog
+1
В резоните сделают за неделю максимум, мне за 4 дня делали.
BarsMonster
0
Ну, там и цены вроде не китайские )
uSasha
+1
а что за сетки из проводников у вас на верхнем и нижнем левых углах платы?
Madmess
+1
Видимо «земля»
BaHeK
–2
Только вот зачем в двух сторонах аж… Достаточно было напаеной шайбочки под винт ну и дырочку естественно…
ftp27
+1
Наверное. немного не понял, но чем меньше травиться, тем быстрее. Поэтому там и накидано земли везде где только можно
Madmess
0
Ну может чтобы возле всех выводов земля была поблизости, и при необходимости можно было к ней припаяться без проблем.
Prometheus
+3
«сеточка» — это для красоты :)
BarsMonster
0
1. Для красоты 2. Меньше расход раствора травления.

Сейчас уже не извращяюсь и делаю сплошную заливку — проблем с ЛУТом не возникает на моём принтере.
BarsMonster
0
Т.е. это стандартная заливка которую можно ни к чему не подключать, а можно например к земле подключить. В данном случае это +3.3V. На боевых платах, где вопрос красоты и экономии травителя не стоит, это улучшает стабильность и уменьшает помехи.
dkukushkin
+3
У вас не было случаев перегрева микроконтроллера в момент пайки? Как-то контролируете температуру корпуса? И с утюгом что делать — не совсем понятно?
BarsMonster
+2
Никогда еще не убивал микросхемы во время пайки. Они расчитаны на пайку волной — там температуры до 260 градусов. У меня паяльник обычно не выше 250 стоит. Ну и если есть такая проблема — можно работать легкоплавким припоем Sn43Pb43Bi14 — он плавится при 140 градусах, и стоит недорого. А паяльником с температурой 150-180 градусов сжечь что-либо малореально вообще.

Само собой нужен паяльник с регулировкой температуры. Нерегулируемый вполне может сжечь если неповезет.
BarsMonster
0
Утюг — чтобы переносить напечатаный на бумаге рисунок платы на саму плату — от температуры тонер отлипает от бумаги и прилипает к медной фольге. Это и есть суть ЛУТ.
BarsMonster
+2
Вот тут написано про этой припой чуть подробнее: we.easyelectronics.ru/BarsMonster/nebolshoy-test-3-h-pripoev.html
mihmig
0
Может вам собраться и спроектировать такую «универсальную» плату типа ардуино? Заказать оптом платы.
а) Начинающим не надо возиться с ЛУТ, а сразу переходить к разработке
б) вам профит в виде недольшой наценки.

Я где-то видел такой проект — на атмеге человек собирает и рассылает по почте.
Tokimime
+4
STM32-VLDiscovery Вам в помощь
Tokimime
+1
стоимость порядка $11
woddy
0
еще бы ссылку на нормальный магазин принимающий paypal
Tokimime
0
насчет зарубежных сейчас не подскажу, но в Терраэлектронике и Компэле продаются. Есть еще в Чип и Дип, но там цена по традиции выще раза в 2.
vasechka
0
Как альтернатива, на eBay примерно $20 с доставкой есть. Там принимают PayPal:
seen.ws/8ONe

Есть, например, еще такие варианты чуть более накрученые:
seen.ws/8PML

Дальше уже по фантазии и интересам…
BarsMonster
0
С ЛУТ возится как раз нужно всем ) Это не сложно и быстро, у меня с первого раза все вышло.
Вот с фоторезистом — да, возни много.

Возможность сделать любую плату или подкорректировать существующую под свои нужды — это бесценно.

А так да, STM Discovery упомянутый вполне хорошо работает.

Полноценную (=по всем требованиям и с разъемами а не контактными площадками) мини-отладочную платку разрабатывать вероятно буду, и выложу в открытый доступ, т.к. у меня еще 19 таких МК ).
Zlobober
+2
А можете объяснить мне, никогда не имевшему дела с микропроцессорам, что произойдёт, когда на первой же итерации цикла он попытается поделить на ноль?

Интересная это штука, я смотрю, надо бы попробовать.
vasechka
+5
При делении на ноль он безвозвратно превращается в 8-битную AVR'ку за 200 рублей.
BarsMonster
+1
Хороший вопрос ;-)
DEHiCKA
0
Вообще, какая-то странность с ценами на STM32F100C4T6B.
Если смотреть по ключевым западным поставщикам, то внезапно у всех цена в два раза выше даже при партии от 100штук!
На ту же ATMEGA32U4, как и положено, цена раза в полтора-два выше у нас, чем там.
BarsMonster
0
Это заговор, пересаживают Россию на ARM? :-)
BarsMonster
0
Не, все-таки там этот stm32 в 1.5 раза дешевле atmega32, 2.5 евро против 3.5 )

В данном случае, компел видимо партнер stm и помогает продвигать stm32 тут, продавая эту модель близко к крупнооптовой цене через терраэлектронику.
DIHALT
0
STM сейчас активно лезет в нишу малых контроллеров. Долго время они плелись в хвосте со своими дешевыми, но совершенно унылыми ST7, потом появились ST8 и STM32 и вот тут они почуяли нямку и начали яростно демпинговать, расталкивая всех локтями.
Vooon
0
F100 не очень интересны, а вот на F103 отлично бегает ChibiOS. Хотя сейчас посматриваю на F205…

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Интересные публикации

Вакансии

Заказы