Pull to refresh

Comments 44

Круто! Спасибо! Давно поглядываю на такие контроллеры…
О, хоть кто-то тоже со мной согласен в том, что информации и примеров по STM не так много, особенно по STM8. Дважды уже пытался начать осваивать МК этой конторы, оба раза полный провал. Ваш рывок побудил начать третий раз!
Тоже к STM8 присматриваюсь, а именно вот к этой платке. На Ebay'e она за 1.15$ продаётся. Есть ещё вариант: отдельно МК + адаптер… получится 55 центов за комплект, но как-то страшно браться за пайку корпусов с таким шагом выводов (0.65 мм).
Шаг 0,65 — это очень много и без проблем паяется после небольшой тренировки нормальным паяльником.
Паял как-то FT232 — шаг 0.3 — на удивление тоже относительно просто.

Вот отличное видео по пайке.
Да, без видео от DiHalt в деле пайки SMD редко обходится :)
Ага. У меня иной раз складывается впечатление что он пол страны паять научил :-)
В принципе есть и в DIP корпусе. Например STM8S105K4. Но естественно очень ограниченный выбор.
Припаял МК к адаптеру, всё получилось:
image
Только нужен ещё микроскоп, иначе перемычки плохо вижу. Использовал фотоаппарат в режиме веб камеры.
Написал Blink в IAR:
#include "iostm8.h"

int main()
{ 
  PD_DDR_bit.DDR3 = 1;  // Ножка PD7 конфигурируется на вывод
  PD_CR1_bit.C13 = 1;   // Выход типа Push-pull
  PD_CR2_bit.C23 = 1;   // Скорость переключения - до 10 МГц.
  
  volatile int i;
  for(;;){
    PD_ODR_bit.ODR3 = 1;
    for(i=0; i<0xffff; i++){};
    PD_ODR_bit.ODR3 = 0;
    for(i=0; i<0xffff; i++){};
  };
}


Всё заработало, диод мигает!
Поздравляю!

По поводу перемычек — если они у вас образуются — вероятно вы используете слишком много припоя. Нужно минимум раза в полтора меньше.

Ну и я перемычки тоже не особо вижу, просто промазываю все выводы флюсом и превентивно пару раз провожу паяльником по выводам по направлению от микросхемы. Поверхностное натяжение у припоя весьма больше и если его не избыток — то перемычки разойдутся сами.

Самое грустное что приходилось паять — акселерометр LIS344ALH и гироскоп LYPR540AH — контактные площадки под корпусом шириной 0.25 через 0.25 мм. В первый раз удивился когда удалось вытравить плату ЛУТом, во второй когда после пайки оно заработало. На паяльную станцию с термофеном все никак не разорюсь. Вот видео подобного сумасшествия от DiHalt. После этого на пайку всего что имеет выводы выступающие за пределы корпуса смотрю с оптимизмом. :-)

Собственно, там никакого сверхъестественного мастерства не надо. Секретов два. Первое — это жало не «как у советского паяльника», а «вечное» скошенное под 45 градусов. http://ec.hakko.com/imgs/det/900M-T-K.jpg А второе — т. н. оплётка для снятия припоя (можно даже не покупать, а раздраконить дохлый USB-кабель). Одним движением припаиваем все ноги с одной стороны микросхемы. А когда всё припаяли, точно так же обрабатываем ноги паяльником, но уже через оплётку, на каковую собирается лишний припой. Ежели не очень щедриться с припоем, даже оплётка может не понадобиться. Ну или феном можно — там ещё проще, но есть риск перегреть.
Паяю давно и LQFP и безвыводные LGA.
ИМХО.
Использовал оплетку для снятия припоя с ног только один раз и успеха не добился. Пришлось плату выбрасывать. С тех самых пор вооружился припоем толщиной в 0.5 мм. В одной руке паяльник, в другой — припой. И дозировать удобно и просто паяется.

В конце почти каждого даташита есть график «Solder Reflow Profile», описывающий как правильно паять деталь, чтобы не перегреть.
> Использовал оплетку для снятия припоя с ног только один раз и успеха не добился.

Быть может, паяльник был недостаточно правильной формы? Или оплётку забыли флюсом смочить? Ну и некоторые оплётки вообще припоем не смачиваются.

> Solder Reflow Profile

