Работаем с микроконтроллерами STM32F7. Часть 1. Системная периферия

Данная серия публикаций основана на материалах цикла STM32F7 Online Training от компании STMicroelectronics. В статьях представлено описание функциональных блоков и инструментов разработки для семейства микроконтроллеров STM32F7. Логически материал разбит на 4 главы, охватывающие тематику системной периферии, памяти, безопасности, аналоговой периферии, цифровой периферии, таймеров, экосистемы. Главы не связаны между собой, и читатель может ознакомиться с ними в произвольном порядке.

Подписаться на получение уведомлений о публикациях по микроконтроллерам ARM.

Микроконтроллеры семейства STM32F7 имеют целый ряд преимуществ:

  • комбинация высокопроизводительного процессорного ядра Cortex-M7 и мощного набора периферии STM32 обеспечивает широкий функционал и максимальное быстродействие;
  • повыводная совместимость с популярным семейством STM32F4 позволяет увеличить производительность существующих устройств с минимальным числом доработок аппаратной части;
  • производительность STM32F7 достигает 462 DMIPS и 1082 CoreMark при выполнении вычислений с плавающей точкой, что оказывается в два раза большим, чем у STM32F4;
  • сочетание производительности и высокой энергоэффективности. Для STM32F7 соотношение «производительность/потребление» составляет 6,5 CoreMark/мВт при напряжении питания 1,8 В, что позволяет использовать эти микроконтроллеры в приложениях со значительными ограничениями по уровню потребления;
  • наличие развитой экосистемы, объединяющей широкий модельный ряд микроконтроллеров, готовые решения, программные и аппаратные средства разработки и отладки.

Семейство STM32F7 является частью сегмента высокопроизводительных микроконтроллеров STM32. При создании STM32F7 инженеры STMicroelectronics использовали опыт и наработки, полученные при разработке более ранних высокопроизводительных семейств: STM32F2 и STM32F4 (рисунок 1).

Рис. 1. Высокопроизводительные семейства STM32

Рис. 1. Высокопроизводительные семейства STM32

Микроконтроллеры STM32F7 имеют повыводную совместимость с популярным семейством STM32F4, при этом они построены на новой платформе, обеспечивающей повышенную производительность периферии и расширенные возможности по управлению питанием (рисунок 2).

Рис. 2. Микроконтроллеры STM32F7 построены на новой платформе

Рис. 2. Микроконтроллеры STM32F7 построены на новой платформе

Микроконтроллеры STM32F7 имеют множество встроенных аппаратных инструментов, обеспечивающих безопасность и защиту (рисунок 3).

Рис. 3. STM32F7 – аппаратные инструменты безопасности и защиты

Рис. 3. STM32F7 – аппаратные инструменты безопасности и защиты

Семейство STM32F7, наравне с другими семействами, является неотъемлемой частью экосистемы микроконтроллеров STM32 (рисунок 4). Наличие развитой экосистемы с огромным количеством готовых решений, обилием аппаратных и программных средств разработки и отладки становится большим преимуществом STM32F7.

Рис. 4. Линейка поставок микроконтроллеров STM32

Рис. 4. Линейка поставок микроконтроллеров STM32

Обзор линеек STM32F7

Благодаря встроенному ускорителю ART Accelerator и L1-кэшу все представители семейства STM32F7 обеспечивают максимальную теоретически достижимую производительность ядра Cortex-M7 вне зависимости от того, исполняется код программы из встроенной Flash или из внешней памяти: 1082 CoreMark /462 DMIPS при частоте 216 МГц.

В настоящее время STMicroelectronics предлагает 10 линеек микроконтроллеров STM32F7. Они имеют одинаковую архитектуру, ядро и организацию памяти, но отличаются доступными корпусными исполнениями, объемом Flash и перечнем периферийных блоков (рисунок 5):

Рис. 5. Номенклатура микроконтроллеров STM32F7

Рис. 5. Номенклатура микроконтроллеров STM32F7

  • STM32F730 – бюджетная линейка с объемом Flash до 64 кбайт, ОЗУ 256 кбайт, кэш до 16 кбайт (I + D). Отличается самым скромным набором периферии среди всех STM32F7;
  • STM32F750 – бюджетная линейка с объемом Flash до 64 кбайт, ОЗУ 320 кбайт, кэш до 8 кбайт (I + D). В отличие от STM32F730, данная линейка имеет встроенный TFT-контроллер;
  • STM32F722/32 – базовые линейки с объемом Flash до 512 кбайт, ОЗУ 256 кбайт, кэш до 16 кбайт (I + D);
  • STM32F723/33 – базовые линейки с объемом Flash до 512 кбайт, ОЗУ 256 кбайт, кэш до 16 кбайт (I + D). В отличие от STM32F722/32, данные микроконтроллеры имеют встроенный USB HS PHY;
  • STM32F745 – младшая из линеек с расширенным набором периферии. Имеет объем Flash до 1 Мбайт, ОЗУ 320 кбайт, кэш до 8 кбайт (I + D). Кроме увеличенного объема Flash, линейка отличается присутствием ускорителя Chrom-ART и увеличенным числом CAN-контроллеров;
  • STM32F765 – линейка с увеличенным объемом Flash до 2 Мбайт, ОЗУ 512 кбайт, кэш 32 кбайт (I + D). В отличие от младших линеек, имеет блок вычислений с плавающей запятой двойной точности DP-FPU и встроенный фильтр для ΔΣ-АЦП (DFSDM);
  • STM32F746/56 – линейки, которые отличаются от STM32F745 наличием TFT-контроллера;
  • STM32F767/77 – линейки с максимальным объемом Flash до 2 Мбайт, ОЗУ 512 кбайт, кэшем 32 кбайт (I + D). Данные микроконтроллеры имеют борту DP-FPU, TFT-контроллер, JPEG-кодек и DF-SDM;
  • STM32F768/78 и STM32F769/79 – линейки с максимальным объемом Flash до 2 Мбайт, ОЗУ 512 кбайт, кэшем 32 кбайт (I + D). Отличаются наиболее богатым набором периферии, в том числе MIPI-DSI.

В качестве примера на рисунке 6 представлена блок-диаграмма STM32F745 – младшей из линеек с продвинутой периферией.

Рис. 6. Структура микроконтроллеров STM32F745

Рис. 6. Структура микроконтроллеров STM32F745

На рисунке 7 представлена блок-диаграмма линеек STM32F76x с наиболее развитой периферией. Перечислим состав набора периферийных блоков для STM32F76x:

Рис. 7. Структура микроконтроллеров STM32F76x. Оранжевым цветом выделены блоки, отсутствующие в младшей линейке STM32F745

