Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Встроенные интерфейсы коммуникации

Поиск

Ethernet. Данный блок присутствует не во всех продуктах семейства, а лишь в контроллерах STM32F407 / STM32F417. Блок выполнен в строго по стандарту IEEE802.3. Возможна передача данных со скоростью 10/100 Мбит/с. Доступна синхронизация часов для чего протокол IEEE1588 v2 реализован аппаратно. Для оптоволоконной либо медной линии требуется применение стороннего приемопередатчика. PHY-трансивер соединяется напрямую с портом MII или RMII.

USB (Universal Serial Bus). На борту присутствует два раздельных блока USB.

· Первый – USB OTG full-speed, является полностью аппаратной реализацией и совместим со стандартами USB 2.0, а также OTG 1.0. Работает на скорости до 12 Mбит/с. Поддерживается работа в режиме Host/Device/OTG. Присутствует SRP (Session request protocol) и HNP (Host negotiation protocol).

· Второй – USB OTG high-speed работает в режиме Host/Device/OTG с высокой скоростью 480 Мбит/с, для чего необходим блок приемопередатчика, работающего на высокой скорости через специальный ULPI-интерфейс.

SDIO (Secure Digital Input/Output). Интерфейс позволяет работать с картами SD/SDIO/MMC-картами памяти и дисковыми контроллерами CE-ATA. В восьмибитном режиме несущая частота обмена данными составляет 48 MHz. Контроллер соответствует таким стандартам: SD Memory Card 2.0, MultiMediaCard System 4.2 (работа в режимах 1/4/8 бит), SD I/O Card 2.0 (режимы 1го и 4х бит), CE-ATA 1.1.

SPI (Serial Peripheral Interface). Устройство оснащено тремя блоками SPI, каждый из которых работает в режиме Мaster (Мultimaster) либо в режиме Slave, передавая данные полудуплексно, полнодуплексно либо симплексно. Поддерживается аппаратный расчет контрольных сумм CRC для повышения помехоустойчивости канала связи: так CRC может быть передан последним байтом слова в режиме Tx, присутствует автопроверка правильности CRC последнего пришедшего байта. Блок устройства SPI1 работает на скоростях вплоть до 37,5 Mбит/с. Другие ограничены максимальной скоростью в 21 Мбит/с.

Передача данных идет в виде 8- или 16-битных блоков, вперед младшим либо старшим битом. При чем допускается программная замена фазы и полярности сигнала тактирования.

USART (Universal Synchronous Asynchronous Receiver Transmitter). В микроконтроллер встроено четыре блока USART и два UART (Universal Asynchronous Receiver Transmitter). Блоки USART1 и USART6 допускают высокоскоростной обмен данными на скорости до 10,5 Mбит/с. Другие же поддерживают скорость не более 5,25 Mбит/с. На нативном уровне присутствует поддержка передачи данных согласно стандарта NRZ (Non Return to Zero).

Обмен данными осуществляется с использованием 8- либо 9-битных блоков, один или два бита которых выделены как стоп-биты и биты проверки четности. USART можно сконфигурировать на режим SPI, блок USART при этом выступает в роли ведущего устройства SPI. Используя блок USART можно организовать подключение к интерфейсу LIN, нашедшему применение в автомобильной промышленности, либо настроить на энкодинг/декодинг ИК-сигнала IrDA. Возможна работа с модемами по линиям управления RTS и СTS. Поддерживается работа со смарт-карточками.

I2C (Inter-Integrated Circuit). На борту МК содержится три блока I2C, поддерживающих работу в режиме Master/Slave (ведущий или ведомый), а также в режиме Мultimaster (режим в котором на шине присутствуют несколько Master-устройств, разделяющих общие ресурсы Slave, либо поочередно изменяющих свое состояние с Master на Slave и обратно). В составе устройства имеется модуль диагностики и исправления пакетных ошибок PEC. Используется 7-битный и 10-битный режим адресации. Поддерживаются общепринятые для протокола скорости обмена данными до 100 kHz в простом режиме и 400 kHz в режиме сверхбыстрого обмена данными. Модули могут быть сконфигурированны на расширенные протоколы SMBus 2.0 и PMBus.

