Iar ewarm. stm32f030f4p6. микроконтроллер отсутствует в списке…

IAR EWARM. STM32F030F4P6. Микроконтроллер отсутствует в списке.

Решил я сделать одно несложное устройство на микроконтроллере STM32. Начал искать недорогие варианты. После недолгих поисков мне приглянулся STM32F030F4P6. Заказал микроконтроллеры, получил посылку.

Вот так они выглядят. Корпус TSSOP-20.

Вытравил плату, настало время писать прошивку. Открываю IAR, создаю новый проект, и . микроконтроллера не оказалось в списке выбора!

Я совсем не ожидал такого исхода событий, поэтому буду исправлять ситуацию. Всё делаю на примере STM32F030F4P6, для других микроконтроллеров всё делается по аналогии. Для начала заглядываю в даташит, и смотрю какое ядро используется в микроконтроллере.

На первой странице даташита написано, что используется ядро ARM Cortex M0. В настройках проекта на вкладке «General Options» выбираю ядро (core) Cortex M0.

Далее необходимо настроить адреса и количество памяти Flash и RAM. Захожу на вкладку «Linker», жму кнопочку «Edit».

На вкладке «Vector Table» проверяем стартовый адрес, с которого начинается выполнение программы. Должно стоять значение 0x08000000. Если всё верно — идём далее, если нет — правим.

Далее идём на следующую вкладку «Memory Regions». Здесь самое важное.

Необходимо задать начальные и конечные адреса для Flash и RAM памяти. Где же взять эти адреса? Идём в даташит, в раздел «Memory Mapping», и ищем там схематическое изображение адресного пространства микроконтроллера.

Итак, из этой картинки мы можем узнать адрес начала Flash, и адрес начала RAM, это будут значения 0x08000000 и 0x20000000 соответственно. Вбиваем эти значения в графы «Start». Теперь необходимо вычислить конечные значения «End» — они равны начальному значению + размер памяти, а размеры памяти можно без проблем найти в даташите. Ищем раздел «Description» и находим там табличку. В этой табличке указаны основные характеристики всей линейки микроконтроллеров, здесь же указаны объёмы Flash и RAM памяти. Находим в табличке наш микроконтроллер — в моём случае это STM32F030F4P6, смотрим количество памяти.

Теперь, зная объёмы памяти и начальные адреса, можно вычислить конечные адреса. Берём в руки калькулятор, и складываем. Не забываем, что 4 килобайта это 4096 байт, а 16 килобайт это 16384 байта.

Flash = 0x08000000 + ((16 * 1024) — 1)
Flash = 0x08000000 + 16383
Flash = 0x08000000 + 0x3FFF
Flash = 0x08003FFF

То же самое проделываем и для RAM памяти.

RAM = 0x20000000 + ((4 * 1024) — 1)
RAM = 0x20000000 + 4095
RAM = 0x20000000 + 0xFFF
RAM = 0x20000FFF

Мы рассчитали конечные адреса Flash и RAM памяти, вбиваем их в графы «End». Наверняка многим не понятно, почему при расчётах я отнимаю единичку. Дело в том, что по адресу Flash 0x08000000 уже находится первый байт, следовательно, нужно этот байт учесть при расчёте.

Итак, адреса вбили, переходим на последнюю вкладку «Stack/Heap Sizes». Здесь необходимо указать размеры стека (stack) и кучи (heap). Настройка этих значений индивидуальна для конкретного проекта. В своём проекте я выделяю под стек 1024 байта, а кучу не использую, поэтому ставлю по нулям.

Сохраняем проект, теперь добавляем файлы Standart Peripheral Library.

Запускаю компиляцию клавишей F7, и вуаля. Готово. Теперь можно программировать.

IAR EWARM. STM32F030F4P6. Микроконтроллер отсутствует в списке…