Рис. 7. Структура микроконтроллеров STM32F76x. Оранжевым цветом выделены блоки, отсутствующие в младшей линейке STM32F745

  • до 168 портов ввода/вывода общего назначения;
  • контроллер внешней памяти FMC;
  • контроллер внешней памяти QuadSPI;
  • до трех 12-битных АЦП2,4 MSPS;
  • два 12-битных ЦАП;
  • часы реального времени RTC;
  • до двенадцати 16-битных таймеров, два из них – с ШИМ и комплементарными выходами для управления двигателями;
  • 16-битный таймер LPTIM, предназначенный для работы в режимах с пониженным потреблением;
  • два 32-битных таймера;
  • генератор случайных чисел RNG;
  • до четырех I²C;
  • до шести SPI;
  • до трех I²S;
  • до четырех USART и четырех UART;
  • USB OTG full-speed;
  • USB OTG high-speed с собственным DMA;
  • три CAN-контроллера;
  • два аудиоинтерфейса SAI;
  • SDMMC-контроллер;
  • 10/100 Ethernet MAC с собственным DMA;
  • 8/14-битный интерфейс цифровой камеры с пропускной способностью до 54 Мбит/с;
  • контроллер цифрового аудио SPDIFRX;
  • контроллер HDMI-CEC;
  • уникальный 96-битный идентификатор;
  • системная периферия: до 16 каналов DMA, оконный и независимый сторожевые таймеры, система тактирования с ФАПЧ и RC-генераторами, системный таймер.

Теперь, после общего знакомства, можно подробнее рассмотреть различные особенности и функциональные блоки STM32F7.

Процессорное ядро ARM Cortex-M7

Ядро ARM Cortex-M7 использует архитектуру ARMv7E-M и является представителем семейства процессорных ядер Cortex-M от компании ARM.

Отличительными чертами ARM Cortex-M7 являются:

  • гарвардская архитектура;
  • шестиступенчатый конвейер;
  • суперскалярная архитектура с двойной выборкой команд (dual-issued);
  • поддержка SIMD-инструкций;
  • модуль защиты памяти (MPU);
  • блок вычислений с плавающей запятой с одинарной или двойной точностью (FPU и DFPU).

По уровню производительности ARM Cortex-M7 оказывается гораздо ближе к цифровым сигнальным процессорам, чем ARM Cortex-M4. ARM Cortex-M7 может выполнять операции записи и чтения и параллельно с математическими операциями с нулевым числом пустых циклов. Ядро Cortex-M7 напрямую взаимодействует с памятью TCM (Tightly Coupled Memories) с минимальной задержкой, что гарантирует детерминированность исполнения кода (рисунок 8).

Рис. 8. Процессорное ядро ARM Cortex-M7 в микроконтроллерах STM32F7

Рис. 8. Процессорное ядро ARM Cortex-M7 в микроконтроллерах STM32F7

Микроконтроллеры STM32F7, построенные на базе ядра Cortex-M7, обеспечивают высокую производительность и отличную энергоэффективность при работе как в активном режиме, так и в режимах пониженного потребления.

В Cortex-M7 используется шестиуровневый конвейер, помогающий обеспечить высокую эффективность исполнения кода. При выполнении ряда условий конвейер позволяет выполнять две инструкции параллельно. Производительность микроконтроллеров с ядром Cortex-M7 выше, чем у микроконтроллеров с ядром Cortex-M4, во многом это стало возможным благодаря трем блокам: блоку предвыборки (prefetch unit, PFU), блоку обработки данных (data processing unit, DPU) и блоку выборки-хранения (load-store unit, LSU).

Каждый такт PFU передает одну 64-битную инструкцию в DPU. В состав PFU входят буфер, состоящий из четырех ячеек (каждая объемом 64 бита) и блок предсказания ветвлений BTAC (Branch Target Address Cache).

Блок DPU содержит несколько блоков:

  • два арифметико-логических устройства (ALU). Один из АЛУ способен выполнять SIMD-инструкции;
  • блок умножения с накоплением (MAC), который обеспечивает возможность выполнения одной операции умножения с накоплением за такт;
  • блок вычислений с плавающей точкой с одинарной (SFPU) или двойной точностью (DFPU).

Когда инструкция попадает в DPU, она делится на микрооперации в соответствии с требуемыми вычислительными блоками.

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

Устройство выборки-хранения LSU обеспечивает два 32-битных канала для загрузки или один 64-битный канал для хранения.

В отличие от Cortex-M4, Cortex-M7 может одновременно выполнять выборку команд и обработку данных в MAC.

Современные компиляторы скрывают от пользователя всю сложность процессорного ядра и оптимизируют код с учетом особенностей архитектуры процессора.

Еще одной причиной высокого быстродействия STM32F7 является TCM (Tightly Coupled Memories) – память, которая подключается к процессорному ядру не с помощью внешней шины, а напрямую. Это позволяет отказаться от арбитража и, следовательно, устранить потери времени. В Cortex-M7 есть два типа TCM: ITCM – TCM-память для инструкций и DTCM – TCM-память для данных.

ITCM используется для хранения наиболее важных участков кода, например, таблицы векторов, обработчиков прерываний, а также часто выполняемых функций. Шина ITCM имеет разрядность 64 бита, чтобы соответствовать пропускной способности ядра. В микроконтроллерах STM32F7 под ITCM-память выделено 16 кбайт. Кроме того, доступ к обычной Flash через шину ITCM также возможен благодаря дополнительному ускорителю ART Flash Accelerator (ART).

В DTCM обычно помещаются часто используемые данные, стек, коэффициенты для цифровой обработки сигналов и так далее. Для связи ядра с DTCM используются две 32-битные шины. Объем DTCM зависит от конкретной модели STM32F7 и достигает 128 кбайт.

Микроконтроллеры STM32F7 обеспечивают минимальную задержку обработки прерывания длительностью всего 12 тактов, если код выполняется из ITCM, а данные хранятся в DTCM.

Для доступа периферийных блоков к ITCM и DTCM используется AHBS – 32-битная шина AMBA3 AHB-Lite Slave Interface.

Рассмотрим шинную организацию STM32F7. Для взаимодействия с ядром Cortex-M7 используется шина AXI. 64-битный интерфейс AXI обеспечивает обмен данными между процессором и внутренней и внешней памятью. AXI может использоваться для:

  • выборки инструкций;
  • заполнения и очистка кэша;
  • доступа к обычным данным;
  • доступа к периферийным блокам.

Для взаимодействия AXI с шинной матрицей AHB используется мост AXI-to-Multi-AHB (рисунок 9). Мост обеспечивает согласование работы с внешними блоками с учетом необходимых задержек. При этом сама шина AXI (как и AXI-to-Multi-AHB) работает на частоте ядра. Это позволяет повысить производительность даже при обмене с относительно медленной периферией.