I2S (Inter-Integrated Sound). В микроконтроллере присутствуют два мультиплексированных блока I2S со встроенным SPI. Оба модуля могут быть сконфигурированны на работу в режиме Мaster либо Slave. Данные передаются по 16, 24 или 32 бита полнодуплексно или симплексно.

Среди поддерживаемых протоколов такие: Phillips I2S, PCM, MSB и LSB с выравниванием данных. Интерфейс I2S был разработан для обмена звуковыми данными в цифровом формате. Отныне для тактирования присутствует отдельный PLL, делающий возможным генерацию частот сэмплов аудио от 8 до 192 kHz с погрешностью не более 0,01%.

CAN (Controller Area Network). На борту находится два CAN-модуля, работающих по стандартам 2.0А и 2.0В, скорость работы при этом достигает 1 Мбит/с. Модули могут работать со стандартными, а также с расширенными кадрами. Модуль CAN содержит три буфера передачи, трехкаскадный FIFO-стек и 28 банков фильтров (распределены и масштабируемы).

DCMI (Digital Camera Interface). Присутствует в контроллерах STM32F407 и STM32F417. При помощи данного интерфейса можно организовать прямое подключение к камере или CMOS-матрице. Возможна внутренняя и внешняя синхронизация покадрово или построчно, работа в непрерывном режиме, автообрезка лишних частей изображения. Среди поддерживаемых форматов 8/10/12/14-битное прогрессивное видео, YCbCr 4:2:2 и RGB 565, JPEG.

FSMC (Flexible Static Memory Controller). Блок используется для подключения жидкокристаллических дисплеев либо внешней памяти напрямую. Блок содержится лишь в 100-, 144- или 176-пиновых корпусах.

Возможно сопряжение с подключенной синхронной либо асинхронной памятью или PCMCIA-устройствами. В основном блок предназначен для выдачи данных МК в соответствующем подключенным устройствам виде без лишних затрат процессорного времени на перекодирование данных.

Таким образом каждое внешнее устройство имеет собственный адрес из пула, собственные сигналы для управления. Подав необходимый сигнал выбора микросхемы можно получить доступ к тому или иному внешнему устройству (одновременное использование не допустимо). Возможно подключение таких типов памяти как NAND Flash, Compact Flash, NOR Flash, SRAM и PSRAM. Интерфейс сконфигурирован для работы с LCD-контроллерами Motorola 6800 и Intel 8080, однако может быть легко использован для сопряжения с контроллерами других производителей.

Цифровой сигнальный процессор (англ. digital signal processor, DSP, цифровой процессор обработки сигналов (ЦПОС)[1]) — специализированный микропроцессор, предназначенный для обработки оцифрованных сигналов, в режиме реального времени. Архитектура сигнальных процессоров, по сравнению с микропроцессорами общего применения, имеет некоторые особенности, связанные со стремлением максимально ускорить выполнение типовых задач цифровой обработки сигналов, таких, как цифровая фильтрация, преобразование Фурье, поиск сигналов и т. п. Математически эти задачи сводятся к поэлементному перемножению элементов многокомпонентных векторов действительных чисел, последующему суммированию произведений (например, в цифровой фильтрации выходной сигнал фильтра с конечной импульсной характеристикой равен сумме произведений коэффициентов фильтра на вектор выборок сигнала, аналогичные вычисления производятся при поиске максимумов корреляционных и автокорреляционных функций выборок сигналов). Поэтому сигнальные процессоры оптимизированы по быстродействию для выполнения именно таких операций. И ЦСП ориентированы, в первую очередь, на многократное выполнение умножения с расчётом «на лету» адресов перемножаемых элементов массивов.

Модуль операций с плавающей запятой (или с плавающей точкой; англ. floating point unit (FPU)) — часть процессора для выполнения широкого спектра математических операций над вещественными числами.