Решил я сделать одно несложное устройство на микроконтроллере STM32. Начал искать недорогие варианты. После недолгих поисков мне приглянулся STM32F030F4P6. Заказал микроконтроллеры, получил посылку.

Вот так они выглядят. Корпус TSSOP-20.

Вытравил плату, настало время писать прошивку. Открываю IAR, создаю новый проект, и … микроконтроллера не оказалось в списке выбора!

Я совсем не ожидал такого исхода событий, поэтому буду исправлять ситуацию. Всё делаю на примере STM32F030F4P6, для других микроконтроллеров всё делается по аналогии. Для начала заглядываю в даташит, и смотрю какое ядро используется в микроконтроллере.

На первой странице даташита написано, что используется ядро ARM Cortex M0. В настройках проекта на вкладке «General Options» выбираю ядро (core) Cortex M0.

Далее необходимо настроить адреса и количество памяти Flash и RAM. Захожу на вкладку «Linker», жму кнопочку «Edit».

На вкладке «Vector Table» проверяем стартовый адрес, с которого начинается выполнение программы. Должно стоять значение 0x08000000. Если всё верно — идём далее, если нет — правим.

Далее идём на следующую вкладку «Memory Regions». Здесь самое важное.

Необходимо задать начальные и конечные адреса для Flash и RAM памяти. Где же взять эти адреса? Идём в даташит, в раздел «Memory Mapping», и ищем там схематическое изображение адресного пространства микроконтроллера.

Итак, из этой картинки мы можем узнать адрес начала Flash, и адрес начала RAM, это будут значения 0x08000000 и 0x20000000 соответственно. Вбиваем эти значения в графы «Start». Теперь необходимо вычислить конечные значения «End» — они равны начальному значению + размер памяти, а размеры памяти можно без проблем найти в даташите. Ищем раздел «Description» и находим там табличку. В этой табличке указаны основные характеристики всей линейки микроконтроллеров, здесь же указаны объёмы Flash и RAM памяти. Находим в табличке наш микроконтроллер — в моём случае это STM32F030F4P6, смотрим количество памяти.

Теперь, зная объёмы памяти и начальные адреса, можно вычислить конечные адреса. Берём в руки калькулятор, и складываем. Не забываем, что 4 килобайта это 4096 байт, а 16 килобайт это 16384 байта.

Flash = 0x08000000 + ((16 * 1024) — 1)
Flash = 0x08000000 + 16383
Flash = 0x08000000 + 0x3FFF
Flash = 0x08003FFF

То же самое проделываем и для RAM памяти.

RAM = 0x20000000 + ((4 * 1024) — 1)
RAM = 0x20000000 + 4095
RAM = 0x20000000 + 0xFFF
RAM = 0x20000FFF

Мы рассчитали конечные адреса Flash и RAM памяти, вбиваем их в графы «End». Наверняка многим не понятно, почему при расчётах я отнимаю единичку. Дело в том, что по адресу Flash 0x08000000 уже находится первый байт, следовательно, нужно этот байт учесть при расчёте.

Итак, адреса вбили, переходим на последнюю вкладку «Stack/Heap Sizes». Здесь необходимо указать размеры стека (stack) и кучи (heap). Настройка этих значений индивидуальна для конкретного проекта. В своём проекте я выделяю под стек 1024 байта, а кучу не использую, поэтому ставлю по нулям.

Сохраняем проект, теперь добавляем файлы Standart Peripheral Library.

Запускаю компиляцию клавишей F7, и вуаля. Готово. Теперь можно программировать.

Arduino.ru

stm32f030

Вот приобрел плату stm32f030. Как я понял более новое железо с хорошимим возможностями.

Среда разработки arduino распознает его как Leonardo при этом Leonardo не подходит. Не загружается код в плату.

Может кто уже разобрался с єтим чудом китайской техники ?

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

Правда там про STM32F103

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