Рис. 9. Шинная архитектура в микроконтроллерах STM32F7

Рис. 9. Шинная архитектура в микроконтроллерах STM32F7

Для эффективной работы с памятью в ядре Cortex-M7 кроме AXI присутствует встроенная кэш-память (рисунок 8). Если кэширование разрешено, то данные обрабатываются специальным контроллером (за исключением данных от TCM и AHBP). В зависимости от модели STM32F7, объем кэша данных и команд составляет 4…16 кбайт. L1-кэш обеспечивает быстрый доступ к наиболее востребованному коду и данным, хранящимся в медленнодействующей внешней памяти.

В Cortex-M7 присутствует модуль защиты памяти (MPU), который конфигурирует работу кэш-контроллеров и AXI-интерфейса, устанавливает правила их работы и разделяет процессы.

В микроконтроллерах STM32F7 модуль MPU поддерживает работу с восемью независимыми областями памяти с индивидуально настраиваемыми атрибутами (разрешение или запрет записи/чтения, разрешение или запрет доступа, разрешение или запрет исполнения кода), а также определяет правила использования кэша.

Таким образом, микроконтроллеры STM32F7 обеспечивают отличную производительность благодаря нескольким ключевым преимуществам процессорного ядра Cortex-M7.

Для получения подробной информации следует обратиться к следующей документации:

Матрица внутренних соединений Interconnect Matrix

Матрица внутренних соединений (Interconnect Matrix) в микроконтроллерах STM32 обеспечивает прямое взаимодействие между периферийными блоками. При этом отсутствует необходимость в какой-либо обработке со стороны процессорного ядра. Такое решение дает следующие преимущества:

  • увеличение временной детерминированности работы микроконтроллера;
  • уменьшение уровня потребления;
  • сокращение задержки при обработке событий по сравнению с исполнением программного кода;
  • снижение загрузки процессорного ядра;
  • возможность организации аппаратных функций обработки различных событий;
  • повышение уровня безопасности;
  • возможность взаимодействия периферийных блоков между собой даже в режимах пониженного потребления без вмешательства процессорного ядра.

Периферийные устройства могут выступать в роли как источника, так и приемника сигналов и данных (рисунок 10):

Рис. 10. Матрица внутренних соединений в STM32F7

Рис. 10. Матрица внутренних соединений в STM32F7

  • источники: таймеры TIMx и RTC, аналоговые блоки (ADCx, DACx, Vrefint, VBAT, датчик температуры), тактовые генераторы (HSI, LSI, HSE, LSE), контроллер прерываний EXTI, USB, фильтр DFSDM, системные ошибки (CSS, ECC, Lock-up);
  • приемники: таймеры TIMx и LPTIM, аналоговые блоки (ADCx, DACx), внешние прерывания EXTI, фильтр DFSDM, контроллер прямого доступа к памяти DMA.

Все связи между приемниками и источниками сохраняются при работе в активном режиме (Run Mode) и в спящем режиме (Sleep Mode). Более того, некоторые связи сохраняются в режиме Stop Mode: между RTC и LPTIM1, между GPIO и LPTIM1, между EXTI и периферией (Ethernet MAC, USB, LPTIM, MDIOS, RTC, PVD).

Рассмотрим частные случаи взаимодействия периферии без участия процессора на примере таймеров:

  • запуск таймера TIM2 по сигналу от таймера TIM3 без задержки (идеальная синхронизация);
  • деление тактового сигнала для TIM2 с помощью таймера TIM3;
  • сброс TIM2 по сигналу от таймера TIM

Кроме того, таймеры могут работать совместно с другими блоками: пример — запуск таймера при начале приема пакета по USB, по прерыванию от RTC и так далее.

Еще один подробный пример использования матрицы внутренних соединений для управления трехфазным инвертором представлен на рисунке 11. В данном случае таймер TIM1 генерирует трехфазный ШИМ-сигнал. Настройка коэффициента заполнения происходит с помощью DMA. Запуск и синхронизация выполняется таймером TIM3. Защита от перегрузки по току осуществляется внешним компаратором, для которого пороговое напряжение задает встроенный ЦАП (DAC). Выходное напряжение DAC также изменятся с помощью DMA. За измерение фазы напряжения и величины тока отвечает АЦП (ADC), измерения которого синхронизируются с четвертым каналом TIM1. Измерение других токов и напряжений осуществляется также ADC, но синхронизация по этим каналам производится от внешних источников, при этом используются внешние прерывания EXTI от портов ввода-вывода GPIO.

Рис. 11. Пример использования матрицы внутренних соединений для управления трехфазным инвертором

Рис. 11. Пример использования матрицы внутренних соединений для управления трехфазным инвертором

Важно отметить, что механизм, представленный в примере, функционирует полностью автоматически, без вмешательства процессорного ядра. При этом процессор может решать другие, более важные задачи, например, обрабатывать сигналы напряжения/тока, получаемые от АЦП, и выполнять алгоритм управления.

Чаще всего матрица внутренних соединений используется для таких случаев как:

  • запуск ЦАП, АЦП или DFSDM по сигналу от таймеров или внешних прерываний;
  • запуск таймеров по сигналу от АЦП или DFSDM, когда происходит превышение уровня входного сигнала выше заданного порогового значения;
  • передача данных с помощью DMA на DAC для формирования выходного сигнала управления;
  • калибровка HSI/LSI с помощью внешнего генератора LSE и встроенного таймера TIMx;
  • использование режимов Dual-ADC или Triple-ADC, в которых сигнал от ADC1 запускает преобразование ADC2 и ADC3;
  • автоматический мониторинг напряжения аккумулятора VBAT или температуры;
  • взаимодействие между DAC и ADC;
  • защита силовых ключей, управляемых таймерами. В данном случае таймеры могут выключаться при возникновении системных ошибок (System Error).

При необходимости использования матрицы внутренних соединений следует учитывать следующие особенности и рекомендации:

  • оба периферийных блока (источник и приемник) должны быть активны, а их входы и выходы соответствующим образом настроены;
  • некоторые периферийные блоки делят общие порты ввода-вывода. В случае необходимости следует отключать альтернативные функции, чтобы избежать конфликтов;
  • блоки аналоговой периферии, например, DAC, имеют приоритет использования портов ввода-вывода.

Для ознакомления со всеми особенностями матрицы соединений в STM32F7 следует обратиться к руководству “AN4676. STM32F7 Series peripheral interconnections”.

Системный контролер SYSCFG

Системный контроллер SYSCFG (System Configuration Controller) в STM32F7 выполняет такие функции как переадресация областей памяти; выбор интерфейса Ethernet PHY; подключение линий прерываний EXTI к портам ввода-вывода GPIO; управление настройкой портов ввода-вывода с повышенной нагрузочной способностью до 20 мА для I²C Fast-mode Plus, настройка параметров устройств Class B и другие.

