top of page

Atmel Cortex

 

История

 

Пожалуй, большинство эмбеддерщиков и просто интересующихся встроенными системами уже слышали про процессоры ARM. Их устанавливают в промышленное оборудование, в смартфоны и аудио-плееры, в видеотехнику, да много ещё куда. Популярность ARM во многом обеспечена их хорошей производительностью при низком энергопотреблении, что делает их идеальными для применения в различных мобильных устройствах. ARM расшифровывается как Advanced RISC Machines. RISC — это архитектура процессоров с “сокращённым” набором команд, ныне одна из наиболее распространённых. Между прочим, микроконтроллеры AVR, используемые в Arduino, имеют архитектуру RISC.


 

 

Семейства ARM

 

Существует современное семейство ARM под названием Cortex, которое делится на три подсемейства:

 

  • Cortex-AЭто полноценные процессоры общего назначения для самых различных задач. Самое известное устройство на базе их — это iPhone.

  • Cortex-RПредназначены для систем реального времени, где существует необходимость в быстрой и точной реакции на внешние события с гарантированным временем отклика — для применений в промышленности, медицине, автомобилестроении и пр.

  • Cortex-MМикроконтроллеры, уже известная нам по AVR область. Как обычно, это не очень быстрый процессор, но со встроенной памятью для программ (flash), оперативной памятью (SRAM) и различной периферией — такой, как GPIO (порты ввода-вывода), UART, SPI, I2C и т.д.

 

Отличия

 

Чем же Cortex-M3 круче других микроконтроллеров:

  • Полностью 32-битная архитектура: все регистры 32-битные, арифметические операции работают с 32-битными данными; умножение 32 x 32 -> 32 выполняется за 1 такт, деление — за 2-12 тактов. Благодаря этому CM3 за то же время успевает сделать больше, чем 8-ми и 16-битные МК.

  • Большое количество (от 16) регистров общего назначения, характерное для архитектуры RISC. Так как регистры работают на частоте процессора, а RAM — на меньшей, всегда предпочтительнее работать с данными в регистрах, а чем их больше, тем дольше можно обходиться без использования RAM. Тут соперничать c CM3 могут разве что AVR.

  • Отличная поддержка режимов энергосбережения. Можно отправить в спячку как весь МК, так и отдельные его подсистемы.

  • 24-битный таймер SysTickЭтот таймер без ШИМ (PWM), зато 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), битовых манипуляций (PORTA |= (1 << 3) и подобный код), условного исполнения инструкций (очень крутая фича). Всё это выливается в более эффективную оптимизацию кода компиляторами C, а значит и в более высокую скорость работы.

  • Хорошие средства разработки: компилятор + среда разработки Keil от ARM Limited, IAR Embedded Workbench for ARM, связка компилятора GCC (сборка Sourcery CodeBench Lite Edition) и Eclipse IDE. Для пользователей Windows есть совсем простая в использовании CoIDE на базе GCC + Eclipse. Вариации с Eclipse круче всего, так как в ней есть поддержка всего, что нужно для удобного программирования: подсветка синтаксиса, умное автодополнение и автозавершение кода, сниппеты, отладчик, всплывающие подсказки с комментариями к функциям и переменным, рефакторинг.

  • Это мы пока рассматривали Cortex-M3 вообще, а изучать мы их будем на линейке STM32F10x от компании ST Microelectronics, производителем электронных компонентов с мировым именем. Эти ребята очень серьёзно подошли к разработке своих МК на базе Cortex-M3, в результате чего STM32 имеют ряд своих собственных достоинств. Во-первых, это богатая периферия:

  • Несколько многоканальных скоростных 12-битных АЦП, до миллиона измерений в секунду, режим непрерывного измерения.

  • Двухканальный ЦАП, умеющий работать в 8-ми и в 12-битном режимах.

  • 12-канальный контроллер DMA, обслуживает до 12 запросов, имеет 4 уровня приоритетов, независимые размеры блоков данных для приёма и передачи (8, 16 и 32 бита), поддержка кольцевого буфера (!), передача данных в режимах память->память, память->периферия, периферия>память и периферия>периферия.

  • Несколько 16-битных таймеров с произвольными делителями (не только степени двойки, как в AVR), которые умеют генерировать прерывания по переполнению, по сравнению, генерировать ШИМ, измерять длину и число входящих импульсов, запускать ЦАП, и даже автоматически считать импульсы с энкодеров и датчиков Холла!

  • NVIC, помимо всего прочего, поддерживает до 20 прерываний от внешних источников.

  • Модуль RTC (Real-Time Clock) — часы реального времени с счётчиком и будильником.

  • Несколько Watchdog-таймеров для пущей надёжности.

  • 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, MAC-уровеньАга, можно связываться с компом по локальной сети. С внешней 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ы и прочие интерфейсы в наличии. То есть, он круче, чем стандартный для Arduino контроллер ATmega168. Конечно, 48 ног — это не DIP-корпус, а TQFP: в макетку или в панельку его не воткнёшь, нужно плату разводить. Но технология изготовления печатных плат в домашних условиях ЛУТ уже расписана вдоль и поперёк, так что не такая уж это и проблема.

  •  

  • Ну, и наконец, платы вроде Arduino для быстрого освоения у ST тоже имеются, и начнём мы изучать STM32 с одной из них — STM32 Discovery

 

Характеристики

 

 

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

bottom of page