Ага, только им можно воспользоваться только тогда, когда мы можем измерить температуру микросхемы и точно её регулировать. Ни с паяльником, ни с феном этого не получится, только паяльная печь.
А ежели какая-то сопля не убирается, то можно на неё нанести побольше припоя, тогда есть неплохая вероятность, что «за компанию» впитается.
При должной сноровке паяльником с нормальным жалом (необгорающим) STM32F030F4P6 в TSSOP чудесно паяется.

image

Это же чудо стоит 55 центов за чип, поэтому для меня смысл использования в самопальстве STM8 ускользает.
Покупайте сразу esp-14, еще и вафляй будет на борту :)
Зачем вообще нужен STM8, если цена STM32 копеечная, а функционал не в пример выше?
Ну у STM8 есть некие вкусные аппаратные решения, например драйверы LCD со сверхнизким потреблением, логика управления двигателями, ещё что-то. Применение можно найти.
Значит отстал от жизни :)
У stm8 есть несколько преимуществ — они дешевые, маленькие, и низкожрущие. По низкожрущести с ними из кортексов можнт потягаться разве что lpc11xx, но их в паябельных корпусах фиг пока найдешь. Только qfn33.
У stm8 есть корпуса как у атмела с шагом 0.8, что резко легче паяется в любительских условиях, чем 0.5.
STM8 — легкий копеечный 8-битный мелкоконтроллер для игрушек; STM32 — вещь намного серьезней ( 32 бита, всякие DMA и т.п.).
А меня от изучения STM останавливает отсутствие свободного софта под *nix, в частности под FreeBSD, либо тот факт, что оный софт хорошо скрывается. Под AVR у меня из коробки есть avrdude (прошивальщик), avra (ассемблер), avr-{gcc,binutils,libc} (C тулчейн), под STM навскидку не нашёл ничего.
Эммм. Eclipse, к нему gnu arm toolchain, и софт для st-link тоже есть открытый. И GDB по-моему тоже цепляется. Это если про STM32. За 8 ничего не скажу.
Софт для st-link работает как gdb сервер (под линуксами). Для JTAG'ов разных есть OpenOCD (http://openocd.org/).
Спасибо. Просто я относительно полноценной работы с STM32 под Linux пока не развернул, ограничился изучением технической возможности. Ну и бинарники, в mbed сооруженные, прошивал.
За 8 ничего не скажу.

Так а ничего и нет, на сколько знаю. Точнее не добавили его в GCC, а нет компилятора — можно забыть.
Беглое гугление показало, что есть какой-то вроде живой SDCC. Впрочем, я в это лезть как-то не очень хочу.
Эклипс поставил. Настроить отладку сумел, хотя не без ударов головой об стол. Программу под отладочную плату STM32F3 Discovery написал, всё нормально. Но потом нужно было просто тот же самый код собрать под STM32F1, на которой работает финальное устройство, и тут я поимел много неприятных часов, пытаясь правильно сконвертировать проект. В итоге сделал с помощью STM32Cube и такой-то матери. НО: отладку на F1 так и не смог заставить работать! OpenOCD выдаёт непонятные ошибки, и никаких решений я не нашёл.

Это было первое негативное впечатление. А второе — ничерта нет примеров / библиотек, особенно под Эклипс (или, хотя бы, не заточенных под какую-то другую среду). Хотел сделать USB HID эмулятор, долго гуглил, в итоге отчаялся и оставил пока эту идею, лучше куплю готовое за 25 долларов, с учётом времени дешевле выйдет. Если и делать — то на Ардуино. Мне не нравится идея программировать под древний ATMega, когда за те же деньги есть гораздо более мощный ARM, но отсутствие инфраструктуры очень быстро отбивает желание использовать STM32.
Я не занимаюсь профессионально и/или углубленно разработкой. Так, решаю собственные задачи. Могу сказать, что пробовал работать с F0 и F1, и как-то получалось, но законченного ничего не делал. А при таком подходе тоже пришел к выводу, что STM32 — круто, но возиться с ним не хочу. Хотя бы потому что практически все мои задачи решаются AVRками от t13 до m8.
Для ARM-микроконтроллеров есть порт GCC, так что как минимум компилятор свободный уже есть. Для прошивки через программатор StLink есть этот OpenSource-проект — github.com/texane/stlink. В отличии от avrdude умеет не только шить, но и запускать GDB-сервер для отладки через SWD. Для загрузки прошивки через USB bootloader есть свободная dfu-util. Для загрузки через UART bootloader тоже что-то есть. В качестве библиотек можно использовать официальные заголовочники от ST, но если не нравится есть libopencm3 и ChibiOS HAL. Или вообще открыть даташиты и писать чисто по ним.