Бит SWP_FB регистра SYSCFG_MEMRMP позволяет изменить адресацию Flash и поменять местами банки памяти Bank1 и Bank2. Если SWP_FB = 0, то адресация банка Bank1 начинается с 0x0800 0000, а адресация Bank2 — с 0x0810 0000 (рисунок 12). Если же SWP_FB = 1, то банки меняются местами: адресация Bank1 начинается с 0x0810 0000, а адресация Bank2 с 0x0800 0000.

Рис. 12. Назначение адресации Flash с помощью бита SWP_FB

Рис. 12. Назначение адресации Flash с помощью бита SWP_FB

Вне зависимости от выбранного варианта адресации у пользователей остается возможность выполнять загрузку как из Bank1, так и из Bank2. Бит MEM_BOOT из того же регистра совместно с конфигурационными регистрами BOOT_ADD0 и BOOT_ADD1 позволяет задать адрес загрузчика.

Бит SWP_FMC из регистра SYSCFG_MEMRMP определяет адресацию банков ОЗУ и NOR/SRAM (рисунок 13). Если SWP_FMC = 0, то SDRAM Bank1 начинается с 0xC000 0000, SDRAM Bank1 начинается с 0xD000 0000, NOR/SRAM начинается с 0x6000 0000. Если SWP_FMC = 1, то SDRAM Bank1 начинается с 0x6000 0000, SDRAM Bank1 начинается с 0x7000 0000, NOR/SRAM начинается с 0xC000 0000.

Рис. 13. Назначение адресации ОЗУ с помощью бита SWP_FMC

Рис. 13. Назначение адресации ОЗУ с помощью бита SWP_FMC

В соответствии со стандартом безопасности IEC 60335-1 устройства делятся на три класса: Class A, B и C. Устройства Class C отвечают самым жестким требованиям безопасности, в них должен быть реализован сложный комплекс программно-аппаратных решений, таких, например, как зеркальное дублирование процессорных ядер или использование памяти с контролем данных. В устройствах Class B функции безопасности в большей степени ложатся на программное обеспечение. Для STM32F7 предлагается широкий выбор ПО для достижения требований Class B. Кроме того, в этих микроконтроллерах есть и некоторые аппаратные функции, например, прерывание от PVD и от CSS может быть подключено ко входу TIM1/8 Break.

Регистры SYSCFG_EXTICR1/2/3/4 отвечают за подключение контроллера внешних асинхронных прерываний к выводам GPIO.

SYSCFG отвечает за активацию повышенной нагрузочной способности портов GPIO (PB6, PB7, PB8, PB9) до 20 мА для I²C Fast-mode Plus. При этом не обязательно, чтобы эти порты использовались для I²C, они могут применяться, например, для питания светодиодов.

Состояние вывода BOOT микроконтроллеров STM32F7 определяет режим загрузки. После выполнения сброса состояние BOOT считывается по четвертому такту сигнала SYSCLK. Аналогичная операция выполняется после выхода из режима ожидания Standby Mode. После начальной стартовой задержки и до сброса процессора происходит выбор адреса загрузчика. Если BOOT = 0, то адрес определяется содержимым BOOT_ADD0[15:0], если BOOT = 1, то адрес определяется содержимым BOOT_ADD1[15:0]. Загрузчик может иметь адрес из диапазона 0x0000 0000…0x3fff ffff, то есть находиться во Flash (ITCM или AXIM), в ОЗУ (ITCM, DTCM, AXIM), в области системного загрузчика. Значения BOOT_ ADD0[15:0] и BOOT_ADD1[15:0] могут быть изменены после сброса системы, тогда изменения вступят в силу после следующего сброса. Если по каким-то причинам в этих регистрах указаны недопустимые адреса, тогда будут использоваться адреса, заданные по умолчанию: BOOT_ ADD0[15:0] = 0x0020 0000 (ITCM-FLASH) и BOOT_ADD1[15:0] = 0x0000 0000 (ITCM_RAM).

Возможен режим с двойной загрузкой Dual Boot (nDBANK = 0 и nDBOOT = 0). При этом приоритет имеет загрузка из Flash, а затем — из ОЗУ. Если активирована защита памяти Level 2, то загрузка возможна только из Flash.

Встроенный загрузчик позволяет программировать Flash с помощью различных интерфейсов:

  • USART1;
  • USART3;
  • CAN2;
  • USB OTG FS;
  • I²C1;
  • I²C2;
  • SPI1;

Для ознакомления с особенностями программирования STM32 следует обратиться к документации:

Система тактирования и сброса RCC

Контроллер RCC (Reset and Clock Controller) служит для управления системой тактирования и сброса. Для организации тактирования могут использоваться различные источники.

HSI – встроенный высокочастотный RC-генератор с частотой 16 МГц и точностью 1%. Данный генератор активируется по умолчанию при сбросе и при выходе из режима Stop. Кроме того, HSI является резервным генератором на случай возникновения проблем с внешним резонатором (HSE).

LSI – встроенный низкочастотный RC-генератор с частотой 32 кГц.

HSE – внешний высокочастотный кварцевый/керамический генератор с частотой 4…26 МГц. Используется совместно со встроенной системой защиты (Clock Security System, CSS). В случае возникновения проблем с внешним резонатором CSS генерирует прерывание и формирует сигнал BREAK, переводя систему в безопасное состояние.

Вместо внешнего кварцевого резонатора может использоваться генератор с частотой до 50 МГц.

LSE – внешний часовой низкочастотный RC-генератор с частотой 32768 Гц. Используется в первую очередь для тактирования RTC, но представляет большой интерес с точки зрения обеспечения малого значения потребления, так как может быть использован для тактирования некоторых периферийных блоков в различных спящих режимах (UART/USART, LPTIM, HDMI-CEC).

В дополнение к источникам тактового сигнала в STM32F7 присутствуют три схемы фазовой автоподстройки частоты: системный ФАПЧ (PLL), ФАПЧ для SAI и некоторых других блоков (PLLSAI), ФАПЧ для I²S и некоторых других блоков (PLLI2S). В качестве входного сигнала для всех ФАПЧ используется HSI или HSE. В свою очередь выходные сигналы PLL необходимы для тактирования всей системы и периферии.

