Сімейство мікроконтролерів STM32. Особливості та характеристики

Вступ до сімейства мікроконтролерів STM32

Однокристальні мікроконтролери знаходять широке застосування в найрізноманітніших сферах: від вимірювальних приладів, фотоапаратів і відеокамер, принтерів, сканерів і копіювальних апаратів до виробів електронних розваг і різноманітної домашньої техніки.

Перші мікроконтролери зявилися в 70-х роках минулого століття, з того часу найбільше поширення отримали 8-бітні мікроконтролери, розробка 32-х розрядних затяглася на довгі роки. Ситуація змінилася з бурхливим розвитком мікропроцесорної архітектури ARM. Проста й дешева у виготовленні, вона стала широко використовуватися у вбудованих пристроях.

Мікроконтролери ARM Cortex-M стали сьогодні одними із самих популярних процесорів, застосовуваних при розробці й виготовленні електронної техніки. Висока обчислювальна потужність, широкий набір периферії й низька вартість роблять ці пристрої привабливими для самого широкого кола розробників. При цьому кожний бажаючий може вибрати найбільш підходящий варіант для розв'язку конкретного завдання. Виробники пропонують величезну кількість різноманітних мікросхем, загальним для яких залишається тільки процесорне ядро. 

У даному огляді розглянуто сімейство мікроконтролерів STM32 компанії STMicroelectronics основаних на архітектурі ARM (Advanced RISC Machines) Cortex-М.

Загальні відомості про STM32 мікроконтролери

Процесори ARM використовуються в різноманітних пристроях. Використання RISC-архітектури (архітектура зі скороченим набором команд) дозволило ARM створювати ядра з малою кількістю транзисторів, що позитивно вплинуло на енергоспоживання та ціну. Широке поширення даної архітектури обумовлено тим, що компанія ARM займається тільки проектуванням процесорів та продає ліцензії на використання технології третім фірмам. При цьому гарантується сумісність коду на рівні інструкцій процесора, тобто один і той же код буде працювати на мікроконтролерах різних виробників. Однією з таких компаніє є STMicroelectronics, її сімейство STM32 засноване на архітектурі Cortex-M.

Загалом ARM працює в трьох напрямках:

("Application")– Ядра для класичного застосування

R ("Real-Time") – Ядра для вбудованих систем, працюючих у режимі реального часу.

M ("Microcontroller")– Ядра для мікроконтролерів

В свою чергу досліджувана Cortex-M поділяється на підсімейства:

Cortex-M0 – позиціонуються в якості заміни 8-ми розрядних моделей, в основі лежить архітектура ARMv6-M. Використовуються набір команд Trumb 
(16-розрядні) та деякі команди з більш сучасного набору Trumb2. Це дуже спростило процесор при невеликій втраті потужності. Швидкодія ядра складає 0.84 DMIPS/МГц (DMIPS – кількість операцій за секунду (MIPS) виконаних в синтетичному тесті Dhrystone ).

Cortex-M1 – реалізований лише у вигляді програмної моделі, призначений для використання в програмованих логічних матрицях.

Cortex-M3 – найбільш популярний і збалансований варіант. В основі лежить архітектура ARMv7-M, з повним набором команд Trumb і Trumb2. Особливістю є апаратне множення 32-розрядних чисел всього за 1 цикл та ділення, за 2-12 циклів. Енергоспоживання виросло в два рази порівняно з М0, але виросла і потужність – 1.25 DMIPS/МГц

Cortex-M4 – відмінність цього підсімейства від попереднього полягає лише доповненням DSP-інструкціями. Вони дозволяють суттєво прискорити швидкість обробки потокових даних – можна паралельно виконувати чотири операції додавання/віднімання 8-ми розрядних чисел або дві операції множення/ділення 16-розрядних. Також реалізовано множення за один цикл, при цьому для 16-ти розрядних чисел можливе виконання двох операцій паралельно. Це робить вигідним їх використання в системах управління і обробки інформації. В даному під сімействі є ще одна модифікація Cortex-M4F, яка крім DSP має блок операцій для чисел з плаваючою комою – FPU.

 

Історія створення мікроконтролерів STM32

Історію розвитку STM32 доцільно розглянути з боку розвитку процесора, оскільки це основна частина МК.

Історія сімейства Cortex-M починається з осені 2003 року, тоді ARM вперше використало слово «Cortex». Першим представником нового сімейства M став Cortex-M3, оснований на архітектурі ARMv7-M , він має потужність 1.25 DMIPS/МГц. Цим ARM підкреслила свою направленість на розробку дешевої, якісної та потужної продукції. Дешевим цей процесор зробило використання порівняно невеликої кількості транзисторів та простота виготовлення. STMicroelectronics заявила про продаж 32-розрядних контролерів STM32F100C4T6B на ядрі M3 за ціною всьго 0.99$. Енергоживлення процесорів складає 0.19 мВт/МГц