И всё же, хотелось бы узнать и о STM32F030C8T6.
Дружит STM32F030C8T6 с arduino? Как подружить?
Шаманства описанные для STM32F103C8T6 — дружбе не помогают.
STM32F051C8T6 и STM32F030C8T6 по функционалу идентичны.
На Али выглядит так:
STM32F030C8T6 ARM STM32 минимальная системная плата для Arduino DIY KIT
https://aliexpress.ru/item/4000834520145.html

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Читайте также  Пиропатрон — элемент активной охраны

Вы прикалываетесь или как?
Стм32030 не имеет с ардуино ничего общего.

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

«Прикалываются» китайцы. Вы по ссылке переходили? Надпись «для Arduino DIY KIT» видели?
А STM32F103 имеет с Ардуино что-то общее?

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

Если сходить по ссылкам из http://arduino.ru/forum/obshchii/arduino-ide-addon-ot-stm32 то окажется, что из нулевых поддерживается только STM32F030F4 , как раз она. Как поставить аддон для поддержки там описано. Да ещё нужен stlink для загрузки программ.

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

А этот зверь разве не на STM32F030C8T6?
https://github.com/r-pv/rSTM32F030C8T6_ProMiniPlus

rSTM32F030C8T6 ProMini+
«An ST development board based on the STM32F030C8T6 (Clock: 48MHz, Flash: 64Kb, Ram:8Kb) MCU compatible with STM32Duino (Arduino).»

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

nik182, прикол вот в чём: быстренько бежим по вашей ссылке. с неё тропа ведёт на
https://github.com/stm32duino/Arduino_Core_STM32#nucleo-64-boards
Где есть следующие строки:
Supported boards
Nucleo 64 boards
STM32F030R8
Discovery boards
STM32F030R8
Неужели STM32F030R8 так сильно отличается от STM32F030C8T6, кроме корпуса и количества ног?

Интересует: не возможно в принципе или никто не делал (не хочет, потому что «старый» чип)?

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

Alex-Bee — вынужден повторить вопрос — когда вы писали, что пытались прошивать свою плату как ардуино леонардо — вы прикалывались ? Вы понимаете, что надписи на Али про совместимость этих плат с Леонардо или Промини — это полная чушь?

Независимо от того, поддерживается ли эта конкретная плата аддоном от СТМ — в любом случае stm32duino это не ардуино и даже не «совместимая» плата, а совершенно отдельная линия контроллеров, на которых не запустятся подавляющее число бибблиотек ардуино и для работы с которыми требуется » шаманство», например специальный программатор.
Если вы все это понимаете, разбираетесь в микроконтроллерах и готовы осваивать работу с чипом по даташиту — тогда вопросов нет, хотя и тогда я бы советовал выбрать вместо вашего мк -stm32f103
А если вы не прикалываетесь и всерьез думаете, что это какая-то разновидность ардуино, типа промини или леонардо — тогда должен повторить, что это не имеет ничего общего с реальностью

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

О, а errata — это просто праздник какой-то, ням-ням! А ещё разномастный зоопарк от ST в виде HAL и пр. и пр., у каждого унутре — своя неонка. Весело, хер соскучишься.

Из последнего: работа с SDIO. В доке написано среди прочего — есть флаг HWFC_EN (hardware flow control enable). Включаешь такой его, херак — работает как бык поссал, т.е. через раз. Чешешь репу, роешь инет, находишь errata: https://www.st.com/resource/en/errata_sheet/dm00068628-stm32f427437-and-stm32f429439-line-limitations-stmicroelectronics.pdf — где на странице 32 сказано: могут возникнуть сбои. Могут, млять. Не возникают, а — то ли возникнут, то ли нет.

Какое решение? Правильно — не юзайте HW flow control, пацаки, а все ошибки переполнения — шобы сами, программно ловили. Отака херня.

А всё почему, пмсм? Не, STM32 — хорошие, годные камни. Но клепать их, как кура производит говно — не стоит. Лучше бы потратили чуть больше времени на проверку железа (как она, кста, делается до производства? Не на эмуляторе, случаем?). Хотя это — уже влажные мечты, хаваем, что есть.