В качестве основного источника тактового сигнала системы (SYSCLK) может выступать HSE, HSI или PLL. Максимальная частота для STM32F7 достигает 216 МГц. Максимальные рабочие частоты периферийных шин AHB (HCLK), APB1 (PCLK1) и APB2 (PCLK2) составляют 216, 54 и 108 МГц соответственно. Предельная рабочая частота системы зависит от выбора выходного напряжения встроенного стабилизатора:

  • Scale 1 (1,08…1,2 В) – до 180 МГц и до 216 МГц при активации функции Over-drive;
  • Scale 2 (1,2…1,32 В) – до 168 МГц и до 180 МГц при активации функции Over-drive;
  • Scale 3 (1,26…1,4 В) – до 144 МГц.

Большая часть периферийных блоков тактируется от сигналов HCLK, PCLK1 или PCLK2. Однако есть исключения:

  • тактирование USB OTG FS, SDMMCs и RNG осуществляется от PLL, PLLSAI;
  • тактирование U(S)ART осуществляется от SYSCLK, HSI, LSE, PCLK1 или PCLK2;
  • тактирование I²C осуществляется от SYSCLK, HSI, PCLK1;
  • тактирование I2S осуществляется от собственного ФАПЧ – PLLI2S или от внешнего сигнала, подаваемого на вход I2S_CKIN;
  • тактирование SAI1 и SAI2 осуществляется от PLLSAI, PLLI2S, HSI/HSE или от внешнего сигнала, подаваемого на вход I2S_CKIN;
  • тактирование LTDC осуществляется от PLLSAI;
  • тактирование LPTIM1 осуществляется от LSI, LSE, HSI, PCLK1 или от внешнего сигнала, подаваемого на вход LPTIM1_IN1;
  • тактирование USB OTG HS (60 МГц) осуществляется от внешней микросхемы PHY;
  • тактирование Ethernet MAC (TX, RX и RMII) осуществляется от внешней микросхемы PHY;
  • тактирование SPDIFRX: осуществляется от PLLI2SP;
  • тактирование HDMI-CEC осуществляется от LSE или HSI (деленного на 488);
  • тактирование RTC осуществляется от LSE, LSI, HSE (деленного на 32);
  • тактирование IWDG осуществляется только от LSI;
  • тактирование DFSDM1 осуществляется от PCLK2 или SYSCLK (ядро) и тем же сигналом, что и SAI ½ (аудио);
  • тактирование DSI HOST осуществляется от DSI PHY или от PLL.

У большинства периферийных блоков есть собственная система делителей тактового сигнала. Более того, тактирование каждого периферийного блока может быть независимо включено или выключено. При отключении тактирования содержимое регистров периферийного блока не может быть считано или изменено. По умолчанию (после сброса) тактирование всех блоков, за исключением RTC и DTCMRAM, отключено. Гибкая система тактирования помогает найти оптимальное соотношение между производительностью, потреблением и функциональностью.

Тактовые сигналы, генерируемые в STM32F7, могут быть выведены на выходы микроконтроллера. Речь идет о HSI, HSE, LSE, SYSCLK, PLLCLK и PLLI2S.

Контроллер RCC может сообщать о готовности тактовых сигналов с помощью флагов и прерываний.

Помимо тактирования, второй важной функцией RCC становится организация сброса (reset). Диаграмма формирования сигнала системного сброса представлена на рисунке 14. Все внутренние источники сброса подключены к выводу NRST. Таким образом, сигнал сброса, генерируемый внутри микроконтроллера, может быть использован для сброса других микросхем, расположенных на той же печатной плате. Стоит отметить, что STM32F7 не требуют внешней системы сброса благодаря наличию встроенного фильтра, встроенной подтяжки и специализированных блоков (POR/PDR и BOR), которые гарантируют сброс микроконтроллера, если напряжение питания VDD опустится ниже определенного порогового значения.

Рис. 14. Диаграмма формирования сигнала системного сброса

Рис. 14. Диаграмма формирования сигнала системного сброса

При выполнении системного сброса происходит сброс всех регистров, за исключением некоторых регистров самого RCC-контроллера. Источниками системного сброса могут стать:

  • внешний сигнал, подаваемый на вывод NRST;
  • сигнал от оконного сторожевого таймера WWDG;
  • сигнал от независимого сторожевого таймера IWDG;
  • сигнал программного сброса от контролера прерываний NVIC;
  • системный сигнал при входе в режим Stop/Standby (при настройке опциональных битов управления);
  • сигнал от схемы POR/PDR при включении и выключении питания (будет подробнее рассмотрен в разделе, посвященном PWR);
  • сигнал от схемы BOR (Brown-out reset) при включении и выключении питания (будет подробнее рассмотрен в разделе, посвященном PWR);
  • системный сигнал при выходе из режима Standby.

Последние три сигнала стоит выделить отдельно, так как они относятся к случаю сброса по питанию. При этом происходит сброс всех регистров, за исключением регистров, относящихся к дежурному домену Backup, который питается от VBAT.

Сброс регистров дежурного домена Backup (RTC, Backup-регистров и регистров RCC-контроллера, отвечающих за управление доменом Backup) происходит при установке бита BDRST и при полном включении питания (VDD и VBAT).

Для получения подробной информации о работе с резонаторами следует обратиться к материалу “AN2867 Application note Oscillator design guide for STM8AF/AL/S and STM32 microcontrollers”.

Контроллер прерываний NVIC

Контроллер прерываний NVIC (Nested Vectored Interrupt Controller) в STM32F7 обеспечивает выполнение 110 векторных прерываний с минимальной задержкой. Для каждого из них может быть установлен 16-уровневый приоритет.

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

При возникновении прерывания процессор сохраняет контекст программы и передает управление обработчику прерывания. При завершении обработки происходит восстановление контекста и возврат к исполнению основной программы (рисунок 15).

Рис. 15. Обработка прерывания и возврат к выполнению исходной программы

Рис. 15. Обработка прерывания и возврат к выполнению исходной программы

Выполнение прерываний происходит с учетом приоритетов, при этом возможно возникновение нескольких сценариев (рисунок 16):

Рис. 16. Варианты обработки прерываний

Рис. 16. Варианты обработки прерываний

  • если выполняется обработчик прерываний и возникает еще одно прерывание с более высоким приоритетом, то следует переход к обработке прерывания с более высоким приоритетом. Когда обработка закончена, происходит возврат к обработке прерывания с низким приоритетом;
  • если выполняется обработчик прерываний и возникает еще одно прерывание с более низким приоритетом, то обработка исходного прерывания не прекращается. Когда обработка закончена, система не выполняет восстановление контекста базовой программы, а передает управление обработчику прерывания с низким приоритетом;
  • если в процессе сохранения контекста основной программы перед выполнением обработчика прерывания возникает еще одно прерывание с более высоким приоритетом, то вместо исходного прерывания будет сразу выполнена обработка прерывания с более высоким приоритетом.

При возникновении прерывания происходит установка соответствующего флага. Если прерывание не разрешено, то выполнение обработчика происходить не будет, однако флаг все равно будет установлен. При этом, если разрешить прерывание при установленном флаге, сразу будет выполнен обработчик.