В 2009 році зявився Cortex-M0 – дешевий 32-розрядний процесор з низьким рівнем енергоспоживання та невеликою кількістю виводів. Він призначений для використання в тих пристроях, де потужності 8-ми та 16-ти бітних процесорів вже не вистачало. Процесор добре зарекомендував себе в медіа-програвачах, цифрових камерах, побутовій апаратурі.

Через рік на світ зявився новий продукт Cortex-M4. Цей потужний високоефективний 32-розрядний RISC процесор призначений для вирішення задач складної обробки цифрових сигналів в промислових та вбудованих системах.

STMicroelectronics почала випуск мікроконтроллерів Cortex-M3 2007 року.

Вона швидко стала домінуючим виробником в цій ніші.

Рисунок 1. Продажі мікроконтролерів на ARM Cortex-M3 в світі

Особливості мікроконтролерів STM32

  • Повністю 32-бітна архітектура: усі регістри 32-бітні, арифметичні операції працюють із 32-бітними даними; множення 32 x 32 -> 32 виконується за 1 такт, ділення — за 2-12 тактів. Завдяки цьому CM3 за той же час встигає зробити більше, ніж 8-ми та 16-бітні МК.
  • Велика кількість ( від 16) регістрів загального призначення, характерне для архітектури RISC. Оскільки регістри працюють на частоті процесора, а RAM — на меншій, завжди переважніше працювати з даними в регістрах, а чим їх більше, тим довше можна обійтися без використання RAM. Тут змагатися з CM3 можуть хіба що AVR.
  • Відмінна підтримка режимів енергозбереження. Можна відправити в режим сну як увесь МК, так і окремі його підсистеми.
  • 24-бітний таймер Systick. Цей таймер без ШИМ, зате 24-бітний: можна задавати інтервал спрацьовування в широких межах, не особливо затрудняючись. Саме те для організації кінцевих автоматів і планувальника RTOS.
  • Повноцінне налагодження по JTAG або SWD навіть на молодших кристалах. Повноцінна — означає, можна ставити точки зупинки (breakpoints), переглядати вміст змінних і регістрів, виконувати програму покроково.
  • NVIC — Nested Vectored Interrupt Controller. Контролер переривань, який підтримує до 240 переривань на всі випадки життя, до 256 їх пріоритетів, і забезпечує швидку реакцію на переривання.
  • Контролера DMA — Direct Memory Access. Дуже корисна річ — дозволяє периферії (UART, SPI, I2C та ін.) читати/писати дані в RAM без участі МК. Тобто, можна дати завдання контролеру DMA зчитати в зазначений буфер 100 байт по SPI, і це завдання буде виконуватися в фоні, не завантажуючи МК.
  • Висока щільність коду. Для більшості нескладних проектів розмір коду буде меншим, чим для багатьох інших МК. Це досягається за рахунок спеціально розробленого для цих цілей набору інструкцій Thumb-2.
  • Загальна орієнтованість набору інструкцій на компілятори C — наприклад, наявність команд для табличних переходів (для swicth/case), бітових маніпуляцій, умовного виконання інструкцій. Усе це призводить до більш ефективної оптимізації коду компіляторами C, а значить і до більш високої швидкості роботи.
  • Хороші засоби розробки: компілятор та середовище розробки Keil  від ARM Limited, IAR Embedded Workbench for ARM, звязка компілятора GCC і Eclipse IDE. Для користувачів Windows є зовсім проста у використанні CoIDE на базі GCC + Eclipse. Варіації з Eclipse найкращі, тому що в ній є підтримка всього, що потрібно для зручного програмування: підсвічування синтаксису, розумне автодоповнення й автозавершення коду, спливаючі підказки з коментарями до функцій і змінних та ін.

    Було розглянуто особливості Cortex-M3 взагалі, а тепер розглянемо STM32, зокрема STM32F10x , які мають ряд своїх особливостей, по-перше це багата периферія:

  • Декілька багатоканальних швидкісних 12-бітних АЦП, до мільйона вимірів у секунду, режим безперервного вимірювання.
  • Двоканальний ЦАП, що вміє працювати в 8-мі й в 12-бітному режимах.
  • 12-канальний контролер DMA, обслуговує до 12 запитів, має 4 рівня пріоритетів, незалежні розміри блоків даних для приймання й передачі (8, 16 і 32 біта), підтримка кільцевого буферу, передача даних у режимах пам’ять>пам’ять, пам’ять>периферія, периферія>пам’ять і периферія>периферія.
  • Декілька 16-бітних таймерів з довільними дільниками (не тільки степені двійки, як в AVR), які вміють генерувати переривання по переповненню, по порівнянню, генерувати ШИМ, вимірювати довжину й число вхідних імпульсів, запускати ЦАП, і навіть автоматично рахувати імпульси з енкодерів та датчиків Холла.
  • NVIC, крім усього іншого, підтримує до 20 переривань від зовнішніх джерел.
  • Модуль RTC (Real-Time Clock) — годинник реального часу з лічильником і будильником.
  • FSMC — Flexible Static Memory Controller. Забезпечує прозорий доступ до декількох видів пам’яті — SRAM, ROM, NOR Flash, NAND Flash, PSRAM і 16-бітних PC Card-сумісних пристроїв.
  • SDIO — Secure Digital I/O interface. Виконує велику частину роботи із читання/запису на карти пам’яті MMC і SD, що дає можливість легко й просто прикрутити підтримку FAT і повноцінно працювати з файлами на картах.
  • USB. Повна підтримка стандарту USB 2.0 Full-speed, до 8 ендпоінтів.
  • USB OTG (On-The-Go). Ця технологія дозволяє зв’язувати usb-пристрої з її підтримкою без участі хоста — наприклад, цифрову камеру із принтером.
  • Ethernet. Можна зв’язуватися з ПК по локальній мережі. Із зовнішнім phy-мікросхемою можна отримати 10/100 Мбіт/с.
  • Шина I2S — шина цифрового зв’язку аудіо-пристроїв.
  • І, звичайно, стандартний набір: UART, SPI, I2C, CAN.

    По-друге, в STM32 дуже гарно структурована документація:

  • Один Reference manual з описом усієї периферії на всю лінійку STM32F10x
  • Докладна документація по кожній окремій серії МК — розпіновка, корпуси, найменування й т.п.
  • Пристойна кількість аппноутів (Application Notes) — рекомендацій із застосування: правильний вибір джерела тактування, живлення, приклади роботи з LCD, Sd-Картами, RTC і багато чого іншого.

    По-третє, сумісність — і по розташуванню ніг на кристалі, і по коду. Тобто, якщо не вистачає продуктивності, Flash, RAM або периферії, то можна без модифікації коду й без переробки плати просто поставити на плату потужніший МК з тією ж кількістю ніг.

    По-четверте, ціна. Самий молодший контролер із серії — STM32F100C4T6B — можна купити за 1-2 $, при цьому він має 48 ніг, 16 КБ Flash, 4 КБ SRAM і може працювати на частоті 24 МГц, ну й UART-и та інші інтерфейси в наявності. Переваги STM32 наглядно можна побачити з порівняльної таблиці 1.

    Ще одна цікава функція — перепризначення виводів. Вона дозволяє перепризначити виводи периферії зі звичайних на альтернативні, теж фіксовані — втім, це не применшує цінності даної функції: наприклад, для USART1 можна перепризначити TX з PA9 на PB6.

     

    Таблиця 1. Порівняльна таблиця параметрів розповсюджених мікроконтролерів

    Параметр STM32F100C4T6B ATmega48PA-PU ATtiny13A-SSU PIC16F505-I/SL
    Середня ціна* 12 грн. 20 грн. 8 грн. 9 грн.
    Обсяг флеш пам’яті (ROM, пам’яті програм) 16 КБайт 4 КБайта 1 КБайт 1 КБайт
    Обсяг оперативної пам’яті (RAM, пам’яті даних) 4096 Байт 512 Байт 64 Байта 72 Байта
    Тактова частота 24 МГц, 30 DMIPS 20 МГц 20 МГц 20МГц
    Ліній введення/виведення 37 23 6 12
    АЦП 16-каналів

    12-біт

    8-каналів

    10-біт

    4-каналу

    10-біт

    0
    ЦАП 12–бітний 0 0 0
    USART 2 1 0 0
    SPI 1 1 1 0
    I2C 1 1 0 0
    Кількість таймерів 5 3 1 1
    DMA 7 каналів 0 0 0

    *Ціна станом на 01.07.13.

    Cписок використаної літератури

     

  1. «РадиоЛоцман» Журнал для тех, кто интересуется электроникой.
  2. Микроконтроллеры Cortex-M. [Електронний ресурс].
  3. Микроконтроллеры Cortex-M0, М3, М4. [Електронний ресурс].
  4. ARM процессоры. [Електронний ресурс].
  5. Веб-сайт компанії “STMicroelectronics” [Електронний ресурс].
  6. Веб-сайт компанії “ARM Ltd.” [Електронний ресурс].
  7. Stm32: Эпоха 32-битных микроконтроллеров наступила. [Електронний ресурс].

    Автор: Ікальчик Ю.М, ДК-11, ФЕЛ, КЕОА, НТУУ «КПІ»