Простым «целочисленным» процессорам для работы с вещественными числами и математическими операциями требуются соответствующие процедуры поддержки и время для их выполнения. Модуль операций с плавающей запятой поддерживает работу с ними на уровне примитивов — загрузка, выгрузка вещественного числа (в/из специализированных регистров) или математическая операция над ними выполняется одной командой, за счёт этого достигается значительное ускорение таких операций.

Урок 1 - GPIO. Порты ввода-вывода.

· Для каждого порта можно выбрать свою скорость тактирования для каждой ножки МК

· Каждый порт может контролировать до 16ти выводов МК

· На смену режима порта уходит около 2х тактов

· На выход данные могут поступать из регистра вывода GPIOx_ODR(или отдельного периферийного блока, запомним на будущее)

· Сигнал, поступивший на вход записывается в аналогичный регистр ввода GPIOx_IDR(или идет на периферийный блок)

· У нас есть специальный механизм блокировки конфигурации порта посредством регистра GPIOx_LCKR. Очень хорошо, такой подход добавляет надежности. Ведь при «случайной» записи не той конфигурации можно легко спалить вывод МК или того хуже: представьте, что наш STM32 управляет устройством, от которого зависит жизнь людей, только представьте, к чему может привести появление «не того» сигнала на выходе МК. А как известно, в процессе написания кода довольно легко допустить ошибку, которую так сразу и не выявить. Под «не тем сигналом» я подразумеваю, например, случайную смену режима «двухтактный выход» на режим «открытый сток» или наоборот. Об этих режимах поговорим чуть ниже.

· У нас есть мультиплексирование выводов. Такой подход позаимствован из FPGA. Использование мультиплексирование позволяет сделать дизайн более гибким и значительно упростить разводку и улучшить частотные свойства, у нас ведь предел 168 MHz. Тем не менее, мультиплексирование — не панацея и учитывать расположение выводов все же придется.

 

Перейдем к режимам работы порта. Смотрим в пункте 8.3 GPIO functional description режимы:


· Input floating
По-нашему это высокоимпедансный вход, он же плавающий, он же Hi-Z. На выходе МК установлена комплементарная пара полевых транзисторов (один n-канальный и один p-канальный). В закрытом состоянии сопротивление сток-исток стремится к бесконечности, следовательно, ток через вывод МК, можно сказать, не течет. Говорят, что в таком случае выход ведет себя как «плавающий», т.е. отключенный от схемы. Комплиментарную пару можно увидеть на Figure 25. Более подробно об этом типе входа можно почитать на Википедии

· Input pull-up
Это вход с подтяжкой к питанию, т.е. между входом и питанием включен подтягивающий резистор(номинала порядка килоом). Подтягивающий резистор позволяет выходу находиться либо в высоком (подтянут к питанию), либо в низком (подтянут к земле) состоянии, когда к выходу не приложено внешнее напряжение. Это позволяет избежать спонтанных появлений 0 и 1 на входе. Подробнее о подтяжке можно.

· Input-pull-down
По аналогии с предыдущим, этот вход — с подтяжкой к земле. Если открыть стр. 110 Даташита на STM32F407, а конкретно таблицу Table 47. I/O static characteristics, можно увидеть, что значение подтягивающих резисторов обычно равно 40 кОм (кроме выводов PA10 и PB12 — для них 11 кОм).

· Analog
Вывод может быть сконфигурирован как аналоговый вход или выход. Это касается отдельных периферийных блоков (АЦП, ЦАП), так что пока просто запомним, что такой режим есть.

· Output open-drain with pull-up or pull-down capability
По-нашему звучит как «выход с открытым коллектором», но я с этим определением не согласен, транзисторы-то полевые. Так что назовем его " выход с открытым стоком". Ну и конечно МК позволяет подключить к выводу подтяжку. Почитать можно тут(только не забывайте про тип транзистора). Ну и управляем при этом мы только n-канальным транзистором, опять-таки, это можно увидеть на Figure 25.

· Output push-pull with pull-up or pull-down capability
Push-pull означает «двухтактный выход». Пожалуй, самый часто используемый тип выхода: подали 0 — выход подключился к земле, 1 — подключился к питанию. Вот тутрассказывается об этом режиме выхода и дается сравнение с другими режимами.