В этом разрезе та же Atmega328 — выглядит просто милой, безвредной няшкой. Да и с Due — не особо проблем припомню. Но вот заманил к себе STM32 всякими плюшками, типа FSMC, лапка увязла — всей птичке пропасть 🙂

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

b707, всё началось с того, что был не внимателен и вместо Blue Pill (stm32f103) вот «это» синее, что выше, взял (на STM32F030C8T6).
Как Ардуино, естественно, шить не пытался. Повторять не надо 😉
Специальный программатор (ST-Link) не очень то для прошивки и нужен.
Переходником с USB на UART (TTL конвертером) по Tx/Rx (A10/A9 ) вгружаем бутлоадер, чтобы плата заработала с аддоном от СТМ.
Шьются без проблем (пробовал разные). ну и всё, только шьются.
Теперь, благодаря nik182, знаю что именно эта плата/контроллер аддоном не поддерживается.
Теоретически — бутлоадер для stm32f103 должен хоть начать выполняться на stm32f030?
Ну и с rSTM32F030C8T6_ProMiniPlus вопрос остается открытым: для нее собственный аддон?

Use To Advantage

Используй с пользой!

  • Статьи
  • О сайте

Разработка таймера на STM32 Часть 1 — физика устройства

  • Currently 1.89/5
  • 1
  • 2
  • 3
  • 4
  • 5

1.9/5 (665 голоса)

Контроллер STM32 позволяет на его основе делать довольно компактные устройства с низким потреблением энергии. Воспользуемся микроконтроллером начального уровня STM32F030F4P6 для изготовления на его основе компактного многофункионального таймера. Устройство действительно многофункционо, поскольку планируется сделать церых пять режимов работы. Устройство будет отображать информацию посредством трехцифрового индикатора (семь сегментов на цифру и один на точку) и трех цветных светодиодов.

Функции будут следующими:
1. Таймер. Нужен для засекания времени и оповещения о том, что время вышло.
2. Секундомер.
3. Термометр, кстати, практика использования шины I2C
4. Эмулятор броска двух кубиков.
5. Режим релаксации, медленного включения и выключения светодиодов разных цветов. (вот здесь нужен программный ШИМ)

Начнем с проектирования «железа».
Все устройство будет управляться контроллером STM32F030F4P6 и для этих функций возможностей STM32 более чем достаточно, даже с небольшим количеством выводов в корпусе TSSOP20

Контроллер позволяет включить его практически без обвязки, подав только питание. Поскольку устройство переносное, а контроллер питается напряжением 2.4 — 3.6 вольта, то для питания используется 2 пальчиковых батарейки AA напряжением 1.5 вольта без дополнительных стабилизаторов. Контроллер работает от двух батареек, даже слегка подсевших.Единственное, что нужно внимательно соблюдать полярность. Защиты по питанию нет, если неправильно вставить батарею, то контроллер сгорит.

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

Отображение будет осуществляться при помощи индикатора BA56-11GWA с общим анодом. В каждом Общий анод позволит использовать для управления светодиодами специализированный драйвер светодиодов STP16CP05MTR у которого есть 16 выходов. Поскольку у индикатора BA56-11GWA есть выходы на каждый светодиод, то мы можем использовать статическую индикацию.

Схема с общим анодом позволяет управлять индикатором с бОльшим, чем у контроллера напряжением питания, но в данном устройстве будет одно напряжение питания на всю схему. Поскольку при статической индикации для управления каждым отдельным светодиодом потребуется 24 линии управления, то будем использовать два драйвера светодиодов STP16CP05MTR, который представляет собой два стандартных сдвиговый регистра в одном корпусе, управляемых по протоколу SPI, то соединив в каскад две микросхемы, мы могли бы управлять четырьмя цифрами. У нас есть три, а остальные выходы задействуем для управления цветными светодиодами индикации режимов.