При изменении адреса таблицы векторов прерываний следует убедиться в корректной настройке векторов и обработчиков прерываний (в том числе и обработчика Fault handler), а также регистров VTOR.

Для получения дополнительной информации следует ознакомиться с материалом “PM0253 Programming manual STM32F7 Series and STM32H7 Series Cortex®-M7 processor programming manual”.

Контроллер прямого доступа к памяти DMA

Контроллер прямого доступа к памяти DMA (Direct Memory Access) используется для обмена данными без участия процессора. В STM32F7 присутствует два контролера DMA (рисунок 17). Оба контроллера имеют возможность гибкой настройки, систему программных и аппаратных приоритетов и различные режимы пересылки данных.

Рис. 17. Контроллеры DMA в STM32F7

Рис. 17. Контроллеры DMA в STM32F7

В STM32F7 реализовано 16 DMA-каналов (DMA1 + DMA2). Каналы индивидуально настраиваются для пересылки данных либо между памятью и периферией, либо между памятью и памятью. В любой момент времени может быть активен только один канал DMA, поэтому для осуществления арбитража каждый канал имеет собственный программно задаваемый приоритет. В случае равенства программных приоритетов преимущество получает канал с более высоким аппаратным приоритетом.

Каждый канал позволяет индивидуально задавать формат данных и шаг изменения адреса как для источника, так и для приемника:

  • независимое задание размера данных: 8/16/32 бита;
  • независимое задание адреса для источника и приемника;
  • независимое задание шага изменения адреса источника и приемника;
  • программируемый объем пересылаемых данных (до 65535 операций пересылки);
  • постоянный поток данных, возможный при использовании режима циклической пересылки данных (Circular buffer mode). При этом перезагрузка адресов в памяти приемника и источника происходит автоматически.

В STM32F7 возможна организация пересылки данных следующих видов:

  • «память-память», при этом происходит копирование данных из одной области памяти в другую без участия процессорного ядра;
  • «периферия-память» или «память-периферия». В данном случае данные пересылаются из регистров периферийных блоков, например, результат измерения АЦП – в память. Окончание процесса пересылки данных сопровождается установкой соответствующего флага.

Благодаря четырехуровнему FIFO-буферу контроллеры DMA могут самостоятельно конвертировать формат данных, например, из 8/16-битного в 16/32-битный и обратно. Пользователь может задать пороговое значение заполнения буфера для начала отправки данных (1/4, 2/4, 3/4 или 100%). Это позволяет значительно снизить нагрузку на процессор и уменьшить число обращений к шине AHB.

Состояние процесса по пересылке контролируется с помощью флагов:

  • Half Transfer – пересылка половины данных завершена;
  • Transfer complete – пересылка данных завершена;
  • Transfer error – ошибка на шине при пересылке данных;
  • FIFO error – ошибка, сообщающая о нарушении настройки буфера или об ошибках при его работе;
  • Direct mode error – ошибка, сообщающая о том, что новые данные были посланы еще до окончания пересылки предыдущих.

В случае возникновения ошибки система автоматически прервет пересылку, однако это никак не повлияет на работу остальных каналов DMA.

Контроллеры DMA могут работать в режимах Run и Sleep. При этом DMA способны пробуждать ядро из режима Sleep. В режиме Stop контроллеры DMA – неактивны, но содержимое их конфигурационных регистров сохранятся. В режиме Standby контроллеры DMA – отключены. После пробуждения из режима Standby контроллеры DMA необходимо инициализировать заново.

Для получения подробной информации о контроллерах DMA обратитесь к руководству “AN4031 Application note Using the STM32F2, STM32F4 and STM32F7 Series DMA controller”.

Контроллер прерываний EXTI

Контроллер прерываний EXTI (Extended interrupts and events controller) служит для генерации прерываний и событий от внешних и внутренних источников.

В микроконтроллерах STM32F7 присутствуют 25 входных линий EXTI:

  • 16 линий для внешних прерываний от портов ввода-вывода (GPIO);
  • 9 линий для внутренних источников прерываний (RTC, LPTIM, PVD и других).

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

Рис. 18. Структура расширенного контроллера прерываний EXTI

Рис. 18. Структура расширенного контроллера прерываний EXTI

Линии EXTI могут использоваться для пробуждения процессорного ядра из спящих режимов Sleep и Stop по сигналам от периферийных блоков:

  • портов ввода-вывода (GPIO);
  • детектора напряжения PVD;
  • часов реального времени RTC;
  • таймера LPTIM;
  • USB OTG FS;
  • USB OTG HS;
  • Ethernet;

На рисунке 19 представлен процесс генерации прерывания на примере обработки сигнала, поступающего на вывод Port B (GPIO). Как видим, для работы с прерыванием потребуется настройка четырех блоков:

Рис. 19. Пример генерации прерывания по сигналу от порта ввода-вывода

Рис. 19. Пример генерации прерывания по сигналу от порта ввода-вывода

  • порт ввода-вывода должен быть настроен на вход;
  • канал от порта ввода-вывода должен быть подключен к контроллеру EXTI (через мультиплексор);
  • пользователь должен определить работу детектора фронта: по фронту или по срезу;
  • прерывание должно быть разрешено контролером прерываний NVIC.

Контроллер питания PWR

Система питания STM32F7 имеет несколько ключевых особенностей:

  • независимое тактирование периферийных блоков, что позволяет эффективно управлять динамическим потреблением, достигая значения 425 мкА/МГц при выполнении кода из Flash;
  • использование нескольких напряжений питания, что также обеспечивает снижение потребления;
  • наличие независимого домена VBAT с возможностью питания от внешней батареи.

Для питания STM32F7 необходимо несколько внешних источников (рисунок 20).

Рис. 20. Система питания STM32F7

Рис. 20. Система питания STM32F7

открыть картинку в полном формате

Основным источником питания для STM32F7 является VDD. Он используется для питания большинства портов ввода-вывода, логики пробуждения и независимого сторожевого таймера. Кроме того, напряжение VDD подается на встроенные преобразователи, формирующие напряжение VCORE. В свою очередь VCORE используется для питания большей части цифровой периферии и ОЗУ. Питание Flash осуществляется от VCORE и VDD.

Для обеспечения высокой энергоэффективности в состав STM32F7 входит два линейных регулятора напряжения: основной (Main regulator) и вспомогательный (Low-power regulator). Основной регулятор используется в режимах Run, Sleep, Stop. Его выходное напряжение (VCORE) может быть запрограммировано пользователем:

  • Scale 1: 1,08…1,2 В,
  • Scale 2: 1,2…1,32 В,
  • Scale 3: 1,26…1,4 В.

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

