вівторок, 12 грудня 2017 р.

Досьє на плати сімейства STM32 Discovery

Останнім часом, у нас, в CS@UCU, завелося багато демоплат, поміж них, за кількістю, домінують плати Discovery від STM32. В них почав плутатися вже й і я, що говорити про студентів. Тому вирішив написати такий собі довідничок: короткий опис плати, ключові компоненти, зокрема -- присутня на платі периферія, особливості її мікроконтролера (MCU), супроводжуючи інформацію посиланнями на офіційні сторінки, даташіти і т.д. 
Варто зауважити, що на офіційних сторінках мікроконтролерів, крім даташітів є також посилання на величезну кількість так-званих AppNote -- прикладів використання якихось можливостей мікроконтролерів. Дуже рекомендую ознайомитися хоча б із списками. :-)
Порядок плат менш-більш довільний, грубо -- по спаданню потужності мікроконтролера на платі та різноманітності периферії.

Описано:
  • STM32F4Discovery
  • STM32F3Discovery
  • 32F072BDISCOVERY  
  • 32L0538DISCOVERY  
  • 32L152CDISCOVERY
  • STM32VLDISCOVERY
  • китайська "Blue pill"
  • екзотична M24LR-DISCOVERY
Вони обладнані мікроконтролерами на базі ядер ARM Cortex M0, M0+, M3, M4F, а M24LR обладнана 8-бітним MCU із сімейства STM8.

STM32F4Discovery

Цікава плата із одним із найпотужніших мікроконтролерів сімейства (на М7 не заглядатимемося поки). Новіший варіант, (із кодом замовлення STM32F407G-DISC1).



Базова інформація про плату:
  • Офіційна сторінка, ціна на момент написання -- 20$.
  • Код модифікації: STM32F407G-DISC1 (існує популярний старіший варіант плати) 
  • Даташіт (UM1472)
  • Програматор ST-LINK/V2-A, із підтримкою VCP (може теж колись поговоримо).
  • Офіційна сторінка мікроконтролера: STM32F407VG 
 Периферія:
  • LIS3DSH -- трьохосьовий акселерометр.
  • MP45DT02 -- цифровий, слабонаправлений, MEMS-мікрофон.
  • CS43L22 -- ЦАП, для аудіовключаючи стерео.
  • 4 світлодіоди, під'єднаних до GPIO.
  • Традиційних дві кнопки, user i reset.
  • USB OTG FS з конектором micro-AB. З ним пов'язано два світлодіоди: LD7 (зелений) -- VBUS і LD8 (червоний) -- over-current.