Читайте также  Cветодиодный фонарь из... калькулятора

Получаем 8 светодиодов на одну цифру, т.е. нам понадобится каскад из двух драйверов светодиодов. Кроме того, что одна микросхема драйвера фактически включает в себя два сдвиговых регистра, что неплохо экономит меcто на плате, у этого драйвера есть очень интересное свойсво, нам не нужны будут нагрузочные резисторы для каждого светодиода, поскольку используется один нагрузочный резистор один на микросхему, который подключается к выводу R-EXT
Расчитывается номинал по схеме из даташита.

Если поставить переменный резистор, то можно даже управлять яркостью светодиодов. В нашем случае был использован резистор 2 КОм для 10 милиампер тока на каждый резистор.
Информацию от пользователя будем получать при помощи двух кнопок без фиксации. Этого достаточно для создания двухуровнего меню, а если использовать отслеживание одновременного нажатия кнопок, то получим фактически три кнопки, чего будет достаточно для настройки и управления.
Для получения значения окружающей температуры воспользуемся датчиком

Датчик работает по линии I2C, и требует для подключения двух нагрузочных резисторов на эту линию.

Для более точной работы (хотя это и не обязательно) будет использоваться кварц 8 мегагерц.

У контроллера в корпусе TSSOP20 всего 20 выводов. Для нашего приложения они будут распределены следующим образом

  1. boot0 — на землю
  2. PF0 OSC_IN — подключение кварца
  3. PF1 OSC_OUT — подключение кварца
  4. NRST — резет не задействуе
  5. VDDA — 3.3V
  6. PA0 — не используется
  7. PA1 — кнопка 1
  8. PA2 — кнопка 2
  9. PA3 — не используется
  1. PA4 spi nss LE — импульс защелки
  2. PA5 — SPI1_SCK — импульсы
  3. PA6 — SPI1_MISO не используем, будет управление ШИМ на светодиоды
  1. PA7 — SPI1_MOSI выход данных
  2. PB1 — простая пищалка
  1. VSS — 3.3 v
  2. VDD — земля
  3. PA9 — I2C1_SCL(2)(5) — для опроса температуры
  4. PA10 — I2C1_SDA(2)(5) — для опроса температуры
  5. SWDIO_PA13 — отладчик
  6. SWCLK_PA14 — отладчик

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

Схема таймера на STM32, нажмите для увеличения.

Печатная плата делалась под конкретную коробочку, поэтому пришлось расположить детали довольно компактно. Хотя плата двусторонняя, но выполнить ее вполне можно в домашних условиях методом ЛУТ.

Разводка платы при помощи программы Eagle вручную. Автомат не смог сделать, слишком много переходов с одной стороны на другую. Плата и схема в формате Eagle доступна для бесплатного скачивания здесь>>

Микроконтроллеры Процессоры, проекты, программирование

Nav view search

Навигация

Искать

  • Микроконтроллеры
    • Микроконтроллеры
    • Отладочные платы
    • Языки программирования
    • Разное
  • Микроконтроллеры 8 бит
  • Микроконтроллеры 32 бит
  • Периферийные устройства
  • Проекты

Микроконтроллеры

Микроконтроллеры STM32F030

Также как и другие производители, STM озабочена все еще высокой популярностью 8-ми разрядных микроконтроллеров. Хотя на замену уже предлагается множество вариантов систем, разработчики выдают все новые модели. Одним из таких проектов стала серия микроконтроллеров STM 32 F 03 x . Она пришла на замену STM 32 F 05 x и во многих публикациях уже получила громкое имя вроде «Убийцы AVR ок». Тем не менее, при детальном рассмотрении не все так безоблачно, как того хотят рекламные заявления.