· Alternate function push-pull with pull-up or pull-down capability
Уже описанный ранее двухтактный выход, только для альтернативной функции. Пока не затрагиваем.

· Alternate function open-drain with pull-up or pull-down capability
И соответственно выход с открытым стоком, так же для альтернативной функции, так же пока не трогаем. Важно пока просто запомнить, что нечто подобное есть.

 

Представлено изображение (из Справочного руководства), иллюстрирующее как устроен GPIO в STM32F407:

 

 

Регистры GPIO

В соответствии с пунктом 8.1 GPIO introduction у нас есть 10 регистров для каждого порта. Разобьём их на типы:

· Регистры конфигурации
Эти регистры позволяют задавать режим работы каждой ножки отдельно. Всего их 4 для каждого порта:

 

1. GPIOx_MODER. Этот регистр задает направление ввода-вывода каждой ножки. Направление может быть: вход, выход, альтернативная ф-я, аналоговый. По-умолчанию(после сброса) направление всех ножек устанавливается на вход, кроме портов A и B(начальное состояние можно посмотреть в пункте 8.4.1. СР)

2. GPIOx_OTYPER. Этот регистр задает тип выхода: двухтактный или открытый сток. По умолчанию — двухтактный для каждой ножки

3. GPIOx_OSPEEDR. С помощью этого регистра задается частота тактирования каждого вывода. СР описывает частоты как: низкая, средняя, повышенная, высокая. После сброса скорость низкая(кроме В.3, тут высокая). Где же сами частоты? Их нужно смотреть в Даташите, об этом ниже.

4. GPIOx_PUPDR. Этот регистр управляет подтяжкой каждой ножки. Нам предлагают на выбор: без подтяжки, подтяжка к питанию, подтяжка к земле. По умолчанию подтяжки нет (кроме портов А и В, их состояние уточняйте в пункте 8.4.4 СР)

· Регистры данных
Тут все намного проще: два регистра, один на вывод, другой на ввод. Давайте рассмотрим их поподробнее:

 

1. GPIOx_IDR. Регистр ввода. Если вывод МК настроен на вход, то любой, поданный на ножку сигнал пройдет через триггер Шмитта и отразится в этом регистре в виде соответствующего 0 или 1.

2. GPIOx_ODR. Регистр вывода. То же самое, только задом-на-перед: то, что мы запишем в этот регистр (0 или 1) попадет на ножку МК в виде логического уровня цифрового сигнала.

  • Регистр установки/сброса
    GPIOx_BSRR. При помощи этого регистра осуществляется запись 0 или 1 в регистр вывода GPIOx_ODR. Вы спросите, зачем же нам нужен этот дополнительный регистр, если можно прочитать регистр вывода, установить и сбросить в нем нужные нам биты и снова записать результат регистр? Тут дело в атомарности операций. Без использования регистра установки/сброса такой подход занимает сразу несколько операций(тактов): сначала необходимо записать данные из регистра вывода в один из общих регистров, затем применить к данным в общем регистре логические операции (для переключения бита/битов используют XOR, для установки в 0 используют NOT затем AND, для установки в 1 используют OR), и наконец снова записать полученное значение из общего регистра обратно в регистр вывода. Как видим одна такая операция на самом деле состоит из 3-4 подопераций и не является единичной(атомарной). Такова особенность большинства архитектур. Неатомарность операций плоха тем, что если в момент выполнения одной из подопераций возникнет запрос прерывания, то МК переключится на выполнение кода прерывания и только после этого вернется к нашей подоперации. Следовательно, если в коде обработчика прерывания используется GPIO — можно получить на выводе МК не, то состояние. Есть много подходов к решению этой проблемы, словом некоторые(маскируемые) прерывания можно запретить на время выполнения операции, можно контролировать атомарность программно. Но STM предоставляет готовое решение — регистр установки/сброса, обращения через который атомарны и выполняются быстрее. О прерываниях мы поговорим в следующих уроках, а пока можно заглянуть сюда и вот сюда. При работе с МК знание булевой алгебры на начальном уровне обязательно, этой статьи нам будет вполне достаточно(только не забывайте, что она из цикла по MSP430, а мы изучаем STM32).