MCU
  • STM32F407VG
  • ARM Cortex M4 
  • Документація на серію, до якої він належить: "RM0090: STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439 advanced ARM®-based 32-bit MCUs
  • Документація конкретно на цей мікроконтролер: "DS8626: ARM Cortex-M4 32b MCU+FPU, 210DMIPS, up to 1MB Flash/192+4KB RAM, USB OTG HS/FS, Ethernet, 17 TIMs, 3 ADCs, 15 comm. interfaces & camera". (Говорилося вже про цю дивну манеру STM ділити документацію... Ніби зрозуміло, чого так, але все рівно весело.)
  • Помилки в ньому: "ES0182: STM32F405/407xx and STM32F415/417xx device limitations"
  • Спільний документ для всіх ARM Cortex M4 від STM32 -- особливості ядра: "PM0214: STM32F3 Series, STM32F4 Series, STM32L4 Series and STM32L4+ Series Cortex®-M4 programming manual"
  • До 168 MHz
  • 192Kb RAM, правда, двома не суміжними в адресному просторі фрагментами, 128Кб і 64Кб.  А з точки зору швидкодії діляться навіть так: 16 + 112 + 64.
  • Плюс 4Кб "backup RAM", пам'яті, яка резервується разом із RTC.
  • 1Mb Flash
  • 16 каналів DMA
  • 10 таймерів загального використання, якщо не вказано інше, 16-бітних (TIM2 (32 біти), TIM3, TIM4, TIM5 (32 біти) - 4 канали, TIM9, TIM12 - 2 канали, TIM10, TIM11, TIM13, TIM14 - 1 канал), 
  • 2 просунутих таймери (TIM1, TIM8), 
  • 2 базових таймери (TIM6, TIM7).
  • Всього каналів ШІМ (PWM) - 30, з комплементарними 38 (ці числа можуть бути неточними).
  • RTC, IWDG, WWDG.
  • Генератор випадкових чисел.
  • 3 SPI та 2 I2S (що перетинаються із SPI2/SPI3).
  • 3 I2C
  • 4 USART, 2 UART
  • 2 CAN
  • 1 SDIO -- підтримка SD/SDIO/MMC-карт
  • 1 Ethernet 
  • USB OTG FS/HS
  • 3 АЦП, 16 каналів, до 12 біт
  • 1 ЦАП, 2 канали, 12 біт
  • Інтерфейс пам'яті FSMC (PCCard/Compact Flash, SRAM, PSRAM, NOR Flash, NAND Flash, LCD parallel interface). 
  • Інтерфейс камери (DCMI), до 54Мб/с

    STM32F3Discovery

    Відладочна плата із потужним, хоч і трішки дивним мікроконтролером та купою периферії.
    Базова інформація про плату:
     Периферія:
    • Користувацький USB (Device-only).
    • Трьохосьовий MEMS-гіроскоп L3GD20. Три діапазони: 250/500/2000 градусів за секунду (dps), інтерфейс I2C або SPI, на вибір (на платі приєднаний до SPI1), лінії переривань, фільтри, 8-бітний вбудований термометр.
    • LSM303DLHC -- трьохосьовий акселерометр та магнітометр. Діапазон, відповідно,  ±2g/±4g/±8g/±16g та ±1.3 to ±8.1 гаус, I2C (під'єднано на платі до I2C1), можливість запрограмувати на виявлення вільного падіння та початок руху. 
    • 8 користувацьких світлодіодів різних кольорів (по два червоних, синіх, зелених та оранжевих). Крім того, на платі два службових світлодіоди -- живлення і зв'язок по USB.
    • Користувацька кнопка + кнопка перевантаження контролера.
    • Користувацький USB (Mini B) + USB програматора.
    MCU:

     32F072BDISCOVERY  


    Зверніть увагу на пропущені літери "STM" на початку -- нова політика, здається, опускати їх в назвах демоплат. :-) Хоча, дотримуються не зовсім послідовно.

    Плата, що демонструє мікроконтролери серії Cortex M0 -- Low-end, так би мовити. Скромніша за периферією, ніж попередні.
    Базова інформація про плату:
     Периферія:
    • Користувацький USB (Device-only).
    • Трьохосьовий MEMS-гіроскоп L3GD20. Три діапазони 250/500/2000 градусів за секунду (dps), інтерфейс I2C або SPI, на вибір (на платі приєднаний до SPI2), 2 лінії переривань, фільтри, 8-бітний вбудований термометр.
    • Linear touch sensor, який може служити або сенсором на 3 позиції, або 4-ма кнопками (використані для нього піни, для мінімізації завад, на зовнішню колодку не виведені -- PA2, PA3, PA6, PA7, PB0, PB1). Відповідний AppNote: "AN4312: Guidelines for designing touch sensing applications  with surface sensors".
    • 4 користувацьких світлодіоди різних кольорів (червоний, синій, зелений та оранжевий). Крім того, на платі два службових світлодіоди -- живлення і зв'язок по USB.
    • Користувацька кнопка + кнопка перевантаження контролера.
    • Користувацький USB (Mini B) + USB програматора.
    • RF EEprom конектор. 
    MCU:

    32L0538DISCOVERY  

    Ще одна демоплата нижнього діапазону. Цього разу -- ARM Cortex M0+. Як на мене, менш цікава та із слабшим MCU, ніж попередня, але вдвічі дорожча.


    Базова інформація про плату:
     Периферія:
    • Користувацький USB (Device-only).
    • GDE021A1 -- 2.04" E-paper Display, 172x72 пікселів, 1 або 2 біти на піксель (4 відтінки сірого), на контролері SSD1606. З ним трішки складно. Даташіт відправляє до (виробника?): www.good-display.com, але цієї моделі там немає. Знайшлася вона на smart-prototyping: сам дисплей (але без посилань на документацію), готовий модуль, де є посилання на даташіт, даташіт контролера SSD1606, приклади коду для STM32 і ардуїнівську бібліотеку. (Див. також приклад використання модуля.)
    • Linear touch sensor, який може служити або сенсором на 3 позиції, або 4-ма кнопками (використані для нього піни, для мінімізації завад, на зовнішню колодку не виведені -- PA2, PA3, PA6, PA7, PB0, PB1). Відповідний AppNote, AN2869, на сайті st.com відсутній, хоча, підозрюю, чи то це старіший варіант наступного документа: "AN4312: Guidelines for designing touch sensing applications  with surface sensors", (чи таки альтернативна технологія?).
    • 2 користувацьких світлодіоди (червоний і зелений). Крім того, на платі два службових світлодіоди -- живлення і зв'язок по USB.
    • Користувацька кнопка + кнопка перевантаження контролера.
    • Користувацький USB (Mini B) + USB програматора.
    • NFC (Near Field Communication) конектор. 
    MCU:
    • STM32L053R8
    • ARM Cortex M0+ 
    • Документація на серію, до якої він належить: "RM0367: Ultra-low-power STM32L0x3 advanced ARM®-based 32-bit MCUs
    • Документація конкретно на цей мікроконтролер: "DS10152: Ultra-low-power 32-bit MCU Arm®-based Cortex®-M0+, up to 64KB Flash, 8KB SRAM, 2KB EEPROM, LCD, USB, ADC, DAC".
    • Помилки в ньому: "ES0253: STM32L053x6/8 device limitations".
    • Спільний документ для всіх ARM Cortex M0+ від STM32 -- особливості ядра: "PM0223: STM32L0 Series Cortex®-M0+ programming manual
    • До 32MHz (і від 32кГц)
    • 8 KB RAM
    • 16 KB Flash
    • 2Кб EEPROM
    • 7 каналів DMA
    • 3 таймери загального використання, 16-бітних. (TIM2 - 4 канали, TIM21, TIM22 - 2 канали); 
    • 0 просунутих таймерів; 
    • 1 базовий таймер (TIM6);
    • 1 LPTIM -- low-power timer, із незалежним тактуванням та 1 каналом.
    • Всього каналів ШІМ (PWM) - 8, комплементарних немає.
    • RTC, IWDG, WWDG 
    • 2+2 SPI/1 I2S (I2S суміщений із SPI2, 2 повноцінних SPI, 2 -- USART в режимі SPI Master).
    • 2 I2C
    • 2 USART + 1 LPUART
    • 1 USB FS
    • Драйвер LCD
    • Touch sensing controller (TSC)
    • 1 АЦП, 16 каналів, до 12 біт
    • 1 ЦАП, 1 канал, 12 біт
    • 2 аналогових компаратора 

    32L152CDISCOVERY

    Ще одна плата, трохи старіша, із ARM Cortex M3.


    Базова інформація про плату:
     Периферія:
    • LCD, 6 14-сегментних цифр, стовпчик на 4 сегменти, 24 піни + 4 спільних. Займає 24 піни, щоб ними скористатися для ще чогось, слід витягнути дисплей.
    • Linear touch sensor, який може служити або сенсором на 3 позиції, або 4-ма кнопками ("його" піни, для мінімізації завад, на зовнішню колодку не виведені -- PA6, PA7, PC4, PC5, PB0, PB1). Відповідний AppNote: "AN4312: Guidelines for designing touch sensing applications  with surface sensors".
    • 2 користувацьких світлодіоди (червоний і зелений). Крім того, на платі два службових світлодіоди -- живлення і зв'язок по USB.
    • Користувацька кнопка + кнопка перевантаження контролера.
    MCU:

    STM32VLDISCOVERY

    Плата із якої в мене все починалося із STM32. :-) Найбільш примітивна із Discovery-плат.



    Базова інформація про плату:
     Периферія:
    • 2 користувацьких світлодіоди (зелений і синій). Крім того, на платі два службових світлодіоди -- живлення і зв'язок по USB.
    • Користувацька кнопка + кнопка перевантаження контролера.
    MCU:

    "Blue Pill"

    Плата ця -- аж ніяк не від STMicroelectronics, але, враховуючи її дешевизну та популярність, вирішив згадати. Був один час такий проект від LeafLabs -- Maple, Arduino на базі STM32. Він породив ціле сімейство платок із STM32. Поміж них "Blue Pill", ось така:

    Я, чесно кажучи, ніколи з нею як із Arduino не працював. Замість всієї цієї возні із бутлоадерами, просто під'єдную ST-Link і програмую як звичайну STM-ку. Але, кому цікаво, див: головна сторінка проекту, "Programming an STM32F103 board using its USB port (Blue Pill)", "Converting an STM32F103 board to a Black Magic Probe".

    Базова інформація про плату:
    • Напів-офіційна сторінка. Ціна, на момент написання, на Аліекспрес:  ~2$ 
    • Pinout та принципова схема.
    • Плати ці мають баг -- резистор підтяжки на лінії D+ USB має мати опір 1.5кОм, але на цій платі він (R10 -- див. на нижній стороні) має опір 10кОм (деякі варіанти - 4.7кОм). В принципі, частина USB-хостів її "визнають" і так, якщо ж ні -- слід або перепаяти цей резистор, або під'єднати паралельно із ним, між PA12 i 3.3V резистор опором 1.8кОм.
    • Офіційна сторінка мікроконтролера: STM32F103C8.
     Периферія:
    • 1 користувацький світлодіод  на PC13.
    • SWD-конектор для програматора.
    • Користувацький USB. 
    • Годинниковий кварц на 32кГц для RTC (на додачу до 8МГц кварцу для MCU) -- всі плати вище на ньому зекономили, та й "головний" зовнішній кварц на більшості відсутній. Правда, тут він необхідний для USB -- решта мають окремий програматор із своїм кварцом.
    • Кнопка перевантаження контролера.
    MCU:

    M24LR-DISCOVERY

    Ще один набір демоплат, трішки відмінний від попередніх: вони демонструють M24LR04E-R Dual Interface EEPROM -- грубо кажучи, пам'ять із радіоінтерфейсом. При чому, плата M24LR не потребує зовнішнього живлення -- живиться теж індуктивно, від RFID-рідера або NFC-сумісного телефона. Друга плата, RF transceiver, власне, містить RFID-рідер -- після підключення до комп'ютера, може служити джерелом живлення та засобом комунікації із поставленою на неї чи близько поруч,  M24LR.  Однак, із M24LR можуть працювати і деякі телефони з NFC -- STM навіть надає відповідну програмку NfcV-Reader (доступна через Google Play).
     

    Детально їх не розглядатиму, лише основні посилання:

    M24LR:

    • M24LR04E-R -- 4Кб EEPROM, із подвійним інтерфейсом: I2C або ISO/IEC 15693 та живленням -- безпосереднім чи по радіоканалу. (Має навіть вивід Vout, для живлення інших пристроїв).
    • Антена.
    • I2C термометр STTS751 
    • 24-сегментний LCD (вже згадуваний вище -- в 32L152Discovery)
    • Дві кнопки - користувацька і перезавантаження
    • Ряд конекторів для роботи із платою (див. даташіт: "UM1589: M24LR-DISCOVERY kit user guide")
    • 8-бітний мікроконтролер STM8L152C6T6, із 32 Кб Flash, 2 Кб RAM, 1Кб EEPROM і різноманітними, звичними вже таймерами та комунікаційною периферією.
    RF transceiver
    • CR95HF transceiver, з UART та SPI-інтерфейсом.
    • Антена.
    • Різноманітні конектори.
    • STM32F103CBT6 -- варіант згаданого вище, в Blue-pill, мікроконтролера із 128Кб RAM (решту опису див. там. :-)

    На цьому наш список закінчимо, хоча, в майбутньому він може доповнюватися (інформацією),  поповнюватися (платами), виправлятися. А поки -- 

    Дякую за увагу!  

    Немає коментарів:

    Дописати коментар