Вспомогательный стабилизатор активизируется только в режиме Stop. Он необходим для сохранения контекста и содержимого ОЗУ. В режиме Standby оба регулятора отключаются.

Диапазон напряжений VDD составляет 1,7…3,6 В. Однако стоит учитывать, что нормальная работа при напряжении 1,7 В гарантируется при отключенной схеме внутреннего сброса и в диапазоне рабочих температур 0…70°С.

Выводы VCAP1 и VCAP2 используются для подключения выходных конденсаторов встроенных регуляторов. Если же регуляторы не используются (Regulator bypass mode), тогда на эти выводы подается напряжение VCORE. Включение и выключение регулятора возможно только в микроконтроллерах, имеющих вывод управления BYPASS_REG.

Кроме VDD для питания микроконтроллеров STM32F7 также используются и другие источники:

  • VDDA – питание аналоговой периферии, ФАПЧ (PLL) и блока сброса. Рабочий диапазон VDDA составляет 1,8…3,6 В. Величина напряжения VDDA оказывает влияние на производительность АЦП. Для обеспечения максимальной производительности напряжение VDDA должно превышать 2,4 В. Домены VDD и VDDA могут использовать один источник питания. Вывод VREF+ используется для подключения внешнего источника опорного напряжения для АЦП и ЦАП;
  • VDDUSB – питание 3,0…3,6 В для USB-трансивера и четырех портов ввода-вывода: PA11, PA12, PB14 и PB15;
  • VDDSDMMC – питание 1,8…3,6 В для портов ввода-вывода PG9…PG12 и PD6…PD7, используемых для работы с SD-картами. Выводы для подключения VDDSDMMC есть только в некоторых микроконтроллерах STM32F7 с числом выводов не менее 144;
  • VDDDSI – питание 1,7…3,6 В для портов ввода-вывода, относящихся к DSI. Вывод VCAPDSI используется для подключения выходных конденсаторов встроенного понижающего преобразователя 1,2 В, питающего блок DSI. Вход VVDD12DSI необходим для питания 1,2 В встроенного MIPI DSI РНY. Выводы для подключения VDDDSI есть только в некоторых микроконтроллерах STM32F7;
  • VBAT – питание отдельного дежурного домена от внешней батареи с напряжением более 1,65 В. В состав домена входят: RTC, 128 байт дежурных регистров, 4 кбайт ОЗУ, LSE, порты PC13…PC15 и PI Если основное питание VDD отключается, то при наличии дежурной батарейки работа перечисленной периферии продолжается и содержимое памяти сохраняется.

Система питания STM32F7 обеспечивает сброс микроконтроллера с помощью блоков POR/PDR и BOR.

Схема сброса POR/PDR разрешает работу микроконтроллера только в том случае, если напряжение питания VDD превышает пороговое значение 1,8 В (Power On Reset, POR), как показано на рисунке 21. Если напряжение оказывается ниже 1,8 В, то контроллер находится в принудительном состоянии RESET (Power Down Reset, PDR). Между напряжением включения POR и выключения PDR есть гистерезис 40 мВ. Благодаря наличию POR/PDR для контроля напряжений питания VDD и VDDA не требуются внешние схемы сброса.

Рис. 21. Принцип работы схем сброса POR/PDR в STM32F7

Рис. 21. Принцип работы схем сброса POR/PDR в STM32F7

Стоит отметить, что сразу после достижения уровня напряжения 1,8 В сигнал сброса удерживается в течение некоторого времени, необходимого для обеспечения гарантированного стабильного запуска.

Работу схемы PDR можно запретить, подключив вывод PDR_ON к VSS. При этом появляется возможность использования напряжения питания вплоть до 1,7 В. Однако разработчику следует позаботиться об использовании внешней схемы сброса.

BOR (Brown Out Reset) – еще один встроенный блок для формирования сброса по питанию. В отличие от POR/PDR, схема BOR является программируемой, то есть уровень сброса может задаваться пользователем с помощью опциональных битов. Существует четыре режима работы BOR:

  • BOR OFF – схема неактивна;
  • BOR Level 3 – разрешение работы микроконтроллера при напряжении VDD более VBOR3;
  • BOR Level 2 – разрешение работы микроконтроллера при напряжении VDD более VBOR2;
  • BOR Level 1 – разрешение работы микроконтроллера при напряжении VDD более VBOR

Гистерезис на включение и выключение BOR составляет 100 мВ, в остальном работа схемы аналогична работе POR/PDR (рисунок 21). Подробную информацию о значениях напряжений можно получить в документации.

Дополнительный контроль напряжения питания VDD осуществляется с помощью программируемого детектора напряжения PVD (Programmable Voltage Detector). PVD сравнивает уровень напряжения VDD с заданным пороговым значением и формирует прерывание, когда напряжение оказывается выше или ниже этого значения. Пороговое значение программируется пользователем в диапазоне 2,0…2,9 В с шагом 100 мВ. Сигнал прерывания подключен к EXTI Line 16. Этот же сигнал может быть использован для перевода выходов таймеров Timer 1 и Timer 8 в безопасное состояние.

Рассмотрим основные режимы работы STM32F7.

Run Mode – активный режим работы. В этом режиме производительность ядра зависит от выбранного напряжения питания (VCORE):

  • Scale 1 (1,08…1,2 В) – до 180 МГц и до 216 МГц при активации функции Over-drive;
  • Scale 2 (1,2…1,32 В) – до 168 МГц и до 180 МГц при активации функции Over-drive;
  • Scale 3 (1,26…1,4 В) – до 144 МГц.

Sleep mode – спящий режим, в котором процессорное ядро выключено, а периферия остается активной (при необходимости может быть отключена индивидуально). Для перехода в режим Sleep используются команды WFI/WFE. С помощью бита SLEEPNEXTIT переход в спящий режим может происходить сразу или после выполнения обработки всех прерываний.

Stop mode – режим, в котором содержимое ОЗУ и регистров сохраняется, но большая часть периферии и источников тактирования отключена. Некоторые периферийные блоки (RTC, LPTIM и другие) и низкочастотные источники тактирования (LSE и LSI) остаются активными.

Для пробуждения из режима Stop могут использоваться прерывания от EXTI и от бодрствующей периферии. Время пробуждения зависит от конфигурации системы питания и Flash и составляет 15…120 мкс. После возвращения в активный режим для тактирования по умолчанию используется встроенный высокочастотный генератор HSI.

Standby mode – режим ожидания, в котором отключаются практически все блоки микроконтроллера (ядро, память, встроенные стабилизаторы и так далее) за исключением тех, что относятся к домену VBAT. Шесть портов ввода-вывода могут быть настроены для пробуждения микроконтроллера, остальные порты переводятся в высокоимпедансное состояние. Схема BOR остается активной для контроля напряжения питания и выполнения сброса. После генерации сброса на пробуждение требуется 313 мкс.