· Регистр блокировки
GPIOx_LCKR. Этот регистр осуществляет управление механизмом блокировки конфигурации, о котором я уже говорил в начале статьи. Что бы не забивать голову с самого начала, останавливаться на этом регистре, впрочем как и на самом механизме, мы не будем. При желании можно заглянуть в пункт 8.3.6 GPIO locking mechanism СР. Упомяну лишь, что даже в заблокированном состоянии доступна работа с регистром установки/сброса(GPIOx_BSRR) и регистром вывода(GPIOx_ODR).

· Регистры альтернативных функций
GPIOx_AFRL и GPIOx_AFRH.

 

 

                                  STM32CubeMX

STM32CubeMX – программная платформа с графическим интерфейсом, которая максимально упрощает построение программных проектов для микроконтроллеров STM32. STM32CubeMX позволяет работать не только с семейством STM32F7, но и со всеми существующими семействами микроконтроллеров STM32 (рисунок 12).

Рис. 12. Структура программной платформы STM32Cube

STM32CubeMX позволяет выполнять следующие операции (рисунок 13):

Рис. 13. Возможности STM32CubeMX

§ выбирать оптимальный микроконтроллер или отладочную плату с учетом особенностей конкретного приложения. Фильтрация производится по различным полям, таким как серия, корпус, объем памяти и так далее;

§ конфигурировать выводы микроконтроллера с помощью утилиты Pin Wizard;

§ настраивать частоты глобальных тактовых сигналов и тактовых сигналов периферийных устройств с помощью утилиты Clock Wizard;

§ настраивать параметры ПО промежуточного уровня, такие как файловая система, стеки протоколов, операционные системы и прочее, а также периферийные блоки с помощью утилиты Perepherial and middleware Wizard;

§ оценивать уровень потребления и срока службы аккумулятора при заданных настройках микроконтроллера с помощью утилиты Power consumption Wizard;

§ Создавать и редактировать проекты для микроконтроллеров STM32 с последующей генерацией С-кода для конкретных IDE (IAR™ EWARM, Keil™MDK-ARM, Atollic® TrueSTUDIO и AC6 System Workbench (SW4STM32)). При этом для генерации С-кода могут использоваться различные библиотеки нижнего уровня от ST: HAL или LL.

STM32CubeMX доступен для бесплатного скачивания на сайте www.st.com. После установки программы пользователь должен скачать библиотеки для требуемого семейства STM32, в нашем случае речь идет о программном пакете FW.F7.x.x.x. Скачивание можно производить непосредственно из STM32CubeMX. Для этого на заглавной странице, появляющейся сразу после запуска, нужно перейти на вкладку INSTALL/REMOVE (рисунок 120). Очень часто на сайте компании появляются обновления как самой программы STM32CubeMX, так и отдельных библиотек. Пользователям рекомендуется периодически проверять обновления (есть функция автообновления). Для этого необходимо заходить на вкладку CHECK FOR UPDATES (рисунок 14).

Рис. 14. Обновление STM32CubeMX и программных библиотек

Рассмотрим процесс создания проекта в STM32CubeMX, который представляет собой последовательность из нескольких шагов.

Для создания нового проекта пользователь должен выбрать подходящий микроконтроллер или отладочную плату. В этом ему помогут утилиты MCU Selector или Board Selector (рисунок 15).

Рис. 15. Создание проекта начинается с выбора микроконтроллера или отладочной платы

Если пользователь начинает проект с нуля без отладочной платы, то STM32CubeMX предложит выбрать контроллер по заданным параметрам с помощью фильтров. Основными фильтрами являются: процессорное ядро, семейство, линейка, корпус, периферия, встроенный графический контроллер и другие (рисунок 16).

Рис. 16. Выбор контроллера производится с помощью фильтров

