Это 48ногий 32битный микроконтроллер. И это отличный вариант апгрейда для тех, кто использует Arduino.
Для масштаба положил рядом с Arduino Pro, которая меньше обычной Arduino Uno:
По размерам сам микроконтроллер точно такой же, только шаг ножек не 0.8, а 0.5мм, поэтому их поместилось в тот же корпус 48, а не 32. А вот плата с ним поменьше и стоит от $10 с доставкой.
А что у нас с функционалом?
Arduino
32 kB Flash
2 kB RAM
1 kB EEPROM
8-битная архитектура ATMEL AVR, до 20МГц, в Arduino работает на 16МГц. 1 MIPS/MHz
Напряжение питания 5В или 3.3В на 8МГц и не 5В-толерантно.
Пины общего назначения GPIO — 20
Из них:
PWM — 6 (аппаратный PWM для управления сервоприводами — 2)
Входов АЦП — 6 (10 битный)
Периферия:
Шина I2C
Шина SPI
1 UART
1х 16 битный таймер
2х 8 битных таймера
Ну и по мелочам немного: контроллер прерываний, watchdog.
Программируется либо через SPI — 4 проводный интерфейс (MOSI, MISO, SCK, RST) или через UART, если предварительно прошить бутлоадер, который занимает до 2кб флеша.
STM32F103C8
64 kB Flash (128 kb если поставить STM32F103CB (от $2.6 штука))
20 kB RAM
32-битная архитектура ARM CORTEX-M3, до 72МГц, 1.25MIPS/MHz
Напряжение питания 3.3В (2.7-3.6), почти все пины 5В-толерантны. На плате есть стабилизатор напряжения 3.3В, который питается от внешний 5В или USB.
Пины общего назначения GPIO — 26
Из них:
PWM — 12 (все пригодны для управления сервоприводами)
Входов АЦП — 6 (12 битный, 1мкс)
Периферия:
3x USART
2x I2C
2x SPI (18Mbit/s)
1 x CAN 2.0B
USB 2.0 FS (FullSpeed — 12Mbit)
3x 16 битных таймера + 1 PWM timer
DMA — 7 каналов (АЦП, SPI, I2C, USART)
RTC — часы реального времени (32768 Гц кварц уже распаян), могут работать от батареи, когда МК спит или вообще остановлен.
Backup registers — регистры, питающиеся от батарейки вместе с часами на время выключения МК от основного питания
CRC — блок вычисления контрольной суммы
96-bit уникальный ID МК
Программируется через SWD — 2 проводный интерфейс или JTAG (промышленный стандарт).
Есть аппаратная отладка — можно заглянуть в регистры процессора, посмотреть состояние всей периферии, пошагово выполнять программу, менять руками значения в RAM и Flash, посмотреть значения переменных в любой момент, поставить Breakpoint.
Также есть вшитый бутлоадер, который невозможно стереть и он позволяет прошить МК через обычный UART, переставив перемычку.
Функционал шикарный. Из недостатков только более высокий порог входа при обучении — МК так нафарширован возможностями, что не сразу получается с ними разобраться. Но есть подробная документация, есть примеры. Они не так примитивны как для AVR Atmega и тем более Arduino с ее Wiring, но и не особо сложны.
В общем, на мой взгляд плата по всем параметрам превосходит Arduino включая цену. А учитывая, что все МК STM32 серий STM32F100, F101, F102, F103, F104, F105, F107 в одном корпусе полностью pin to pin совместимы, можно расширить функционал платы, не меняя ее разводку, а просто заменив чип. Корпуса на выбор есть 48, 64, 100, 144 ноги. А у старших серий (например F4) есть и больше.
Разобрался вчера с USB HID для этой платы, проект без особых изменений адаптировал под этот МК. В итоге — подключаем плату USB шнурком. Никаких драйверов ставить не нужно — плата видится как стандартный HID девайс. Поддержка USB полностью аппаратная, до 8 endpoints. Я использую 1 endpoint для двусторонней связи с ПК. Программа на Delphi может управлять светодидами и получать состояния кнопок в виде обычных HID репортов. Пакетный обмен куда удобнее, чем UART поток, в котором нужно возиться с заголовками, поиском начала и конца пакета. Если COM порт занят программой, то уже никто подключиться не может. Если девайс отключить, то программа не сможет корректно закрыть COM-порт. С USB HID таких проблем нет. Полностью hot-plug. Выдернул, вставил девайс обратно, программа может на лету переподключиться к нему без перезапуска.
В МК все работает на прерываниях, поэтмоу большую часть времени он просто отдыхает и его можно занять полезными делами, в отличие от V-USB для AVR, где МК еле справляется с программной эмуляцией USB и то ущербно.
Ну и для любителей наглядности:
ссылка на оригинал статьи http://habrahabr.ru/post/191054/
Добавить комментарий