Производитель позиционирует микроконтроллеры STM 32 F 03 x как микросхемы начального уровня. При этом по многим возможностям эти устройства могут конкурировать и с другими, более серьезными моделями. В частности их производительность составляет 38 DMIPS , что превышает показатели STM 32 L 1 равные 33 DMIPS . Микроконтроллеры построены вокруг ядра серии Cortex — M 0, способного работать на частоте 48МГц. Объем памяти варьируется в зависимости от модели, в диапазоне от 16кБ для Flash памяти и 4кБ RAM , до 64кБ Flash и 8 кБ RAM соответственно. Внутренняя структура повторяет традиционную схему STM 32. Благодаря этому достигается высокая преемственность моделей и упрощается переход с одной серии на другую. Набор периферийных устройств также традиционен: порты ввода вывода, разнообразные таймеры, 12-битный АЦП, встроенный генератор тактового сигнала, часы реального времени, интерфейсы SPI , I 2 C , USART . Особых новшеств по сравнению с другими микроконтроллерами от STM не наблюдается. Тем не менее, высокая производительность и широкий набор периферийных устройств делают эти микросхемы привлекательной заменой 8-ми разрядных моделей. Этому же способствует и предельно низкая стоимость. Производителем заявлена цена в 0.32$. Естественно, что в рознице она будет выше, тем не менее, величина вполне сопоставима, а в некоторых случаях и лучше цены 8-ми разрядных процессоров.

Напряжение питания процессоров лежит в диапазоне от 2.4 до 3.6В. Потребляемый ток зависит от режима работы. В спящем режиме он заявлен на уровне 3.4мкА, в рабочем составляет 250мкА на МГц. Следует учитывать, что потребляемый ток также зависти от количества используемых модулей микроконтроллера и приведенные цифры скорее ориентировочны.

Расположение выводов stm32f030

Главным новшеством стало появление в серии STM 32 F 0хх корпуса типа TSSOP -20. Хотя его размеры меньше серий SO и тем более DIP , он более пригоден для ручной пайки, что может обеспечить дополнительную популярность среди любителей. К сожалению, процессор STM 32 F 030 F 4, несколько обрезан по сравнению с основной серией. В частности это касается одного из самых интересных блоков – часов реального времени ( RTC ). Наличие этого устройства изначально выделяло микроконтроллеры STM 32 из ряда других систем, позволяло не использовать дополнительные микросхемы, а также давало возможность реализовывать несколько интересных алгоритмов, связанных с часами. В рассматриваемом процессоре блок RTC также есть, но отсутствуют линии подключения внешнего резонатора и питания часов от резервной батареи. Если с первой проблемой еще как-то можно справиться, переключив источник частоты на основной генератор, то при пропадании питания часы работать перестанут.

Как было сказано выше, особых новшеств в серии не представлено. С одной стороны хотелось бы увидеть что-то наподобие полного ремаппинга портов, как в LPC 810, с другой полная преемственность с другими, в том числе и более мощными, моделями. Это дает микроконтроллерам большое преимущество при их освоении. Переход с одной серии STM 32 на другую особых проблем не представляет, так как все устройства имеют идентичную структуру. Некоторые отличия в аппаратной части можно считать незначительными. Для быстрого старта производитель традиционно предлагает дешевые отладочные платы серии Discovery . Новинкой стала плата Nucleo , объединившая в себе идеологию Discovery , форм-фактор Arduino и программирование mBed . К сожалению, (возможно пока) данная плата не поддерживает среду разработки Arduino IDE , что, скорее всего, сделало бы ее новым хитом.

Если подвести итог, то серия STM 32 F 03 x представляет собой упрощенный и предельно удешевленный вариант микроконтроллеров STM 32. Попытка использовать новый корпус конечно хороша, но ее реализация далека от удачной. В итоге использовать данные микроконтроллеры логично только в приложениях, критичных к цене, что кстати, и рекомендует производитель. Пока полноценного «убийцы» 8-ми разрядных систем у STM не получилось.