Компания toshiba выпустила новый микроконтроллер tmpm375fsdmg на ядре arm cortex-m3

  • Все
  • Тематические

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

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

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

    Эта статья, как и последующие в цикле (да, это будет цикл статей), сконцентрируется на самом популярном виде Cortex-M в наши дни — Cortex-M3. Микроконтроллеры этого семейства выпускают несколько компаний — например, ST Microelectronics, NXP, Atmel, Texas Instruments. Надо сказать, что с ARM вообще и Cortex-M3, в частности, ситуация с производством отличается от привычной: компания ARM Limited занимается только разработкой архитектуры и средств разработки (компиляторов и IDE), но сама процессоры не производит, а продаёт лицензии другим компаниям — вышеперечисленным, например. При этом гарантируется совместимость кода на уровне инструкций процессора — это значит, что можно разрабатывать ПО под процессоры различных производителей, пользуясь одним и тем же компилятором.

    Чем же 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 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 :

    Так что, если кто не силён в пайке, расслабьтесь. В этой плате есть встроенный отладчик ST-Link, так что вы сможете вкусить всю прелесть полноценной отладки, для которой к AVR пришлось бы докупать AVRDragon за 70$.

    В общем, STM32 — это выбор редакции, однозначно. Теперь о цикле статей. Если коротко, то цель цикла — описать STM32F10x вдоль и поперёк. А, если длинно, мы с вами:

    • Изучим всю периферию линейки со всеми режимами работы.
    • Познаем всю прелесть и сложность работы с прерываниями.
    • Научимся разным полезным программерским трюкам и приёмам.
    • Подтянем свои знания языка C.
    • Научимся комбинировать полученные знания и к концу курса сделаем хотя бы одно относительно сложное устройство (уровня MP3-плеера).

    Кто хочет прокачаться в программировании МК, у кого есть стальные яйца воля к победе, кто не боится трудностей — ждите продолжение, оно скоро будет. Заряжайте свои мечи, падаваны (:

    Компания toshiba выпустила новый микроконтроллер tmpm375fsdmg на ядре arm cortex-m3

    STM32 vs MDR32 – счет не в нашу пользу.

    В соответствии с программой импортозамещения, введенной в России с 2014 года, предполагалось по возможности заменить ЭРИ иностранного производства на отечественные аналоги. Выпущенная АО «ПКК Миландр» серия ИМС 1986ВЕ9х – ARM микроконтроллеров на базе ядра Cortex M3 является ближайшим аналогом микроконтроллера STM32F10x европейской фирмы ST Microelectronics, и поэтому должна существовать возможность применить с некоторыми доработками российский аналог там, где уже успешно работает STM32. Именно этой задачей я и занялся, а именно начал внедрять ИМС К1986ВЕ92QI в устройство силовой электроники в качестве управляющего контроллера. Изначально устройство разрабатывалось на микроконтроллере STM32F10x, программное обеспечение было написано на GNU ARM Assembler, так как требовалось большое быстродействие, а встроенный «сишный» компилятор Keil этого не обеспечивал. Из периферийных блоков использовались TIMER, ADC, DMA, UART, NVIC и EXTI. Далее будут рассмотрены все сложности, которые возникли в процессе адаптации устройства к ИМС К1986ВЕ92QI, а также описаны основные отличия периферийных узлов.

    Ядро, что у одного, что у другого – Cortex M3, RISC ядро ARM архитектуры, разработанное британской корпорацией ARM Limited. АО «ПКК Миландр» приобрело лицензию на данное ядро в 2008 году, и впоследствии реализовало его в серии микроконтроллеров 1986ВЕ9х. ST Microelectronics выпускает микроконтроллеры на базе Cortex M3 с 2007 года, в том числе серию F1, и является лидером по соотношению цена/качество.

    Если в STM32F10x реализовано три вида 16-битных таймеров: самые простые (Basic Timers), таймеры общего назначения (General Purpose Timers) и таймер с расширенными возможностями (Advanced Control Timers), то разработчики АО «ПКК Миландр» пошли иным путём – они сделали три таймера с расширенным функционалом, хотя и назвали их «Таймеры общего назначения». По сравнению с другими периферийными устройствами таймеры в 1986ВЕ9х довольно неплохие. Не получилось реализовать в проекте только синхронный запуск двух таймеров по событию третьего таймера и самостоятельную перезагрузку при захвате фронта для организации циклической работы, так, чтобы отслеживать периодичность фронтов сигнала, и, в случае если фронт не успел, уходить в прерывание счетчика при CNT равном ARR. Вдобавок обнаружилась проблема с прерываниями таймера MDR_TIMER1, но винить в этом только таймер неправильно, поскольку проблема может быть на стороне NVIC, подробнее об этом я напишу ниже. Также к таймерам относятся SysTick и Watchdog, первый входит в состав ядра и является простейшим вычитающим счетчиком, а вторые (IWDG и WWDG) ничем не отличаются от STM32F10x.

    АЦП в обоих вариантах сдвоенное и имеет одинаковую скорость преобразования – 512 тысяч выборок в секунду, но по функциональности и удобству отечественному периферийному блоку далеко до иностранного аналога. Возможность запускать преобразование АЦП от внешних событий в STM32F10x позволяет синхронизировать несколько периферийных блоков без отрыва ядра от текущей задачи и производить выборку в нужный момент на кривой измеряемого сигнала. Это во многом облегчает и упрощает работу с STM32 и является его большим плюсом. В 1986ВЕ9х по каким-то причинам это не реализовали. Иностранный аналог имеет возможность объединять измеряемые каналы в группы (инжектированные или регулярные) и измерять их в разных последовательностях, при том, если применять инжектированную группу (в которую входит до 4 каналов), то каждый результат будет находиться в своём регистре. Таким образом, результаты преобразований не перезатираются внутри группы, как это происходит при использовании регулярной группы, где регистр результата один на все каналы. В 1986ВЕ9х сделали подобие регулярной группы, при том, что синхронно разные каналы измерять невозможно. Синхронно можно измерять только одни и те же каналы для увеличения скорости преобразования.

    Вот здесь у 1986ВЕ9х начинается “мрак”. Этот блок после многоразового прочтения документации и анализа его работы поверг меня в уныние. Один вопрос гложет меня до сих пор: «Зачем городить такой DMA, если он не может работать без участия ядра?». Из всего описания DMA в документации самое нужное написано в глубине раздела, цитирую: «После выполнения контроллером N передач, контроллер устанавливает значение поля cycle_ctrl в b000, делая тем самым channel_cfg данные “неправильными”. Это позволяет избежать повторения выполненной передачи DMA». Из этого следует, что, перед приходом запроса DMA, например, от любого периферийного блока, коих там не много, cycle_ctrl должен содержать значение «Режим работы при выполнении цикла DMA» не равное b000, а, так как после выполнения предыдущего цикла данные в том месте обнулились, то для нормального функционирования нужно останавливать ядро в текущей задаче и успевать вносить данные (b001 – основной режим, b010 – режим авто-запрос или b011 – режим пинг-понг) в то самое поле cycle_ctrl. Преклоняюсь перед “гениальностью” разработчиков данного DMA! В STM32F10x все просто, доступно и легко, переправляешь данные куда душе угодно по запросам DMA без участия ядра.

    Проблем не возникло, все работало, как надо. Это единственный периферийный блок в творении АО «ПКК Миландр», который у меня не вызвал нареканий. Из плюсов можно отметить: у STM32F10x имеется режим SmartCard и поддерживается сеть LIN; у 1986ВЕ9х присутствуют буферы FIFO, как на передачу, так и на приём. В остальном все примерно одинаково, кроме того, что в микроконтроллерах ST Microelectronics число блоков UART от двух до пяти, а в серии 1986ВЕ9х их только два.

    NVIC реализован в ядре Cortex M3 и предназначен для организации прерываний, как от внутренних блоков, так и от внешних линий (EXTI). В зависимости от конкретной реализации он может поддерживать до 240 линий запросов прерываний. В микроконтроллерах STM32F10x из 240 задействовано 60 прерываний, а у ИМС 1986ВЕ9х их всего 32. Это явный показатель того, что развитость периферийной инфраструктуры отечественного микроконтроллера отстаёт от зарубежного аналога.

    В микроконтроллерах 1986ВЕ9х такого блока в принципе нет, у них четыре линии с NVIC напрямую идут на ножки микроконтроллера, поэтому он может различать только присутствие или отсутствие логического уровня. Если этот уровень установился (логическая ‘1’), то вызывается обработчик прерывания, и если к моменту выхода из обработчика прерывания уровень не изменится (станет логическим ‘0’), то мы тут же опять попадем в тот самый обработчик прерывания. Совсем по-иному сделали в STM32F10x, где прерывания возможны почти с любой ножки, и отслеживаются не уровни, а фронты и/или срезы сигналов. Зачастую в программе нужно отследить изменение сигнала и вызвать при этом обработчик прерывания только один раз, а не так, как нам это предлагает АО «ПКК Миландр». На весь блок EXTI в иностранном аналоге отведено 7 линий в NVIC, поэтому несколько выводов микроконтроллера сгруппированы и прерывания с них попадают в один обработчик.

    Микроконтроллеры ST Microelectronics самые распространенные из всех с ядром Cortex M3. Причин этому несколько: недорогие отладочные платы, сами микроконтроллеры дешевые, доступная и понятная документация, и т.д. Основным документом при работе с STM32F10x является RM0008 «Reference manual», где подробно и ясно, хоть и не на родном языке, описаны принципы функционирования и представлены необходимые при программировании данные. Совсем иначе дела обстоят у АО «ПКК Миландр», основным документом является «Миландр. Спецификация на серию 1986ВЕ9x, версия (на момент написания статьи) 3.14.0 от 12.10.2018» и качество его оставляет желать лучшего. Ошибки и опечатки везде, к примеру: основные таймеры сначала были 32-битные, затем нормализовались и стали 16-битными, в описании DMA, где и без того все путанно и туманно, одно и то же фигурирует под разными именами (на рисунке 131 области памяти обозначены как: Control, Destination End Pointer и Source End Pointer в тексте на следующей странице они уже фигурируют под другими именами: channel_cfg, dst_data_end_ptr и src_data_end_ptr соответственно), поэтому разработчик, который собрался применить данный периферийный блок, должен каким-то образом сопоставить эти имена. И так перечислять можно еще долго. В основную документацию для чего-то поместили раздел «Система команд» ассемблера, хотя это относится конкретно к ядру Cortex M3, и абсолютному большинству разработчиков не требуется так, как пишут на «Си». Создается впечатление, что документацию на серию 1986ВЕ9x писали студенты–практиканты, мало чего понимающие в том, что излагают, и проверить их никто не удосужился.

    Программаторы и среды разработки

    Так как STM32F10x широко распространены, средств программирования и отладки тоже хватает. Сама ST Microelectronics выпускает недорогой ST-Link v2, а также программаторы многих сторонних производителей поддерживают STM32, например J-LINK. Среды разработки так же в достатке: Keil, IAR, CooCox, Eclipse, Atollic, и т.д. ST Microelectronics даже выпустила специализированный софт «STM32CubeMX», который генерирует «сишный» код под конкретную конфигурацию. 1986ВЕ9x присутствуют только в Keil, а программатор в моем случае подошел только отечественный «ChipProg-481» фирмы «Phyton».

    Помехоустойчивость и «баги»

    В реализуемом устройстве необходимо было производить измерения АЦП в середине импульса таймера (ШИМ), в STM32F10x для этого имеется необходимая инфраструктура, а именно возможность запуска преобразования АЦП по событию обновления счетчика. По причине того, что в 1986ВЕ9x такая инфраструктура отсутствует, пришлось осуществлять запуск преобразования АЦП из прерывания обновления счетчика MDR_TIMER1, вот здесь и обнаружился «баг». Прерывания происходили, как это и требовалось, при каждом обновлении таймера, но также появлялись “блуждающие” прерывания в хаотичном порядке, когда не происходило обновления счетчика. Эти ложные прерывания могли либо в период ШИМ появляться по нескольку раз, либо вообще отсутствовать на протяжении нескольких периодов. Очевидно, что этот «баг» таймера MDR_TIMER1, либо NVIC, или вообще где-то между таймером и NVIC (линии связи). В итоге продолжительных и безрезультатных изысканий решено было прекратить адаптацию 1986ВЕ9x в устройстве и оставить STM32F10x на своем месте, где он безотказно исполняет свои функции и по сей день.

    Ведущие фирмы-производители микроконтроллеров для освобождения процессорного времени внедряют разные методы коммуникаций между периферийными блоками: ST Microelectronics связывают блоки отдельными линиями; Microchip сделал специальный блок «EVENT SYSTEM» для коммутирования событий. В отечественных микроконтроллерах 1986ВЕ9x периферийные блоки существуют отдельно друг от друга, имея линии связи только с ядром. Мною было затронуто далеко не всё, что имеется на «борту» серии 1986ВЕ9x, но я уверен, что есть разработчики, которые углубились дальше и нашли больше. О причинах того, почему у АО «ПКК Миландр» такие микроконтроллеры, я могу только догадываться, ведь талантливыми инженерами всегда славилась Родина. Видимо, все они трудятся в другой сфере, либо вообще на другое государство. Ну, а мы имеем то, что имеем, поэтому нам остается только надеяться, верить и ждать, что, все-таки, состояние дел в этой высокотехнологичной области изменится в лучшую сторону.

    Автор: Ametrin Создано: 28 октября 2018

    Добавить комментарий(Нажмите, чтобы отменить ответ)

    Для отправки комментария Вам необходимо авторизоваться

    Микроконтроллеры ARM Cortex M4F от STMicroelectronics

    В ассортименте компании «ЧИП и ДИП» представлена новая серия микроконтроллеров STM32F4 от STMicroelectronics. Расширение платформы STM32 основано на последней версии ядра ARM Cortex-M4, которая добавляет новые возможности в сфере обработки сигналов и более быстрые по времени выполнения операции к уже хорошо зарекомендовавшей себя линейке микроконтроллеров STM32.

    Сфера применения семейства STM32, построенного на базе 32-х разрядного ядра, довольно широка: медицинские приборы, средства измерений, кассовое оборудование, автоматизация и безопасность зданий, домашние аудио системы и пр. И с новой серией STM32 F4 производитель надеется расширить список сферы применения своей продукции. DSP инструкции, выполняемые за один такт, открывают для нового продукта двери на рынок цифровых сигнальных контроллеров, который требует высокие показатели вычислительной способности и DSP-инструкции для особо требовательных в этом плане приложений, таких как медицинское оборудование, управление двигателями и охранное оборудование.

    Обеспечивая аппаратную (полное совпадение выводов) и программную совместимость с серией STM32 F2, и в то же время, имея больший объем SRAM, повышенную производительность и лучшую помехоустойчивость периферии, серия F4 позволит разработчикам улучшить конечный продукт, если им необходимо больше объема памяти, производительности или особенностей периферии. Также, если разработчик использует в своем продукте два чипа – MCU и DSP, то теперь он может объединить возможности этих двух чипов в одном высокопроизводительном сигнальном контроллере.

    Наряду с уже упомянутой аппаратной и программной совместимостью с серией F2, серия F4 имеет повышенную производительность (168 МГц / 210 DMIPS вместо 120 МГц / 150 DMIPS), DSP-инструкции, выполняемые за один такт, математический сопроцессор, увеличенную SRAM (192 Кб вместо 128 Кб), встроенную Flash-память от 512 Кб до 1 Мб и усовершенствованную периферию для задач отображения, реализации интерфейсов и криптографии. 90 нанометровая КМОП-технология и встроенный фирменный «ускоритель памяти» ART Accelerator позволяют получить современные показатели производительности с беспрерывным исполнением программы на частоте до 168 МГц и лучший в своем классе уровень энергопотребления.

    Особенности серии STM32 F4:
    • сверхбыстрая передача данных, с семиуровневой матрицей двойной высокоскоростной шины (AHB) и мульти-DMA контроллером, которые позволяют производить параллельно обработку и передачу данных;
    • встроенный FPU одинарной точности повышает качество выполнения алгоритмов управления, добавляет больше возможностей приложениям, улучшает эффективность кода, устраняет разброс, позволяет использовать инструменты мета языка;
    • высокая интеграция, до 1 Мб Flash-памяти, 192 Кб SRAM, схема перезагрузки (сброса), внутренние RC и PLL, часы реального времени с потреблением до 1 мкА;
    • экстра гибкость в снижении энергопотребления в приложениях, требующих как высоких производительных мощностей так и пониженного энергопотребления при работе на малых величинах напряжения или от аккумуляторов. Для этого предусмотрены 4 Кб резервной SRAM, чтобы сохранить данные при разрядке батарей, потребление часов реального времени, не превышающее 1мкА и внутренний регулятор напряжения со способностью определения уровня напряжения, позволяющий выбирать высокопроизводительный режим работы или режим пониженного энергопотребления;
    • широкий выбор средств разработки и программного обеспечения, включающий разнообразные IDE, инструментарий мета языков, библиотеки DSP и прочих полезных функций, недорогие стартовые наборы;
    • богатая, инновационная периферия:
    — интерфейсы: интерфейс камеры, процессор Crypto/Hash HW, Ethernet MAC10/100 с поддержкой IEEE 1588 v2, два USB OTG
    — аудио: специализированный аудио PLL и два полнодуплексных I2C
    — до 15 коммуникационных интерфейсов, включая 6 UART, работающих на скорости до 10 Мбит/с, три SPI, работающих на скорости до 42 Мбит/с, три I2C, два CAN, SDIO
    — обработка аналоговых сигналов: два 12-битных ЦАП, три 12-битных АЦП достигающих 2.4 MSPS или 7.2 MSPS при поочередной их работе
    — до 17-ти таймеров: 16- и 32-битных, работающих на частоте до 168 МГц

    Продукция серии STM32 F4 представлена пока в следующих вариантах:

    STM32F405RGT6: в дополнение к богатой периферии, включающей таймеры, три АЦП, два ЦАП, последовательные интерфейсы, интерфейс внешней памяти, часы реального времени, модуль для подсчета CRC, аналоговый генератор случайных чисел, микроконтроллер STM32F405RGT6 имеет USB-OTG интерфейс, а также 1 Мбайт Flash-памяти. Прибор выпускается в корпусе LQFP64.

    STM32F407VET6 и STM32F407ZGT6 : расширена периферия, в дополнение к периферии STM32F405 добавлен второй USB-OTG интерфейс, интегрированный Ethernet MAC 10/100 с поддержкой MII и RMII, от 8 до 14-ти разрядный интерфейс камеры, позволяющий произвести соединение с КМОП-камерами при работе на скорости до 67.2 Мбайт/с. Микроконтроллеры STM32F407 доступны в корпусах — LQFP100 и LQFP144: и Flash-памятью от 512 Кбайт до 1 Мбайта.

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

    Nav view search

    Навигация

    Искать

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

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

    Микроконтроллеры Cortex-M0/M3/M4

    Микроконтроллеры Cortex-M стали сегодня одними из самых популярных процессоров, применяемых при разработке и изготовлении электронной техники. Высокая вычислительная мощность, широкий набор периферии и низкая стоимость делают эти устройства привлекательными для самого широкого круга разработчиков. При этом каждый желающий может выбрать наиболее подходящий вариант для решения конкретной задачи. Производители предлагают огромное количество разнообразных микросхем, общим для которых остается только процессорное ядро. На сегодняшний день распространение получили 3 варианта ядер: Cortex-M0, Cortex-M3, Cortex-M4. Отличия этих моделей не всегда явно прослеживаются, поэтому данная статья делает попытку разобраться в особенностях этих вариантов.

    Микроконтроллеры Cortex-M представляют собой одно из направлений развития микропроцессорных ядер, предлагаемых фирмой ARM. Фактически, под общей торговой маркой Cortex можно увидеть три типа процессоров (профилей), обозначаемых буквами A, R, M. Задачей профиля A стало достижение большой вычислительной мощности. Изделия с этой маркировкой — Cortex-A, представляют собой классические микропроцессоры, являющиеся дальнейшей эволюцией разработок ARM. Профиль R нацелен на использование во встраиваемых системах, поэтому эти процессоры модернизированы для исполнения задач в реальном времени. Основной задачей профиля M заявлена простота и низкая стоимость. Технически Cortex-M представляют сильно упрощенные варианты старших моделей. Тем не менее, даже такие «урезанные» контроллеры обладают вычислительной мощностью, значительно превышающей многие аналоги. Также отличием от «больших» ARM стала поддержка битовых операций, необходимая в микроконтроллерах для работы с периферией.

    Cortex-M0

    Микроконтроллеры, использующие ядро Cortex-M0, позиционируются производителями в качестве замены 8-ми разрядных моделей. Их отличительной особенностью стала предельно низкая стоимость и малое энергопотребление, при сохранении многих возможностей архитектуры ARM.

    По своей структуре ядро Cortex-M0 — это конфигурируемый мультистадийный 32-разрядный RISC процессор. В его основе лежит архитектура ARMv6-M. Основное отличие от классической «большой» ARMv6 заключается в использовании только набора 16-разрядных инструкций, под общим названием Thumb. Дополнительно поддерживаются некоторые команды более нового набора Thumb2. Такое решение, при незначительном падении вычислительной мощности, максимально упростило процессор относительно старших моделей и позволило использовать дешевую 16-ти разрядную память. Благодаря использованию современных технологий проектирования, количество транзисторов, из которых построено данное ядро, составляет примерно 12 тысяч. Такое количество обеспечило низкое энергопотребление и невысокую стоимость. Для сравнения процессор i8086 имел 32 тысячи транзисторов при намного меньших возможностях. Энергопотребление процессора M0, в зависимости от исполнения и решаемых задач, колеблется от 73 до 4мкВт/МГц.

    Быстродействие ядра Cortex-M0 составляет 0.84 DMIPS / МГц. Это значит, что на максимальной частоте работы ядра в 50Мгц, достигается производительность 45 DMIPS. Данное значение превышает возможности 8-ми разрядных систем в несколько десятков раз, и на порядок выше, чем у 16-разрядных моделей.

    Разработчики, в архитектуре Cortex, попытались получить законченное процессорное ядро. Поэтому в его состав включены: контроллер прерываний на 32 вектора, интерфейс для периферийных устройств в виде 32-разрядной шиной ASB-Lite, отладчик. При необходимости процессор может оснащаться контроллером «спящего» режима.

    Процессорное ядро Cortex-M3

    Процессорное ядро Cortex-M3 стало наиболее популярным вариантом архитектуры ARM у производителей и разработчиков микроконтроллеров. Структурно, это также мультистадийный RISC процессор. Но в отличие от M0, данное ядро основано на архитектуре ARMv7-M и полностью реализует наборы команд Thumb и Thumb2. Из особенностей следует упомянуть аппаратное умножение 32-разрядных чисел за 1 цикл, а также деление чисел подобной разрядности (от 2 до 12 циклов). Производительность процессора составляет 1.25DMIPS/МГц. Энергопотребление примерно в два раза выше, чем у варианта M0. Количество физических прерываний увеличено до 240. В ядре предусмотрен механизм защиты памяти.

    Cortex-M3, в отличие от классической ARMv7, выполнен по Гарвардской архитектуре и поддерживает несколько периферийных шин. Следует отметить, что ARMv7 является основой только процессоров под обозначением Cortex и имеет мало общего с некогда сверхпопулярной ARM7 и ее вариантами. Хотя именно с ARM7 часто сравнивают возможности Cortex-M3.

    Cortex-M4

    Вариант микроконтроллерного ядра Cortex-M4, по сравнению с Cortex-M3, не характеризуется ростом общих показателей. Фактически M4 тот же самый M3, но дополнительно оснащенный DSP-инструкциями. Наличие последних существенно ускоряет обработку потоковых данных, что в свою очередь делает M4 весьма привлекательным для использования в системах управления и обработки информации.

    Возможности DSP, входящего в состав M4, позволяют параллельно выполнять четыре операции сложения/вычитания для 8-ми разрядных чисел или две операции сложения/вычитания с16-ти разрядными операндами. Также реализовано умножение за один цикл, при этом для 16-ти разрядных чисел возможно параллельное исполнение двух операций.

    В серии M4 есть еще один вариант, под обозначением Cortex-M4F. В нем, дополнительно к DSP, установлен блок операций для чисел с плавающей точкой – FPU.

    Кроме вышеназванных, существуют и другие варианты процессоров. Большинство из них представляют модернизированные варианты основных ядер. Несколько особняком стоит малоизвестный Cortex-M1, предназначенный для использования в программируемых логических матрицах. Основные характеристики этого процессора практически совпадают с вариантом M0, но при этом он реализован только в виде программной модели.

    В отличие от профиля А, Cortex-M развивается не столь бурно. Когда и какими будут будущие микроконтроллеры неизвестно. Можно только предположить, что развитие пойдет по пути «больших» систем и в скором времени привычными станут двух-, трех или четырехядерные контроллеры.

    STM32MP1 — новый многоядерный микропроцессор от STMicroelectronics, поддерживающий работу с Linux

    Автор статьи

    Святослав Зубарев (г. Смоленск), Павел Башмаков active@ptelectronics.ru

    Полезные ссылки

    Компания STMicroelectronics выпустила линейку новых многоядерных микропроцессоров STM32MP1,

    построенных на базе процессоров ARM Cortex-A7 и ARM Cortex-M4, имеющих поддержку Linux и способных выполнять самые разные задачи в режиме реального времени.

    Опубликовано в журнале «Вестник Электроники» №1 (65) 2019

    Описание устройства

    STM32MP1 базируются на одном или двух ядрах ARM Cortex-A7 (в зависимости от конфигурации), работающих с номинальной частотой 650 МГц, а также Cortex-M4, действующем на частоте 209 МГц. Cortex-A7 предоставляет доступ к открытым программным обеспечениям (Linux/Android), в то время как Cortex-M4 использует среду STM32 MCU.

    Процессор Cortex-A7 обеспечивает на 20% больше производительности, чем предшественник Cortex-A5, и включает все функции высокопроизводительных процессоров Cortex-A15 и Cortex-A17, в том числе аппаратную поддержку виртуализации, LPAE, Neon и 128-битный интерфейс шины AMBA 4 AXI. Cortex-A7 имеет площадь 0,45 мм 2 (с блоком для выполнения операций с плавающей точкой, Neon и кэш-памятью L1 объемом 32 кбайт) и требует менее 100 мВт общей мощности в стандартных условиях эксплуатации. Все это в совокупности делает процессор Cortex-A7, а значит, и построенные на его базе микроконтроллеры прекрасным решением для применения в целом ряде мобильных устройств.

    Процессор Cortex-M4, в свою очередь, создан для работы на рынках управления цифровыми сигналами, которые требуют эффективного, простого в использовании сочетания возможностей управления и обработки сигналов. Комбинация высокоэффективных функций обработки сигналов с преимуществами семейства процессоров Cortex-M с малым энергопотреблением, низкой стоимостью и простотой использования предназначена для удовлетворения возникающей категории гибких решений. Cortex-M4 имеет встроенный блок для выполнения операций с плавающей точкой (FPU) ординарной точности, а также реализует набор инструкций для операций цифровой обработки сигналов (DSP), которые поддерживаются бесплатной библиотекой DSP-lib от ARM. Также, ядро Cortex-M4F содержит адаптивный ускоритель реального времени (ART Accelerator). Структура процессоров Cortex-A7 и Cortex-M4 показана на рис. 1.

    Рис. 1. Структура Cortex-M4 и Cortex-A7

    Помимо того что линейка STM32MP1 способна работать под Linux, данные микроконтроллеры имеют ряд других особенностей. Например, у одного из представителей данного семейства (STM32MP157) есть дополнительный GPU графический процессор Vivante 3D с поддержкой OpenGL ES 2.0; до 26 MTriangles/s.

    Все представители данной линейки имеют на борту контроллер MIPI-DSI, поддержку HDMI-CEC, USB 2.0 и 10/100M или Gigabit Ethernet с аппаратным IEEE 1588v2, MII/RMII/GMII/RGMII.

    Внутренняя память микроконтроллеров — это 708 кбит SRAM: 256 кбит AXI SYSRAM + 384 кбит AHB SRAM + 64 кбит AHB SRAM, а также 4 кбит SRAM в резервном домене. Предусмотрена и возможность подключения внешней памяти до 1 Гбит 16/32-бит LPDDR2/LPDDR3-1066 или 16/32-бит DDR3/DDR3L-1066. Структурная схема STM32MP1 изображена на рис. 2.

    Рис. 2. Блок-схема микроконтроллера STM32MP1

    STM32MP1 имеют на борту LCD-TFT-контроллер и, соответственно, поддерживают работу с дисплеем 24-бит (RGB888) и WXGA (1366×768) 60 fps.

    Прочая периферия данной линейки включает до 176 портов ввода/вывода (в зависимости от конфигурации) с возможностью прерывания, в том числе до восьми безопасных вводов/выводов, до шести вводов/выводов пробуждения, три тампера, один активный тампер, три DMA-контроллера для разгрузки процессора, шесть I 2 C FM+ (1 Мбит/с, SMBus/PMBus), четыре UART + четыре USART (12,5 Мбит/с, интерфейс ISO7816, LIN, IrDA, SPI slave), шесть SPI (50 Мбит/с, в том числе три из них с полнодуплексными I 2 S аудиокласса точности через внутренний аудио PLL или внешний генератор), четыре SAI (стерео-аудио: I 2 S, PDM, SPDIF Tx), SPDIF Rx с четырьмя входами, интерфейс HDMI-CEC, MDIO Slave, три SDMMC до 8-бит (SD/e•MMC/SDIO), два контроллера CAN, поддерживающие протокол CAN FD, один из которых поддерживает time-triggered CAN (TTCAN), 8–14-бит интерфейс камеры до 140 Мбайт/с.

    К аналоговой периферии микроконтроллеров относятся два АЦП с максимальным разрешением 16 бит (12 бит 5 Msps, 14 бит 4,4 Msps, 16 бит 250 ksps), датчик температуры, два 12-бит D/A-преобразователя (1 МГц), цифровой фильтр для сигма-дельта-модулятора (DFSDM) с восемью каналами и шестью фильтрами, внутренний или внешний АЦП/ЦАП опорного VREF+.

    Безопасность STM32MP1 обеспечивается наличием безопасной загрузки, периферии TrustZone, активного тампера, изоляцией ресурсов Cortex-M4, а также аппаратным шифрованием (AES, HASH), двумя TRNG и двумя блоками расчета CRC.

    Микроконтроллеры доступны в следующих корпусах: 10×10 мм TFBFA257, 12×12 мм TFPBGA361, 16×16 мм LFBGA354 и 18×18 мм LFBGA448.

    В настоящее время существует три версии STM32MP1 (рис. 3):

    • STM32MP157 — два ядра Cortex-A7 650 МГц, ядро Cortex-M4 209 МГц, графический 3D-процессор, интерфейс дисплея DSI и CAN FD;
    • STM32MP153 — два ядра Cortex-A7 650 МГц, ядро Cortex-M4 209 МГц и CAN FD;
    • STM32MP151 — ядро Cortex-A7 650 МГц, ядро Cortex-M4 209 МГц.

    Рис. 3. Линейка микроконтроллеров STM32MP1

    Гибкая архитектура и энергоэффективность

    Учитывая, что линейка STM32MP1 построена сразу на двух разновидностях процессоров ARM (Cortex-A7 и Cortex-M4), производитель предусмотрел возможность распределения задач между процессорами для улучшения параметров энергопотребления. Условно потребление можно разделить на три режима:

    • Режим полной мощности, в котором работают оба ядра (рис. 4), например для коммуникации по HMI, включая графическую обработку и вывод на дисплей, управление двигателем и считыванием показаний с датчиков.
    • Режим, в котором задействован только процессор Cortex-M4 (рис. 5). Такой режим полезен в тех случаях, когда необходимо уменьшить энергопотребление и требуется работа с графикой и коммуникацией. В данном режиме энергопотребление сокращается в 4 раза относительно полной мощности.
    • Режим ожидания (рис. 6). Оба процессора отключены, энергопотребление снижено в 2500 раз по сравнению с предыдущим режимом.

    Более конкретные параметры энергопотребления отображены на рис. 7.