После выбора подходящего контроллера разработчику предлагается определить назначение выводов с помощью утилиты Pin Wizard (рисунок 123). При этом выводы могут настраиваться индивидуально с помощью удобной диаграммы либо с помощью окна периферии. В последнем случае пользователь выбирает активные периферийные блоки, а программа автоматически подсвечивает занимаемые выводы. При этом стоит отметить удобную систему подсветки:

§ выводы питания окрашены желтым цветом;

§ неиспользуемые выводы окрашены серым цветом;

§ используемые выводы окрашены зеленым цветом;

§ используемые выводы окрашиваются оранжевым, если работа выбранного периферийного блока не разрешена.

Аналогичным образом подсвечиваются названия периферийных блоков в окне периферии. Настройка периферии выполняется в специальном окне, как показано на рисунке 17.

Рис. 17. Работа с утилитой Pin Wizard

Кроме периферийных блоков, пользователь может выбрать и настроить дополнительные библиотеки, в частности – файловую систему FATFS, операционную систему FreeRTOS и другие (рисунок 18).

Рис. 18. Настройка промежуточного ПО

Настройка системы тактирования производится с помощью вкладки Clock Configuration (утилита Clock Wizard), при этом пользователь работает с визуализированным деревом тактирования (рисунок 19). Clock Wizard позволяет за несколько кликов мыши выбрать источник системного тактового сигнала, значения делителей и умножителей, а также источники тактирования периферийных блоков. При этом если какой-либо тактовый сигнал выходит за границы допустимых значений, программа сразу же сообщает об ошибке.

Рис. 19. Работа с деревом тактирования в Clock Wizard

После того как все выводы и периферия настроены, а также сконфигурировано дерево тактирования, можно переходить к генерации кода. Это выполняется на вкладке Project Manager (рисунок 20). Здесь пользователь может настроить параметры проекта (название и путь), а также определить тип создаваемого проекта, который определяется выбором целевой IDE. В настоящий момент STM32CubeMX поддерживает следующие IDE:

Рис. 20. Настройка проекта и кодогенератора

§ EWARM (версии 7 и 8);

§ MDK-ARM (версии 4 и 5);

§ TrueStudio;

§ SW4STM32;

§ кроме того, кодогенератор может создавать makefile.

Далее на вкладке Code Generator следует определиться с составом копируемых в директорию проекта библиотек, настройками обработки пользовательского кода при регенерации (например, сохранять или удалять), настройками использования HAL. Стоит отметить важную особенность: если при настройке выводов в разделе HAL Settings поставить галочку напротив пункта «set all free pins as analog», и если при этом в Pin Wizard интерфейсы SWD/JTAG не были определены, то дальнейшая отладка микроконтроллеров с помощью этих интерфейсов будет невозможна.

Для более детальной настройки кодогенератора следует перейти на вкладку Advanced Settings. Главной особенностью С-генератора в STM32CubeMX является возможность использования как HAL, так и LL-драйверов. В рамках одного и того же проекта на STM32CubeMX можно одновременно использовать как HAL, так и LL, но для разных периферийных блоков. Подробнее об этих драйверах рассказывается в следующем разделе.

После нажатия на кнопку «GENERATE CODE» STM32CubeMX создает С-проект для выбранной IDE. Проект уже содержит весь код необходимый для конфигурации тактирования, выводов и периферии, выбранной пользователем. Чтобы в дальнейшем без проблем повторно генерировать код конфигурации без стирания пользовательского кода, разработчик должен помещать свой код в специальные секции (User code).

Еще одной полезной утилитой в составе STM32CubeMX является Power Consumption Calculator (рисунок 21). Этот калькулятор позволяет не просто рассчитать потребление микроконтроллера в различных режимах, но и определить срок службы различных элементов питания.

Рис. 21. Окно расчета потребления микроконтроллера

В STM32Cube примеры классифицированы в соответствии с уровнем ПО:

§ Examples – группа примеров, в которых используются только драйверы HAL и BSP, а ПО промежуточного уровня не используется. Целью этих примеров является демонстрация работы того или иного периферийного блока. Некоторые примеры достаточно просты и касаются только одного периферийного блока, другие могут демонстрировать совместную работу нескольких блоков, например, АЦП и DMA.