Сравнение уровней потребления STM32F7 в различных режимах работы представлено в таблице 1.

Таблица 1. Потребление STM32F7 в различных режимах

Режим STM32F74x/75x STM32F76x/77x Описание
Run 108 мА 92 мА 216 МГц, код выполняется из Flash, периферия отключена
Sleep 35 мА 18 мА 216 МГц, периферия отключена
Stop 100 мкА 130 мкА Основной регулятор в низковольтном режиме, Flash отключена
Standby без/с RTC 2,3/2,9 мкА 2,4/3,5 мкА VDD = 3,3 В
VBAT с RTC 0,72 мкА 1,13 мкА

Дополнительные опциональные биты используются для генерации сброса при переходе в режимы Standby (nRST_STNDBY) и Stop (nRST_STOP). Это сделано для повышения уровня безопасности. Если в программе эти режимы не используются, рекомендуется установить соответствующие опциональные биты.

Так как при переходе в спящие режимы часть периферии отключается, то это может помешать выполнению отладки приложений. Для обеспечения отладки в спящих режимах необходимо установить биты из регистра DBGMCU_CR: DBG_STNDBY, DBG_STOP и DBG_SLEEP.

Порты ввода-вывода GPIO

Микроконтроллеры STM32F7 могут иметь до 168 двунаправленных линий ввода-вывода GPIO, объединенных в 11 портов GPIOA…GPIOK. Порты ввода-вывода поддерживают атомарные операции управления (BSRR и BRR) и напрямую подключены к шине AHB. Это обеспечивает возможность изменения состояния на физических выводах микросхемы каждые два такта.

Несмотря на то что максимальное напряжение VDD составляет 3,6 В, большинство выводов GPIO способно работать с логикой 5 В.

До 10 выводов GPIO могут питаться не от VDD, а от независимых источников питания VDDUSB и VDDSDMMC. Это позволяет взаимодействовать с цифровыми микросхемами, использующими уровни напряжения, отличные от VDD, без необходимости сдвига уровней во внешних схемах.

Линии GPIO в STM32F7 имеют несколько режимов работы:

  • цифровой вход с возможностью подтяжки к земле и питанию (pull-down и pull-up);
  • аналоговый вход;
  • цифровой выход с открытым коллектором (open drain) или с подтяжкой (push-pull);
  • вход или выход альтернативной функции.

Выходы GPIO позволяют настраивать скорость нарастания и спада сигнала для достижения компромисса между быстродействием и уровнем помех.

Для повышения уровня защиты конфигурация портов GPIO может быть заморожена с помощью регистров GPIOx_LOCK.

Из-за богатейшего выбора периферии каждый вывод GPIO используется несколькими периферийными устройствами. Однако в любой момент времени линия GPIO может быть занята только одним периферийным блоком. Это обеспечивается благодаря встроенным мультиплексорам, управляемым регистрами GPIOx_ AFRL и GPIOx_ AFRH.

При сбросе микроконтроллера большинство выводов по умолчанию переводится в состояние плавающего входа (без подтяжки). При нахождении в состоянии сброса активными остаются только выводы, относящиеся к отладочному интерфейсу JTAG/SWD. В дальнейшем при выполнении программы эти выводы могут использоваться в качестве обычных GPIO, для этого их следует самостоятельно перенастроить после сброса:

  • PA13 – JTMS/SWDIO;
  • PA14 – JTCK/SWCLK;
  • PA15 – JTDI;
  • PB3 – JTDO;
  • PB4 – NJTRST.

Отдельно стоит отметить работу выводов, используемых для подключения внешних резонаторов и генераторов HSE и LSE. Выводы OSC_IN и OSC_OUT после сброса по умолчанию настроены как обычные порты GPIO. При подключении внешнего резонатора HSE выводы перенастраиваются автоматически. Если для тактирования используется внешний генератор, то вход OSC_IN оказывается занятым, а OSC_OUT может использоваться в режиме GPIO.

Возможности отладки STM32F7

Отладочные интерфейсы JTAG/SWD используются для программирования и отладки STM32F7. Они обеспечивают доступ ко внутренним ресурсам микроконтроллера, в том числе к Flash, ОЗУ и регистрам. Пользователи могут отслеживать выполнение кода по шагам и использовать точки останова.

Как уже отмечалось выше, для выполнения отладки в режимах пониженного потребления следует установить опциональные биты из регистра DBGMCU_CR: DBG_STNDBY, DBG_STOP и DBG_SLEEP.

Кроме всего перечисленного, STM32F7 имеют множество других инструментов отладки, с которыми подробнее можно ознакомиться в документации.

Уникальный номер UID

В процессе производства микроконтроллеров STM32F7 в их внутреннюю память, доступную только для чтения, записывается различная полезная информация (например, об объеме встроенной памяти, о типе корпуса), а также калибровочные данные и уникальный номер UID (Unique Device Identifier).

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

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

UID имеет общий размер 96 бит и включает в себя координаты кристалла микроконтроллера на исходной кремниевой подложке (X и Y), номер лота и номер самой подложки. Не все 96 бит UID по-настоящему уникальны. Некоторые из них являются фиксированными для всех контроллеров.

Список всех опубликованных глав

  1. Системная периферия
  2. Память и функции безопасности
•••

Наши информационные каналы

О компании ST Microelectronics

Компания STMicroelectronics является №1 производителем электроники в Европе. Компоненты ST широко представлены в окружающих нас потребительских товарах – от iPhone до автомобилей разных марок. Лидеры индустриального рынка выбирают компоненты ST за их надежность и выдающиеся технические параметры. В компании ST работает 48 000 сотрудников в 35 странах. Производственные мощности расположены в 12 странах мира. Более 11 тысяч сотрудников заняты исследованиями и разработками – инновационное лидерство ...читать далее

Товары
Наименование
STM32F405RGT6TR (ST)
STM32F407VET6 (ST)
STM32F407VGT6 (ST)
STM32F427ZIT6 (ST)
STM32F410CBU6 (ST)
STM32F437ZIT6 (ST)
STM32F405RGT6 (ST)
STM32F745ZGT6 (ST)
STM32F746BGT6 (ST)
STM32F746NGH6 (ST)
STM32F746ZGT6 (ST)
STM32F765VIT6 (ST)
STM32F765ZIT6 (ST)
STM32F745VET6 (ST)
STM32F205RET6 (ST)
STM32F207VET6 (ST)
STM32F207VGT6TR (ST)
STM32F205VET6 (ST)
STM32F205RET6TR (ST)
STM32F205RCT6 (ST)