В общем, свободных инструментов достаточно для полного цикла разработки. Вот с STM8 есть беда — из компиляторов есть лишь SDCC, который значительно проигрывает GCC в качестве генерации кода, да и, кажется, там поддержка STM8 до сих пор экспериментальная.
Все эти аналоги присутствуют и для ARM. В частности из Арчика надо установить arm-none-eabi toolchain www.archlinux.org/packages/?q=arm-none-eabi и stlink.

В сети можно найти много hello world примеров для работы с тулчейнами без использования IDE.
Чипы STM32/STM8 вещь интересная, но:
1) Мощная многорежимная периферия. Настройка часто бывает достаточно сложной и не всегда очевидной.
2) Переход от AVR для новичков сложен. Особенно после очень долгого сидения на AVR.

Для самопального осциллографа лучше взять из серии STM32F3:
1) Ульта-быстрый 12-bit ADC с 5 MSPS на канал (до 18 MSPS в «Interleaved» режиме)
2) USB 2.0 full speed interface. Несложно прикрутить USB 3.0.
3) Несложно прикрутить быструю память.
4) Более высокая тактовая позволяет быстро обработать данные. Меньше накладные расходы на реализацию USB.

Быстро цифруем с быстрой заливкой в внешний чип памяти. Потом уже не торопясь сливаем через USB.
Возможно, у Вас уже есть на примете такие проекты осциллографов? Очень бы хотелось дёшево смотреть сигнал на 20 МГц.
Он есть, но в процессе разработки. Правда без внешней памяти. С использованием внутренней памяти.

А дешево посмотреть сигнал на 20 МГц — задача очень сложная. Это тебе нужно около 60 MSPS ( не меньше). Чисто микроконтроллером это не взять. Необходима связка:
1) (АЦП+ПЛИС+RAM) для захвата в память + логика триггеров.
2) STM32 для внешнего обмена, индикации, кнопочек, экранчиков… При этом туда красиво можно вписать USB3300 USB HS PHY Board для реализации USB 2.0 Hi-Speed (25—480 Мбит/с)
Это тебе нужно около 60 MSPS

Это чтобы увидеть наличие этих 20МГц. Чтобы рассмотреть — 200 msps
Все верно. 60 MSPS — это самый минимум.
Есть проект Neil Scope. У него полоса пропускания как раз 20 МГц и частота семплирования до 200 МГц. Там как раз связка из ADC+CPLD+RAM+MCU.
Интересный проект. Жаль, нельзя купить платы без корпуса, или еще как-то подешевле обойтись. И герберы они что-то зажали, или я плохо ищу.
Герберы не выкладывали вроде. Но обещали еще давно что откроют. Не помешает спросить на их форуме на тот случай если забыли.
Хочу предостеречь. Нужно тщательно защищать входы АЦП от выхода за пределы по напряжению. Причем резистора недостаточно. Проверено — от уходов ниже нуля и выше опорного напряжения АЦП деградирует, возрастают шумы и дифнелинейность. Столкнулся с этим в процессе работы над гамма-спектрометром — сначала все устраивало (с разравниванием, конечно), а потом характеристики испортились. На другом АЦП того же контроллера все осталось в норме и деградации не замечено после установки ограничителя.
Мало что в этом понимаю, т.к. пока играюсь только с ардуинкой, но удивлен отсутсвием упоминания проекта miniscope, вот тут http://tomeko.net/miniscope_v2c
Таких проектов море. Ничего интересного. Всего 500 kSps. Любой за 30 минут напишет.
Ради интереса ( разминки пальцев ради )
1) Открыл mikroPascal PRO for ARM. Создал простой проект. Добавил 2 стандартные библиотеки «ADC Library» и «USB Library»
2) Написал 2 строчки. Инициализация ADC и USB.
3) В основном цикле читаем ADC и кидаем в USB. 4 строки.
4) Слегка дорабатываем напильником для получения законченного проекта.

Уложился в 5 минут. А смысл? Рядовая тривиальная не интересная программа.

Глубокое изучение железа автором статьи с целью выжать «максимум» — это похвальное желание. 9 MSPS от STM32F103C8T6 — за такое автору респект и уважение.
Sign up to leave a comment.

Articles

Change theme settings