§ Examples_LL – группа примеров, в которых используются только драйверы LL, а HAL и ПО промежуточного уровня не используется. Эти примеры являются наименее ресурсоемкими и максимально простыми. Как правило, в них используется только один периферийный блок. Стоит отметить, что эти примеры предназначены исключительно для работы с платами Nucleo.

§ Examples_MIX – группа примеров, в которых используются драйверы HAL, LL и BSP, а ПО промежуточного уровня не используется. Главной задачей этих примеров становится демонстрация оптимального совместного использования HAL и LL, с учетом их достоинств. Примеры предназначены исключительно для работы с платами Nucleo.

§ Applications – группа примеров, предназначенных для демонстрации особенностей работы с ПО промежуточного уровня.

§ Demonstrations – примеры, использующие широкий набор периферии и ПО промежуточного уровня для демонстрации особенностей и производительности микроконтроллеров.

§ Template project – шаблоны проектов для IDE, предназначенные для быстрого создания проектов на базе отладочных плат.

                                    

                            STM32

 

                         Экосистема микроконтроллеров STM32

Программирование с использованием отладочной платы STM32F4Discovery

· микроконтроллер STM32F407VGT6 с частотой 168Mhz на 32-битном ядре ARM Cortex-M4F, 1 Мб флэш-памяти, 192 Кб оперативной памяти в корпусе LQFP100.

· встроенный ST-LINK/V2 с возможностью использования ST-LINK/V2 как отдельного устройства (с SWD разъемом для программирования и отладки).
LIS302DL, ST MEMS датчик движения, 3-осевой акселерометр с цифровым выходом.

· MP45DT02, ST MEMS датчик звука, всенаправленный цифровой микрофон.
CS43L22, аудио ЦАП со встроенным усилителем класса D.
четыре светодиода, LD3 (оранжевый), LD4 (зеленый), LD5 (красный) и LD6 (синий).

· две кнопки (пользовательская и reset)
порт USB OTG FS и коннектор micro-AB USB Client
штырьки для быстрого соединения с другими устройствами подключенные ко всем выводам LQFP100.

·

STM32F407VG6 МК, основан на базе arm-cortex-m4f ядра, в которое включен набор fpu и dsp инструкций для ускорения работы. Помимо ядра работающего на частоте 168 МГц и имеющего производительность 210 МИВС, имеется 7 канальная матричная шина AHB которая позволяет без простоя коммутировать независимо основные блоки МК. Помимо AHB помочь производительности призваны 16 канальный DMA и ART accelerator(tm) (который к сожалению в А версии не работает, чип этой версии и стоит на плате). 192 КБ статического ОЗУ и 1 МБ флеш памяти. Большое количество интерфейсов как последовательных (4 spi, 2 i2s, 2 i2c, 3 usart, 3 uart, 2 usb otg fs/hs, Ethernet MAC 10/100, sdio, 2 can 2.0b) так и параллельных (display 8080, camer 8 — 14 bit, gpio, FSMC). и много других периферийных блоков (таймеров, adc, dac и пр.).

 

 

Шинная матрица обеспечивает доступ от master к slave, обеспечивая параллельный доступ и эффективную работу, даже когда несколько высокоскоростных периферийных устройств работают одновременно. Оперативное ОЗУ объемом 64 КБ (память с привязкой к ядру) не является частью матрицы шины и может быть доступно только через ЦП. Эта архитектура показана на рисунке 1.

                                        Встроенный интерфейс флэш-памяти Интерфейс флэш-памяти управляет доступом I-кода процессора AHB и D-кода к флэш-памяти. Он реализует операции стирания и программирования флэш-памяти, а также механизмы защиты от чтения и записи.Интерфейс флэш-памяти ускоряет выполнение кода с помощью системы предварительной выборки команд и строк кэша.

                                         

Рис. 22   Встроенные модули ARM Cortex-M4



Поделиться:


Последнее изменение этой страницы: 2019-12-14; просмотров: 279; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.105.110 (0.011 с.)