Микроконтроллеры STM32F7. Часть 3. Периферия и таймеры

29 апреля

телекоммуникациитерминалы продажавтоматизацияответственные применениялабораторные приборыинтернет вещейST Microelectronicsстатьяинтегральные микросхемы

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

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

Аналогово-цифровые преобразователи (АЦП)

Встроенные аналогово-цифровые преобразователи (АЦП) позволяют микроконтроллерам измерять аналоговые напряжения, например, сигналы с датчиков. В составе STM32F7 присутствуют три 12-битных АЦП последовательного приближения с 16…24 входами и производительностью до 2,4 миллионов выборок в секунду (MSPS) или до 7,2 MSPS при последовательном запуске всех трех АЦП (режим “interleaved mode”). Основные характеристики встроенных АЦП представлены в таблице 9.

Таблица 9. Характеристики АЦП в микроконтроллерах семейства STM32F7

Параметр Значение
Число АЦП 3
Число входных каналов 16…24
Тип АЦП Последовательного приближения
Разрядность 12 бит
Скорость преобразования 2,4 MSPS (417 нс) для 12-бит измерений при частоте АЦП 36 МГц
Режимы работы Single, Continous, Scan, Discontinous
Запуск (триггеры) Программный или внешний
Специальные функции Режим компаратора, работа в сдвоенном/строенном  режиме, самокалибровка
Обработка данных Прерывания и DMA
Дифференциальная нелинейность ±2 LSB
Интегральная  нелинейность ±3 LSB
Потребление (VDDA + VREF+) 1,9 мА

Скорость выполнения измерений зависит от разрядности и рабочей частоты АЦП. Это объясняется достаточно просто. Каждый цикл измерения состоит из двух фаз: выборки и преобразования. На выборку всегда затрачиваются как минимум 3 такта, а количество тактов, необходимое для преобразования, зависит от разрешения (таблица 10). Чем меньше разрешение, тем выше будет скорость измерений. При использовании максимального разрешения 12 бит и частоты тактирования 36 МГц производительность АЦП достигает 2,4 миллионов измерений в секунду. Таким образом, при необходимости пользователь может пожертвовать разрешением ради скорости. Кроме того, при последовательном запуске всех трех АЦП скорость измерений можно поднять до 7,2 MSPS.

Таблица 10. Зависимость производительности АЦП от разрешения

Разрешение Длительность фазы выборки Длительность фазы преобразования Производительность АЦП
12 бит 3 такта 12 тактов 2,4 MSPS
10 бит 3 такта 10 тактов 2,77 MSPS
8 бит 3 такта 8 тактов 3,27 MSPS
6 бит 3 такта 6 тактов 4,0 MSPS

Для каждого входного канала пользователь может индивидуально назначить длительность фазы выборки из ряда стандартных значений (рисунок 35): 3, 15, 28, 56, 84, 112, 144, 480 тактов. Чем больше длительность фазы выборки, тем выше оказывается импеданс входного канала, и тем точнее будут измерения. Говоря о точности, стоит также отметить, что АЦП в микроконтроллерах семейства STM32F7 имеют функцию самокалибровки.

Рис. 35. Для каждого входного канала пользователь может индивидуально назначить число тактов для фазы выборки

Рис. 35. Для каждого входного канала пользователь может индивидуально назначить число тактов для фазы выборки

Производительность АЦП зависит от частоты тактирования аналоговой части, при этом для тактирования цифровой части, подключенной к шине APB (регистры управления и состояния), используется сигнал PCLK2. Для тактирования аналоговой части применяется дополнительный делитель на /2/4/6/8 (рисунок 36).

Рис. 36. Для тактирования аналоговой части АЦП применяется дополнительный делитель /2/4/6/8

Рис. 36. Для тактирования аналоговой части АЦП применяется дополнительный делитель /2/4/6/8

АЦП в микроконтроллерах семейства STM32F7 имеют до 24 каналов. Они могут работать в таких режимах как (рисунок 37):

Рис. 37. Различные режимы работы АЦП

Рис. 37. Различные режимы работы АЦП

  • однократный одноканальный (Single conversion mode) режим – однократное измерение напряжения выбранного канала;
  • одноканальный режим с автозапуском (Continuous conversion mode) – циклическое измерение напряжения выбранного канала;
  • многоканальный (Scan mode) – однократное измерение напряжений выбранных каналов;
  • многоканальный с автозапуском (Continuous scan mode) – циклическое измерение напряжений выбранных каналов;
  • с запуском от внешнего сигнала (Discontinuous mode), при котором измерения выполняются для группы выбранных каналов, при этом запуск очередного измерения происходит по внешнему сигналу управления (триггеру), например, от таймера.

Выше были рассмотрены обычные режимы работы АЦП, в которых происходит последовательное измерение напряжения выбранных каналов. Однако у пользователей есть возможность прерывания нормальной очередности измерений с помощью режима инжектированных каналов (Injected channel). В этом режиме АЦП работает по обычному сценарию до прихода управляющего сигнала (триггера), после чего нормальная последовательность измерений разрывается и АЦП выполняет измерение напряжений на выбранных (инжектированных) каналах (рисунок 38). После того как измерение напряжений на инжектированных каналах закончено, АЦП возвращается к нормальной работе.

Рис. 38. Работа АЦП с инжектированными каналами

Рис. 38. Работа АЦП с инжектированными каналами

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

Для хранения результатов обычных измерений используется 16-битный регистр. Кроме того, каждому из инжектированных каналов предоставлен свой собственный регистр для хранения результатов измерений. Результаты измерений могут считываться напрямую из регистров АЦП или пересылаться с помощью DMA без привлечения процессорного ядра.

Для контроля процесса измерений используются четыре флага:

  • EOC, который сигнализирует об окончании измерения;
  • JEOC, сигнализирующий об окончании измерения для инжектированных каналов;
  • AWD, сообщающий о срабатывании сторожевого компаратора;
  • OVR, который выставляется, если к моменту получения новых данных старые результаты измерений не были считаны.

АЦП остается активным в режимах Run и Sleep. При переходе микроконтроллера в режим Stop деятельность АЦП прекращается, но содержимое регистров конфигурации сохраняется. После возвращения из режима Standby необходимо заново инициализировать АЦП. Для экономии потребления в АЦП реализован собственный внутренний режим сна Deep power-down mode, благодаря которому удается существенно уменьшить токи утечки.

Для получения подробной информации о встроенных АЦП семейства микроконтроллеров STM32F7 ознакомьтесь с материалами:

Цифро-аналоговые преобразователи (ЦАП)

Микроконтроллеры семейства STM32F7 имеют два встроенных 12-битных ЦАП, которые также могут работать с разрядностью 8 бит. Производительность ЦАП составляет 1 MSPS. Характеристики ЦАП представлены в таблице 11.

Таблица 11. Характеристики ЦАП в микроконтроллерах семейства STM32F7

Параметр Значение
Число ЦАП 2
Напряжение питания VDDA 1,8…3,6 В
Разрядность 12 бит
Гарантированная монотонность 10 бит
Дифференциальная нелинейность ±2 LSB
Интегральная  нелинейность ±4 LSB
Скорость преобразования 1 MSPS
Потребление (VDDA+, VREF+) 450 мка с выходным буфером и 170 мкА без выходного буфера

На выходе каждого ЦАП присутствует встроенный выходной буфер, который активируется и отключается по желанию пользователя (рисунок 39). Буфер необходим для работы с низкоомной нагрузкой. Использование буфера предполагает существенное увеличение потребления ЦАП с 170 до 450 мкА. Если нагрузка позволяет, то буфер следует отключить, тогда выходной сигнал подается на выход напрямую со встроенной резистивной цепочки R-2R с собственным сопротивлением менее 15 кОм.

Рис. 39. Структура ЦАП в микроконтроллерах семейства STM32F7

Рис. 39. Структура ЦАП в микроконтроллерах семейства STM32F7

Встроенные ЦАП способны работать с 8-битным или 12-битным разрешением. При работе в 12-битном режиме возможны левое или правое выравнивания входных данных (рисунок 40). Для этого используются регистры DAC_DHR12Lx и DAC_DHR12Rx соответственно. При работе в 8-битном режиме применяется правое выравнивание входных данных и регистры DAC_DHR8Rx. Таким образом, для каждого ЦАП выделено по три регистра для хранения входных данных.

Рис. 40. Выравнивание входных данных

Рис. 40. Выравнивание входных данных

Встроенные ЦАП могут работать совместно в режиме dual mode. При этом их выходы обновляются одновременно. Для этого используются специальные совмещенные регистры для записи входных данных: DHR8RD, DHR12RD и DHR12LD (рисунок 41).

Рис. 41. Выравнивание входных данных в режиме dual mode

Рис. 41. Выравнивание входных данных в режиме dual mode

Запуск ЦАП происходит в момент записи в регистры входных данных. Кроме того, запуск ЦАП возможен по сигналам управления (триггерам) от таймеров или портов ввода-вывода.

В состав ЦАП входят два специализированных генератора: генератор шума и генератор треугольных сигналов. Генератор шума использует сдвиговый регистр (LFSR) с обратной связью (рисунок 42). LFSR формирует шумовой сигнал, который добавляется к значению, хранящемуся в регистре данных ЦАП.

Рис. 42. Формирование шумового сигнала

Рис. 42. Формирование шумового сигнала

Генератор треугольного сигнала использует встроенный счетчик для пошагового увеличения выходного сигнала ЦАП (рисунок 43).

Рис. 43. Работа генератора треугольных сигналов

Рис. 43. Работа генератора треугольных сигналов

Для формирования выходных сигналов ЦАП удобно использовать DMA. DMA позволяет автоматически загружать данные в регистры ЦАП без привлечения процессорного ядра.

ЦАП остаются активными не только в режимах Run и Sleep, но и в режиме Stop. После возвращения микроконтроллера из режима Standby необходимо заново инициализировать регистры управления ЦАП.

Для получения подробной информации о встроенных АЦП семейства микроконтроллеров STM32F7 изучите материалы:

CAN-контроллер

CAN является чрезвычайно популярным интерфейсом. Его популярность объясняется простотой организации шины, высокой надежностью и возможностью гибкой настройки. CAN позволяет узлам обмениваться информацией в реальном времени, осуществлять арбитраж и контролировать возникновение ошибок. В CAN отсутствует понятие ведущего, вместо этого используется неразрушающая система арбитража с учетом приоритетов сообщений. Пример структуры и организации CAN-шины представлен на рисунке 44.

Рис. 44. Архитектура шины CAN

Рис. 44. Архитектура шины CAN

Микроконтроллеры семейства STM32F7 имеют встроенный CAN-контроллер (bxCAN), который поддерживает спецификацию протокола CAN 2.0 A и В и обеспечивает скорость передачи данных до 1 Мбит/с. В состав bxCAN входят три почтовых ящика для передачи (mailboxes), два FIFO-буфера и 28 банков фильтров. Все это позволяет CAN-контроллеру эффективно обрабатывать большое количество входящих и исходящих сообщений с минимальной загрузкой процессорного ядра.

CAN-контроллер может находиться в следующих состояниях:

  • инициализация (Initialization);
  • нормальное состояние (Normal);
  • сон (Sleep) (рисунок 45).

Рис. 45. Состояния CAN-контроллера

Рис. 45. Состояния CAN-контроллера

После аппаратного сброса bxCAN пребывает в состоянии сна (Sleep) с минимальным уровнем потребления. По команде от пользователя CAN-контроллер переводится в состояние инициализации для последующей настройки. Прежде чем перейти в нормальное рабочее состояние bxCAN должен синхронизироваться с шиной. Для этого он ожидает появления на входе CANRX последовательности из 11 рецессивных битов подряд, что свидетельствует о том, что шина освободилась.

  1. ACK – цикл ожидания, в котором контроллер подтверждает запрос и устанавливает биты INAK или SLAK в регистре CAN_MSR
  2. SYNC – состояние, в котором bxCAN ждет освобождения шины (последовательность из 11 рецессивных битов на линии CANRX)

После того как CAN-контроллер перейдет в нормальное состояние, пользователь может активизировать либо рабочий, либо тестовый режим bxCAN. Существует три тестовых режима:

  • режим прослушивания;
  • режим эха;
  • комбинированный режим.

Режим прослушивания (silent mode) предполагает, что CAN-контроллер только принимает сообщения, но сам ничего не передает (рисунок 46). Такой режим необходим для анализа трафика на CAN-шине.

Рис. 46. Работа в режиме прослушивания шины (silent mode)

Рис. 46. Работа в режиме прослушивания шины (silent mode)

Режим эха (loop back mode) предполагает, что CAN-контроллер передает и принимает свои собственные сообщения (рисунок 47). Такой режим необходим для самоконтроля.

Рис. 47. Работа в режиме эха (loop back mode )

Рис. 47. Работа в режиме эха (loop back mode )

Комбинированный режим, как следует из названия, сочетает в себе особенности двух предыдущих. В нем CAN-контроллер передает сообщения, которые не транслируются в шину, а принимаются самим контролером (рисунок 48). Это эквивалентно замыканию внутренних линий Tx и Rx.

Рис. 48. Работа в комбинированном режиме

Рис. 48. Работа в комбинированном режиме

На рисунке 49 представлена упрощенная блок-схема одиночной конфигурации CAN-контроллера. Из схемы видно, что для настройки и работы с bxCAN используются три группы регистров: регистры управления, регистры настройки фильтров и регистры состояния (статуса). Для передачи сообщений предназначено три почтовых ящика. Приоритет почтовых ящиков определяет планировщик передачи. Для отсеивания ненужных принятых сообщений используется 14 настраиваемых фильтров. Принимаемые сообщения помещаются в FIFO-буферы (FIFO0 и FIFO1), каждый из которых может хранить до трех сообщений.

Рис. 49. Работа одиночного CAN-контроллера

Рис. 49. Работа одиночного CAN-контроллера

При активизации второго CAN-контроллера в режиме Dual Mode приемные FIFO-буферы работают с общим банком фильтров (рисунок 50). Модули CAN1 и CAN2 разделяют общую память 512 байт ОЗУ. CAN1 выступает в качестве ведущего, а CAN2 – в качестве ведомого. У модуля CAN3 есть собственная выделенная память ОЗУ 512 байт.

Рис. 50. Работа CAN-контроллеров в режиме Dual mode

Рис. 50. Работа CAN-контроллеров в режиме Dual mode

CAN-контроллер генерирует различные виды прерываний:

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

CAN-контроллер остается активным в режимах Run и Sleep. При переходе микроконтроллера в режим Stop деятельность CAN прекращается, но содержимое регистров конфигурации сохраняется. После возвращения из режима Standby CAN-контроллер необходимо заново инициализировать.

Для получения подробной информации о CAN-контроллере семейства микроконтроллеров STM32F7 ознакомьтесь с документами:

Интерфейс камеры DCMI

DCMI (Digital camera interface) используется для подключения камеры с параллельным интерфейсом к микроконтроллерам STM32F7. Камера формирует параллельный поток данных: сигналы DCMI_D[0…13] и сигнал тактирования DCMI_PIXCLK. Кроме того, для синхронизации развертки используются дополнительные сигналы DCMI_HSYNC и DCMI_VSYNC (рисунок 51). Разрядность шины данных DCMI_D может составлять 8/10/12/14 бит. Частота тактового сигнала DCMI_PIXCLK достигает 54 МГц, при этом минимальное соотношение частот AHB/PIXCLK должно быть не менее 2,5.

Рис. 51. Блок-схема DCMI

Рис. 51. Блок-схема DCMI

DCMI поддерживает работу с такими форматами данных как:

  • некодированные параллельные данные – 8/10/12/14-битная прогрессивная развертка;
  • 8-битный кодированный формат YCbCr 4:2:2;
  • 16-битный формат RGB 565;

На рисунке 52 представлен пример передачи изображения с камеры на TFT-дисплей. В данном случае видеопоток поступает от камеры и с помощью DMA передается в экранную память, в роли которой выступает внутреннее ОЗУ микроконтроллера. Далее второй канал DMA передает данные в LTDC-контроллер. Для связи с TFT используется RGB-интерфейс.

Рис. 52. Пример схемы вывода изображения с камеры на TFT-дисплей

Рис. 52. Пример схемы вывода изображения с камеры на TFT-дисплей

Чтобы эффективнее использовать пропускную способность шины и уменьшить вероятность потери информации, применяется упаковка данных. Данные упаковываются в 32-битные слова. При этом если используется 8-битный поток данных, то в каждом 32-битном слове умещается по 8 кадров. При работе с 10-/12-/14-битными данными в каждом 32-битном слове умещается по 4 кадра. Использование 32-битных слов позволяет существенно повысить эффективность и скорость передачи. Дополнительную надежность передачи обеспечивает 8-уровневый FIFO-буфер.

DCMI обеспечивает два режима работы: с однократным захватом кадра (Snapshot mode) или с потоковым захватом видео (Continuous mode). Режим однократного захвата кадра активируется после установки бита CM в регистре DCMI_CR. Для инициализации захвата необходимо установить бит CAPTURE в регистре DCMI_CR. Далее DCIM-контроллер ждет начала первого кадра и выполняет его захват. После чего бит CAPTURE автоматически сбрасывается, а прием следующего кадра не выполняется (рисунок 53). При необходимости контроллер DCIM может сгенерировать прерывание IT_FRAME, если оно ранее было разрешено.

Рис. 53. Порядок следования сигналов при захвате одиночного кадра

Рис. 53. Порядок следования сигналов при захвате одиночного кадра

Для активации режима потокового захвата видео бит CM в регистре DCMI_CR должен быть сброшен. В таком случае после установки бита CAPTURE в регистре DCMI_CR контроллер DCIM ждет начала первого кадра и выполняет его захват. При этом бит CAPTURE не сбрасывается и захват следующих кадров продолжается (рисунок 54).

Рис. 54. Порядок следования сигналов при потоковом захвате изображений

Рис. 54. Порядок следования сигналов при потоковом захвате изображений

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

Рис. 55. Координаты и размеры окна при использовании функции обрезания изображения

Рис. 55. Координаты и размеры окна при использовании функции обрезания изображения

DCIM способен генерировать пять типов прерываний, которые используют один общий вектор:

  • IT_LINE сообщает об окончании строки развертки;
  • IT_FRAME сообщает об окончании кадра;
  • IT_OVR сообщает о переполнении данных;
  • IT_VSYNC сообщает о синхронизации кадра;
  • IT_ERR сообщает об ошибке синхронизации при приеме кадра.

DCIM остается активным в режимах Run и Sleep. При переходе микроконтроллера в режим Stop деятельность DCIM прекращается, но содержимое регистров конфигурации сохраняется. После возвращения из режима Standby необходимо заново инициализировать регистры конфигурации DCIM.

Цифровой фильтр для Δ-Σ-модулятора DFSDM

DFSDM (Digital filter for sigma delta modulators) – блок цифровых фильтров, используемый для обработки данных, получаемых от внешних Δ-Σ-модуляторов. Кроме того, DFSDM может использоваться для фильтрации любого потока 16-битных данных.

На рисунке 56 изображена схема взаимодействия DFSDM с внешним Δ-Σ-модулятором. Из этой схемы становятся очевидными преимущества использования DFSDM. Источник сигнала и Δ-Σ-модулятор могут находиться на значительном удалении от микроконтроллера, а связь с ними осуществляется по двухпроводному изолированному каналу. Такое решение является оптимальным для различных приложений. Например, при работе с чувствительными аналоговыми датчиками шумная цифровая часть во главе с микроконтроллером не влияет на качество измерений. И наоборот, если источник сигнала представляет собой высоковольтную шумную систему, например, электродвигатель, то гальваническая развязка, напротив, защищает микроконтроллер и низковольтные цифровые цепи.

Рис. 56. Схема взаимодействия DFSDM с внешним Δ-Σ-модулятором

Рис. 56. Схема взаимодействия DFSDM с внешним Δ-Σ-модулятором

Структурная схема DFSDM изображена на рисунке 57. В состав DFSDM входят: 8 приемников последовательных данных, 8 приемников параллельных данных, 4 цифровых фильтра, 4 цифровых интегратора, 4 модуля выходных данных, 8 детекторов коротких замыканий, 4 компаратора, 4 детектора предельных значений. Кратко рассмотрим особенности каждого из блоков. 

Рис. 57. Структурная схема DFSDM

Рис. 57. Структурная схема DFSDM

Приемники последовательных данных служат для получения данных от внешних Δ-Σ-модуляторов. DFSDM поддерживает два режима приема: режим SPI и однопроводной режим с манчестерским кодированием.

При работе в режиме SPI DFSDM формирует тактовый сигнал CLK частотой до 24 МГц и принимает данные от Δ-Σ-модуляторов по линии DATA.

При работе в однопроводном режиме с манчестерским кодированием DFSDM только принимает закодированные данные от Δ-Σ-модуляторов с частотой до 10 МГц. Этот режим является наиболее бюджетным с точки зрения стоимости конечной системы, так как в данном случае требуется только простейший Δ-Σ-модулятор и оптическая развязка.

Приемники параллельных данных используются для приема внутреннего потока 16-битных данных, загружаемых самим процессором или DMA. Источником данных может быть, например, встроенный АЦП.

Цифровые фильтры осуществляют усреднение 1-битного потока данных. Поддерживается максимальная разрядность выборки 32 бита. Для пользователей доступны шесть типов фильтров: Sinc1, Sinc2, Sinc3, Sinc4, Sinc5 и FastSinc. Коэффициент передискретизации задается пользователем от 1 до 1024 и определяет, сколько выборок будет использоваться в одной итерации усреднения. Стоит отметить, что пользователь должен самостоятельно убедится, что при выбранных настройках не произойдет переполнение в рамках 32-битного формата.

Интеграторы предоставляют собой дополнительную ступень усреднения. По сути, они всего лишь суммируют данные, получаемые от цифровых фильтров. Количество выборок для интегрирования определяет пользователь в диапазоне 1…256.

Модули выходных данных выполняют две основные функции: устранение смещения и сдвиг данных с учетом требуемого формата. Устранение смещения чаще всего необходимо при калибровке. Значение смещения, вычитаемое из конечного результата, задается пользователем. Несмотря на то, что внутренний формат данных в DFSDM имеет разрядность 32 бита, конечные данные имеют разрядность только 24 бита. Кроме того, очень часто в пользовательских приложениях требуются и другие форматы, например, 8/12/16 бит. Для автоматического форматирования результата используется настраиваемая функция сдвига вправо на величину 0…31 бит.

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

Компаратор может работать как с результатом от модуля выходных данных, так и с «сырыми» данными, поступающими с выходов цифровых фильтров. Коэффициент передискретизации для компаратора задается пользователем в диапазоне 1…32.

Детекторы коротких замыканий необходимы для сверхбыстрого обнаружения замыканий на землю или шину питания. Эти блоки напрямую работают со входными потоками данных, поступающими от внешних Δ-Σ-модуляторов. При обнаружении длинной последовательности «0» или «1» детектор формирует прерывание, по которому, например, может быть остановлен таймер, управляющий электродвигателем.

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

Модуль DFSDM, так же как и рассмотренные выше блоки АЦП, может работать в двух режимах: с регулярными и инжектированными измерениями.

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

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

Инжектированные измерения не имеют встроенной в DFSDM функции автозапуска. Вместо этого может использоваться регулярный запуск по сигналу от таймера или от внешнего источника.

DFSDM формирует следующие прерывания:

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

DFSDM остается активным в режимах Run и Sleep. При переходе микроконтроллера в режим Stop деятельность DFSDM прекращается, но содержимое регистров конфигурации сохраняется. После возвращения из режима Standby необходимо заново инициализировать DFSDM.

DSIHOST

DSIHOST – высокоскоростной интерфейс, позволяющий микроконтроллерам STM32F7 работать с TFT-дисплеями, занимая минимальное число выводов. DSIHOST использует одну дифференциальную линию тактирования (CLK) и до двух линий данных (DATAn). Пропускная способность каждой из шин данных составляет 500 Мбит/с (суммарно 1 Гбит/с).

Структурная схема DSIHOST в STM32 включает несколько основных блоков (рисунок 58).

Рис. 58. Структурная схема DSI (DSIHOST)

Рис. 58. Структурная схема DSI (DSIHOST)

DSI-преобразователь (DSI Wrapper) обеспечивает взаимодействие между TFT-контроллером LTDC и ядром DSI. Здесь выполняется преобразование цветов и полярностей сигналов, а также обработка команд в режиме Adapted Command mode. Кроме того, данный блок управляет системой ФАПЧ и некоторыми функциями D-PHY.

Интерфейс LTDC принимает сообщения от LTDC и помещает их в FIFO-буфер. Эти данные используются для формирования видеопотока в режиме видео и для формирования команд в режиме Adapted Command mode.

Преобразователь APB-Generic осуществляет обмен между периферийной шиной APB и ядром DSI. Для этого используются три FIFO-буфера: буфер команд (Command FIFO), записи (Write payload FIFO) и чтения (Read payload FIFO).

Внутренние регистры необходимы для настройки DSI Host. Взаимодействие с ними идет по периферийной шине APB.

Обработчик пакетов (Packet Handler) используется для формирования и обработки DSI-пакетов, контроля ошибок, подсчета контрольных сумм и так далее.

Интерфейс D-PHY отвечает за взаимодействие ядра и D-PHY.

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

Видеогенератор используется для формирования на дисплее вертикальных или горизонтальных прямоугольных полос без участия LTDC.

DSIHOST может работать в трех режимах: Video mode, APB Command mode и Adapted Command mode.

Видеорежим (Video mode) используется для преобразования и передачи потока RGB-данных от встроенного TFT-контроллера LTDC к дисплею. Этот режим является наиболее оптимальным выбором при работе с дисплеями, не имеющими собственной экранной памяти. В соответствии со спецификацией MIPI-DSI встроенный интерфейс DSIHOST поддерживает три варианта работы в режиме Video mode:

  • Burst mode;
  • Non-burst mode with sync pulse;
  • Non-burst mode with sync event.

Режим команд (APB Command mode) используется для передачи команд, как и при работе с обычными SPI-дисплеями. Как правило, настройка дисплея производится в процессе инициализации приложения, однако в случае необходимости команды могут пересылаться и в процессе передачи видеопотока. DSIHOST поддерживает все стандартные DCS-команды (Display Command Set).

Режим Adapted Command mode является оптимальным выбором при работе с дисплеями со встроенной экранной памятью. В данном случае DSIHOST не занимается формированием развертки экрана, как в режиме Video mode, а только обновляет изображение, получив полный кадр от LTDC.

При работе в режиме Adapted Command mode интерфейс DSIHOST предоставляет пользователю два способа борьбы с эффектом частичного обновления экрана (tearing effect). Этот эффект выражается в появлении артефактов в виде «слезы» при рассинхронизации процесса развертки и обновления экранной памяти. Первый способ борьбы состоит в передаче согласующего сигнала посредством линий DSI, а второй – в выделении специальной линии, по состоянию которой DSIHOST узнает о достижении линии развертки.

Выбирая между режимами Video mode и Adapted Command mode, следует учитывать некоторые особенности. Большие дисплеи, как правило, не имеют встроенной памяти, по этой причине для работы с ними придется использовать Video mode. Кроме того, при больших разрешениях встроенной памяти микроконтроллера не хватит для хранения изображений, поэтому разработчику придется использовать дополнительную внешнюю память (в первую очередь – ОЗУ). В то же время дисплеи с небольшим разрешением обычно имеют собственную экранную память, и для них оптимальным выбором будет режим Adapted Command mode. В таком случае собственной памяти микроконтроллера хватит для буферизации изображения, и внешняя память не потребуется, что позволит обеспечить невысокую стоимость всей системы.

Скорость обновления экрана при работе с DSIHOST зависит от размеров экрана и формата данных. При максимальной частоте 1 Гбит/с и 16-битном цвете частота пикселей составит 62,5 МГц, а при 24-битном цвете – 41,5 МГц. Таким образом, при использовании 24-битного цвета можно обеспечить частоту обновления 60 кадров в секунду при работе с разрешением 800х600.

DSI остается активным в режимах Run и Sleep. При переходе микроконтроллера в режим Stop деятельность DSI прекращается, но содержимое регистров конфигурации сохраняется. После возвращения режима Standby DSI необходимо заново инициализировать.

Ethernet-контроллер

Встроенный Ethernet-контроллер семейства STM32F7 позволяет создавать приложения, полностью соответствующие стандарту IEEE802.3. Контроллер обеспечивает обмен данными со скоростью 10 или 100 Мбит/с.

Организация Ethernet-подключения осуществляется на нескольких уровнях (рисунок 59). Канальный уровень обеспечивается встроенным Ethernet-контроллером. Транспортный и сетевой уровни могут быть реализованы с помощью стека LwIP. Для организации канального уровня необходима внешняя микросхема PHY.

Рис. 59. Реализация Ethernet-подключения

Рис. 59. Реализация Ethernet-подключения

Блок-схема Ethernet-контроллера представлена на рисунке 60. Как видно из данной схемы, контроллер имеет собственный DMA для организации автономного доступа к памяти, встроенные FIFO-буферы для хранения входящих и исходящих кадров, MAC-контроллер, интерфейс для связи с внешней микросхемой PHY (MII или RMII).

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

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

Ethernet-контроллер позволяет существенно разгрузить центральный процессор благодаря целому ряду автоматически выполняемых функций, таких как:

  • вставка/удаление преамбулы и поля Start-of-Frame;
  • фильтрация MAC-адресов получателей;
  • фильтрация MAC-адресов отправителя;
  • обнаружение поля VLAN;
  • контроль полей типа и размера;
  • расчет и проверка контрольной суммы для вложенных данных (payload) IPv4 и TCP/UDP/ICMP;
  • расчет CRC-пакета.

Ethernet-контроллер полностью соответствует стандартам IEEE 802.3-2002 и  IEEE 1588-2008. IEEE 1588 был разработан для синхронизации нескольких Ethernet-узлов с точностью до 1 мкс, что оказывается возможным только при аппаратной поддержке временных меток. За согласование отвечает протокол PTP (Precision timing protocol). MAC STM32F7 поддерживает PTPv2 (IEEE 1588-2008). Для хранения точного времени используется 64-битный регистр (32 бита для секунд и 32 бита для наносекунд).

Управление внешним PHY (рисунок 61) осуществляется с помощью интерфейса SMI (Station Management Interface). Этот интерфейс поддерживает протокол MDIO и использует двухпроводной канал связи для чтения и записи регистров PHY.

Рис. 61. Реализация SMI-интерфейса

Рис. 61. Реализация SMI-интерфейса

Для организации потока данных Ethernet используются интерфейсы MII (Media-independent Interface) или RMII (Reduced Media-independent Interface) (рисунки 62 и 63). Оба интерфейса позволяют обеспечивать скорость обмена 10 или 100 Мбит/с. В случае с MII задействуется 16 выводов микроконтроллера, а при работе с RMII – всего семь.

Рис. 62. Взаимодействие с микросхемой PHY с помощью MII-интерфейса

Рис. 62. Взаимодействие с микросхемой PHY с помощью MII-интерфейса

Рис. 63. Взаимодействие с микросхемой PHY с помощью RMII-интерфейса

Рис. 63. Взаимодействие с микросхемой PHY с помощью RMII-интерфейса

Ethernet-контроллер способен формировать широкий спектр прерываний, подробное рассмотрение которых приводится в руководстве пользователя.

Ethernet-контроллер может пробуждать процессор из режимов Sleep и Stop по приему wake-up-сообщения. При этом Ethernet-передатчик, а также собственный DMA в режиме сна отключаются. Активным остается только приемник, который игнорирует все кадры, за исключением wake-up-сообщений.

После пробуждения из режима Standby Ethernet-контроллер необходимо заново инициализировать.

Контроллер HDMI-CEC

Стандарт CEC (Consumer Electronics Control) является частью стандарта HDMI (High-definition Multimedia Interface). Он описывает протокол, который обеспечивает управление различными мультимедийными устройствами с помощью однопроводного интерфейса. Встроенный HDMI-CEC-контроллер семейства STM32F7 совместим со стандартом HDMI-CEC v1.4.

Структура контроллера HDMI-CEC, а также схема подключения внешнего CEC-устройства представлены на рисунке 64. Управление и настройка регистров HDMI-CEC выполняется традиционно – по шине APB с тактовой частотой PCLK. При этом само ядро HDMI-CEC работает с тактовым сигналом 32 кГц, который может быть получен путем деления тактовых сигналов от HSE или LSE.

Рис. 64. Блок-схема контроллера HDMI-CEC

Рис. 64. Блок-схема контроллера HDMI-CEC

Ядро HDMI-CEC отвечает за передачу, прием и проверку сообщений. Формат сообщений предполагает наличие старт-бита, заголовка, кода операндов и до 14 операндов (рисунок 65).

Рис. 65. Структура сообщения CEC

Рис. 65. Структура сообщения CEC

Поля заголовка, кода операндов и сами операнды имеют длину 8-бит и передаются старшим битом вперед. Кроме того, после передачи каждого поля следует два служебных бита EOM и ACK (рисунок 66).

Рис. 66. Расшифровка поля заголовка и операндов

Рис. 66. Расшифровка поля заголовка и операндов

CEC подразумевает неразрушающий арбитраж при наличии нескольких передающих устройств (initiator). Для этого реализованы два механизма. Первый заключается в том, что каждое устройство, передавая поле адреса инициатора (INITIATOR[3:0]), контролирует шину. Если вместо «1» устройство видит «0», то это означает потерю арбитража и необходимость окончания передачи. Второй механизм связан с формированием паузы (signal-free time) перед началом передачи сообщения. Если бит SFT = 0, то контроллер HDMI-CEC автоматически высчитывает длительность паузы в соответствии со стандартом HDMI-CEC:

  • 2,5 бита для инициатора, потерявшего приоритет при последней передаче;
  • 4 бита для нового инициатора;
  • 6 битов для инициатора, последним закончившего удачную передачу.

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

Еще один бит управления SFTSTOP определяет момент начала измерения длительности паузы перед началом передачи сообщения. Если SFTSTOP = 0, то отсчет паузы начинается в момент, когда пользовательская программа инициирует передачу (TXSOM = 1). Если SFTSTOP = 1, то отсчет паузы начинается с момента освобождения шины или обнаружения ошибки. При этом, если к моменту подачи команды от пользователя (TXSOM = 1) пауза закончилась, то передача стартует без задержки.

Контроллер HDMI-CEC поддерживает два режима временной точности при передаче бита: стандартную и расширенную. При стандартной точности погрешность времени фронта и среза для старт-бита составляет ±200 мкс, а погрешность битов данных составляет ±200 мкс для фронта и ±350 мкс для среза (рисунок 67). В режиме расширенной точности погрешность времени фронта и среза для старт-бита составляет ±400 мкс, а погрешность битов данных составляет ±300 мкс для фронта и ±500 мкс для среза.

Рис. 67. Допустимые погрешности битовых таймингов

Рис. 67. Допустимые погрешности битовых таймингов

Контроллер HDMI-CEC выполняет проверку параметров сигналов и способен обнаруживать два типа ошибок:

  • Bit Timing Error (BTE) возникает, если превышен допуск на тайминги отдельных битов;
  • Bit Period Error (BPE) возникает, если нарушен допуск на период следования битов.

При обнаружении ошибки CEC-устройство сообщает об этом остальным устройствам на шине. Для этого формируется бит ошибки длительностью 1,4…1,6 бита (3,6 мс), как показано на рисунке 68.

Рис. 68. При обнаружении ошибки CEC-устройство формирует специальное сообщение ERROR_BIT

Рис. 68. При обнаружении ошибки CEC-устройство формирует специальное сообщение ERROR_BIT

Повторная передача сообщения возможна в трех случаях:

  • не получено подтверждение о приеме ACK от получателя;
  • получен бит NACK при широковещательной передаче;
  • обнаружен неожиданный «0» в процессе передачи.

HDMI-CEC формирует следующие прерывания при приеме:

  • RXBR – байт принят;
  • RXEND – конец приема;
  • RXOVR – переполнение при приеме;
  • BRE – ошибка длительности фронта;
  • SBPE – ошибка, связанная с обнаружением слишком короткого периода;
  • LBPE – ошибка, связанная с обнаружением слишком длинного периода;
  • RXACKE – ошибка, связанная с отсутствием сигнала подтверждения ACK.

HDMI-CEC формирует следующие прерывания при передаче:

  • ARBLST – потеря арбитража;
  • TXBR – запрос байта на передачу;
  • TXEND – конец передачи;
  • TXUDR – ошибка, связанная с тем, что приложение не успело заполнить буфер данными к моменту передачи следующего байта;
  • TXERR – ошибка при передаче;
  • TXACKE – ошибка, связанная с отсутствием сигнала подтверждения ACK.

HDMI-CEC остается активным в режимах Run и Sleep. При переходе микроконтроллера в режим Stop деятельность HDMI-CEC прекращается, но содержимое регистров конфигурации сохраняется. После возвращения режима Standby HDMI-CEC необходимо заново инициализировать.

Интерфейс I2C

I2C является одним из наиболее популярных интерфейсов для встраиваемых систем. Он может использоваться для связи устройств, находящихся как на одной плате, так и на разных платах. Одним из главных преимуществ I2C является возможность подключения большого количества узлов с помощью простой двухпроводной линии (рисунок 69).

Рис. 69. Пример реализации шины I2C

Рис. 69. Пример реализации шины I2C

В микроконтроллерах STM32F7 присутствует до четырех I2C-контроллеров с одинаковыми возможностями (таблица 12). Каждый I2C-интерфейс отвечает требованиям спецификации I2C Revision 3 от NXP, требованиям SMBus Revision 2 и PMBus Revision 1.1. I2C может использоваться для работы с различными устройствами: датчиками, микроконтроллерами и так далее.

Таблица 12. Характеристики I2C-контроллеров

Параметр I2C1 I2C2 I2C3 I2C4
7-битная адресация + + + +
10-битная адресация + + + +
Standard-mode до 100 кбит/с + + + +
Fast-mode до 400 кбит/с + + + +
Fast-mode Plus до 1 Мбит/с + + + +
Независимое тактирование + + + +
SMBus + + + +

Блок схема I2C-контроллера представлена на рисунке 70. Управление I2C производится с помощью регистров, подключенных к шине APB и тактируемых PCLK. Остальная часть I2C-контроллера использует независимое тактирование (I2CCLK). При этом в качестве источника тактирования могут выступать сигналы SYSCLK, HSI или PCLK. Линии интерфейса SDA и SCL снабжены аналоговыми и цифровыми фильтрами. При работе в режиме SMB используется дополнительный вывод SMBA для формирования предупреждений. Как показано на схеме, I2C-контроллер не имеет встроенных подтягивающих резисторов. Это значит, что разработчик должен позаботиться об их размещении самостоятельно и рассчитать номинал исходя из топологии шины.

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

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

I2C-контроллер позволяет выполнять гибкую настройку временных параметров с помощью специальных регистров. Например, для задания времени установки и удержания битов данных на шине отвечают счетчики SDADEL и SCLDEL. Аналогично, в режиме ведомого пользователь определяет параметры тактового сигнала с помощью полей PRESC[3:0], SCLH[7:0] и SCLL[7:0] регистра I2C_TIMINGR.

I2C-контроллер может работать с 7-битной и 10-битной адресацией. Для хранения собственного адреса выделено два регистра:

  • I2C_OAR1, который работает как в 7-битном, так и в 10-битном режиме;
  • I2C_OAR2, который работает только в 7-битном режиме.

I2C-контроллер может откликаться и на несколько адресов. Для этого выделен регистр OA2MSK, который позволяет маскировать младшие разряды адреса.

Благодаря широким аппаратным возможностям работа с I2C-контроллером существенно упрощается. Например, в самом простом случае для подготовки к передаче до 255 байт в режиме ведущего от пользователя потребуется выполнить всего один цикл записи в регистр управления Control register 2 (I2C_CR2). Этот регистр содержит следующие ключевые поля и биты:

  • START – бит, инициирующий начало передачи;
  • SADD – биты адреса приемника сообщений;
  • RD_ER – направление передачи (прием/передача);
  • NBYTES – число байт для передачи;
  • AUTOEND – бит, отвечающий за автоматическое формирование стоп-бита в конце передачи.

Стоит отметить, что для пересылки данных из памяти в I2C-контроллер может использоваться DMA, что максимально разгружает процессорное ядро. После завершения передачи происходит автоматическая установка флага TC (Transfer Complete) и генерация прерывания, если оно было разрешено.

Если пользователю требуется передать более 255 байт данных, то в регистре I2C_CR2 следует установить бит RELOAD. В таком случае после передачи 255 байт взводится флаг TCR (Transfer Ccomplete Reload), а тактирование I2C приостанавливается до тех пор, пока пользователь не запишет в I2C_CR2 данные об объеме новой порции передаваемых данных.

При работе в режиме ведомого схема I2C по умолчанию растягивает сигнал тактирования (stretching), чтобы успеть вычитывать данные. Эту функцию можно отключить.

I2C-контроллер поддерживает SMBus Revision 2, в том числе следующие протоколы: ARP (address resolution protocol), Host Notify protocol, Alert protocol. Кроме того расчет PEC (Packet Error Code) выполняется на аппаратном уровне.

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

I2C-контроллер остается активным в режимах Run и Sleep. При переходе микроконтроллера в режим Stop деятельность I2C прекращается, но содержимое регистров конфигурации сохраняется. После возвращения режима Standby необходимо заново инициализировать I2C.

Графический контроллер LTDC

LCD-TFT-контроллер (LTDC) позволяет управлять TFT-дисплеями с разрешением до 1024×768 с помощью параллельного RGB-интерфейса. LTDC обеспечивает гибкую настройку параметров дисплея, автоматическое преобразование форматов цвета и различные специальные функции: смешивание, дизеринг, хромакей и другие.

На блок-схеме, представленной на рисунке 71, показано, как LTDC поддерживает работу с двумя экранными слоями. У каждого слоя есть собственный FIFO-буфер, конвертер формата, микшер и блок дизеринга.

Рис. 71. Блок-схема LTDC

Рис. 71. Блок-схема LTDC

LTDC использует три источника тактирования:

  • HCLK – для обмена данными по шине AHB;
  • PCLK – для взаимодействия с внутренними регистрами TFT-контроллера;
  • LCD_CLK – для формирования сигналов для связи с дисплеем.

Для связи с TFT-дисплеями LTDC использует параллельный 24-битный RGB-интерфейс и дополнительные сигналы вертикальной и горизонтальной развертки. Это подразумевает работу с дисплеями без собственной экранной памяти. Место для экранной памяти может быть выделено в собственном ОЗУ микроконтроллера или во внешней памяти, подключаемой с помощью контроллера внешней памяти (Flexible memory controller, FMC). Для хранения самих изображений может использоваться встроенная Flash или внешняя память, подключаемая с помощью FMC или QuadSPI.

LTDC позволяет гибко настраивать тайминги развертки, в том числе слепые зоны (VBP, VFP, HBP и HFP), длительность импульсов синхронизации HSYNC и VSYNC (рисунок 72).

Рис. 72. Тайминги развертки

Рис. 72. Тайминги развертки

LTDC поддерживает работу с восемью форматами цвета (рисунок 73): ARGB8888, RGB888, RGB565, ARGB1555, ARGB4444, L8, AL44, AL88. Первые пять форматов содержат информацию о цвете, а последние три формата являются ссылочными, то есть содержат ссылку на таблицу цветов CLUT (Color Look-up Table).

Рис. 73. Форматы цветов поддерживаемые LTDC

Рис. 73. Форматы цветов поддерживаемые LTDC

Собственным внутренним форматом LTDC является ARGB8888. При поступлении данных других форматов происходит преобразование с помощью аппаратного конвертера форматов PFC (Pixel Format Converter). На рисунке 74 представлен пример такого преобразования.

Рис. 74. Пример преобразования формата из RGB565 в ARG8888

Рис. 74. Пример преобразования формата из RGB565 в ARG8888

LTDC работает с двумя экранными слоями, параметры отображения каждого из которых могут быть гибко настроены. Например, пользователь самостоятельно задает размер и положение окна (рисунок 75). Кроме того, LTDC использует еще и фоновый слой.

Рис. 75. Программируемые параметры слоя

Рис. 75. Программируемые параметры слоя

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

Рис. 76. Смешивание двух слоев (фоновый слой не показан)

Рис. 76. Смешивание двух слоев (фоновый слой не показан)

Полезной функцией LTDC является хромакей. Хромакей позволяет определить заданный цвет как прозрачный с помощью регистра LTDC_LxCKCR (рисунок 77).

Рис. 77. Пример использования хромакея

Рис. 77. Пример использования хромакея

LTDC остается активным в режимах Run и Sleep. При переходе микроконтроллера в режим Stop деятельность LTDC прекращается, но содержимое регистров конфигурации сохраняется. После возвращения режима Standby необходимо заново инициализировать LTDC.

JPEG-кодек

Встроенный JPEG-кодек микроконтроллеров STM32F7 представляет собой аппаратный ускоритель, позволяющий кодировать и декодировать JPEG-изображения в соответствии со стандартом ISO/IEC 10918-1. Кодек способен автоматически генерировать JPEG-заголовок и выполнять его парсинг.

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

JPEG-кодек работает со стандартной глубиной пикселей 8 бит на канал. Кодирование и декодирование выполняется с высокой скоростью – за один такт обрабатывается один пиксель. Кодек поддерживает до четырех таблиц квантования и четырех таблиц Хаффмана. Все таблицы являются полностью программируемыми.

Операции кодирования и декодирования осуществляются только по отдельности. При декодировании выполняется автоматический парсинг заголовка. Таблицы помещаются во внутреннюю память ОЗУ кодека. Данные в кодек поступают через входной 32-байтный FIFO-буфер. Декодированные данные также буферизируются в выходном 32-байтном FIFO-буфере. При кодировании осуществляется обратный процесс. JPEG-кодек автоматически генерирует заголовок, записывая информацию из своего внутреннего ОЗУ. Загрузка исходных данных также ведется через входной 32-байтный FIFO-буфер, а результаты доступны через выходной 32-байтный FIFO-буфер.

Стоит отметить, что для работы с FIFO-буферами есть возможность использования DMA, что позволяет практически полностью автоматизировать работу с JPEG-изображениями.

JPEG-кодек генерирует шесть видов прерываний и флагов:

  • Input FIFO threshold сообщает процессору или DMA о превышении заданного порога заполнения входного буфера;
  • Input FIFO not full сообщает процессору или DMA о том, что входной буфера не заполнен;
  • Output FIFO threshold сообщает процессору или DMA о превышении заданного порога заполнения выходного буфера;
  • Output FIFO not empty сообщает процессору или DMA о том, что выходной буфер не заполнен;
  • End of Conversation сообщает об окончании процесса преобразования (кодирования или декодирования);
  • Header Parsing Done сообщает об окончании процесса парсинга заголовка.

JPEG-кодек остается активным в режимах Run и Sleep. При переходе микроконтроллера в режим Stop деятельность JPEG-кодека прекращается, но содержимое регистров конфигурации сохраняется. После возвращения режима Standby необходимо заново инициализировать JPEG-кодек.

MDIOS

Интерфейс MDIO обеспечивает высокоскоростной обмен данными между ведущим и несколькими ведомыми микросхемами с помощью двухпроводной линии. В ходе транзакции ведущий может вычитывать/обновлять содержимое MDIO-регистров одного из ведомых устройств. Контроллер MDIOS в STM32F7 поддерживает все необходимые для обмена с хостом функции, описанные в IEEE RFC 802.3, глава 22.

MDIOS состоит из двух основных частей: адаптера (MDIOS_Adapter) и интерфейса с APB (APB_Interface), что отображено на рисунке 78. MDIOS-адаптер отвечает за непосредственную реализацию протокола MDIOS: декодирует сообщения, выполняет проверку целостности, генерирует прерывания. Интерфейс с шиной APB отвечает за взаимодействие адаптера с системой микроконтроллера посредством набора регистров.

Рис. 78. Блок-схема MDIOS

Рис. 78. Блок-схема MDIOS

Интерфейс с APB работает на частоте шины APB (PCLK), в то время как MDIOS-адаптер использует собственную частоту (MDIOS_MDC). Стоит отметить, что частота PCLK должна быть как минимум в 1,5 раза выше, чем MDIOS_MDC. Например, если MDIOS работает на максимальной частоте 20 МГц, то частота PCLK должна быть не менее 30 МГц.

Как уже было сказано, для передачи сообщений используется двухпроводная шина, состоящая из линии данных MDIOS_MDIO и линии тактирования MDIOS_MDC. Перед началом сообщения формируется преамбула длиной 32-бита, состоящая из «1», которая нужна для синхронизации. Если синхронизация была неуспешной, MDIOS-адаптер формирует ошибку, выставляя бит PERF в регистре MDIOS_SR. Для отключений преамбулы необходимо установить бит DPC в регистре MDIOS_SR.

Сами сообщения имеют 32-битный формат (рисунки 79 и 80):

Рис. 79. Формат сообщения MDIO при записи данных

Рис. 79. Формат сообщения MDIO при записи данных

Рис. 80. Формат сообщения MDIO при чтении данных

Рис. 80. Формат сообщения MDIO при чтении данных

  • 2 стартовых бита, всегда имеющие значение «01». При неправильной комбинации устанавливается флаг SERF и возможна генерация прерывания;
  • 2 бита кода операции: чтение – «10», запись – «01»;
  • 5 битов адреса для выбора ведомого;
  • 5 битов для выбора регистра (до 32 регистров);
  • 2 бита, передачи управления (turnaround). Так как ведущий и ведомый совместно используют линию MDIOS_MDIO для полудуплексного обмена, то необходимо обеспечить бесконфликтную передачу шины, если это требуется (рисунок 89). Если ведущий в поле кода операции ранее передал «01» (запись), то смены управления не происходит, так как далее биты данных по-прежнему будет передавать сам ведущий. Чтобы подтвердить это, он должен передать в битах turnaround значение «10». Если же планируется чтение, данных, то ведущий должен передать управление, а ведомый его принять. Поэтому в течение первого бита ведущий переводит свой вывод MDIOS_MDIO на вход (высокоимпедансное состояние «1»), а ведомый, наоборот, в состояние выхода, после чего в течение второго бита передает «0». В случае ошибки формируется флаг TERF и возможна генерация прерывания;
  • 16 битов данных. При записи данные передает ведущий, а при чтении – ведомый.

MDIOS имеет два набора 16-битных регистров. Первый набор включает 32 регистра и используется для записи ведущим. Второй набор также содержит 32 регистра, но предназначен для чтения ведущим. Каждый регистр имеет свой флаг для индикации событий чтения/записи: WRF[31:0] в регистре MDIOS_WRFR, RDF[31:0] в регистре MDIOS_RDFR. Эти флаги могут использоваться для формирования прерываний и пробуждения микроконтроллера из спящих режимов Sleep и Stop.

MDIO остается активным в режимах Run, Sleep и STOP. При переходе микроконтроллера в режим Stop прерывания от MDIO могут использоваться в качестве источника пробуждения. После возвращения режима Standby необходимо заново инициализировать MDIO.

Аудиоинтерфейс SAI

SAI (Serial Audio Interface) – периферийный модуль, позволяющий микроконтроллерам STM32F7 взаимодействовать с различными внешними аудиоустройствами, такими, например, как усилители, ЦАП, АЦП, аудиопроцессоры и кодеки. SAI имеет возможность гибкой настройки и поддерживает широкий спектр аудиопротоколов.

В состав микроконтроллеров STM32F7 входят два модуля SAI, – SAI1 и SAI2, – каждый из которых содержит по два независимых блока: аудиоблок A и аудиоблок B (рисунок 81). Оба блока имеют двухдоменную систему тактирования. Регистры управления работают с APB-шиной на частоте PCLK. Ядро SAI использует собственный сигнал тактирования (SAI_CK_A и SAI_CK_B). В состав аудиоблоков входят: тактовый генератор, 32-битный сдвиговый регистр, автомат состояний, FIFO-буфер.

Рис. 81. Блок-схема SAI

Рис. 81. Блок-схема SAI

Каждый аудиоблок может быть индивидуально настроен для реализации какого-либо протокола. При этом все аудиоблоки имеют по четыре собственных вывода для взаимодействия с внешними устройствами: FS используется для синхронизации кадров, SCK – сигнал тактирования, SD – вывод последовательных данных, MCLK – тактовый сигнал ведущего. В то же время пользователь может настроить блоки для работы в синхронном режиме, тогда часть внешних выводов освобождается для других целей.

Блоки SAI способны выступать в качестве ведущих и ведомых. При работе в режиме ведущего необходимо генерировать сигналы синхронизации и тактирования (FS, SCK, MCLK). Для этого у каждого аудиоблока есть встроенный генератор (рисунок 82).

Рис. 82. Тактирование SAI

Рис. 82. Тактирование SAI

Блоки SAI позволяют выполнять чрезвычайно гибкую настройку формата аудиокадра (рисунок 83). У пользователей есть возможность задания длины сообщения, режима выравнивания данных, длительности кадра, полярности сигналов, числа слотов и так далее. Благодаря этому модули SAI в микроконтроллерах STM32F7 способны реализовывать различные протоколы:

Рис. 83. Формат кадра SAI

Рис. 83. Формат кадра SAI

  • Универсальные протоколы, например, I2S Philips standard, I2S MSB или LSB, TDM, PCM;
  • SPDIF;
  • AC’97.

Режим Free protocol mode является самым гибким с точки зрения настройки параметров.

Режим SPDIF использует жестко заданный формат сообщений с длинной поля данных 24 бита, согласно IEC60958 (рисунок 84). При этом для взаимодействия с внешними устройствами необходимы только линии данных.

Рис. 84. Формат блоков SPDIF

Рис. 84. Формат блоков SPDIF

В режиме AC’97 блоки SAI также используют жестко заданный формат сообщений (рисунок 85).

Рис. 85. Формат кадров AC’97

Рис. 85. Формат кадров AC’97

Для ускорения процесса передачи и приема данных может использоваться DMA.

Блоки SAI остаются активными в режимах Run и Sleep. При переходе микроконтроллера в режим Stop деятельность SAI прекращается, но содержимое регистров конфигурации сохраняется. После возвращения режима Standby необходимо заново инициализировать SAI.

SDMMC

SDMMC – интерфейс, который обеспечивает взаимодействие микроконтроллеров STM32F7 с картами памяти MultiMediaCards (MMC) и SD, а также с устройствами SDIO. С помощью MMC/SD-карт память микроконтроллеров может быть существенно расширена.

SDMMC-интерфейс в STM32F7 совместим со следующими стандартами:

  • с MultiMediaCard System Specification Version2 и его более ранними версиями (обратная совместимость);
  • с SD Memory Card Specifications Version 2.0;
  • с SD I/O Card Specification Version 2.0.

SDMMC-контроллер поддерживает работу с шиной данных различной ширины: 1/4/8 бит. Для разгрузки процессора обмен данными может вестись с помощью DMA. Скорость обмена составляет 400 кГц в фазе инициализации и до 50 МГц в фазе обмена.

Упрощенная блок-схема SDMMC-контроллера приведена на рисунке 86. Схема состоит из двух блоков: APB-интерфейса и SDMMC-адаптера. APB-интерфейс отвечает за настройку SDMMC с помощью регистров управления. SDMMC-адаптер выступает в роли ведущего на шине SD/MMC и реализует все функции, связанные с обменом с внешними картами памяти. Тактирование SDMMC-адаптера производится с помощью отдельного тактового сигнала SDMMCCLK.

Рис. 86. Блок-схема SDMMC

Рис. 86. Блок-схема SDMMC

Блок-схема самого адаптера представлена на рисунке 87. На нем показано, что в состав адаптера входит блок управления и блоки, отвечающие за обработку команд и данных.

Рис. 87. Блок-схема SDMMC-адаптера

Рис. 87. Блок-схема SDMMC-адаптера

Блок управления содержит модули питания и тактирования (рисунок 88). Тактирование SDMMC выполняется с помощью SDMMCCLK. Этот сигнал используется для формирования выходного тактового сигнала SDMM_CK. Внутри модуля тактирования SDMMCCLK проходит через 7-битный делитель, поэтому SDMM_CK не превышает ½ от SDMMCCLK. Если же в приложении требуется обеспечить минимальное потребление, то генерация SDMM_CK может быть отключена в те моменты, когда обмен по шине не производится.

Рис. 88. Схема блока управления

Рис. 88. Схема блока управления

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

Рис. 89. Обработка команд в SDMMC

Рис. 89. Обработка команд в SDMMC

Блок обработки выполняет прием и передачу данных (рисунок 90). Передача и прием данных осуществляется с помощью сдвигового регистра, при этом за один такт SDMM_CK возможна пересылка 1/4/8 бит информации в зависимости от разрядности шины. Блок обработки данных также имеет возможность аппаратного вычисления и проверки контрольной суммы. Для хранения передаваемых и принимаемых данных используется FIFO-буфер, расположенный в домене APB. Буфер имеет 32 ячейки разрядностью 32 бита.

Рис. 90. Обработка данных в SDMMC

Рис. 90. Обработка данных в SDMMC

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

Блоки SDMMC остаются активными в режимах Run и Sleep. При переходе микроконтроллера в режим Stop деятельность SDMMC прекращается, но содержимое регистров конфигурации сохраняется. После возвращения режима Standby необходимо заново инициализировать SDMMC.

SPDIFRX

SPDIFRX – интерфейс, который позволяет микроконтроллерам STM32F7 принимать до четырех входных аудиопотоков S/PDIF совместимых с IEC-60958 и IEC-61937.

Блок-схема SPDIFRX представлена на рисунке 91. Регистры управления SPDIFRX подключены к шине APB и тактируются с помощью сигнала PCLK. Для тактирования ядра SPDIFRX (SPDIFRX_DC) используется сигнал SPDIF_CLK. Ядро SPDIFRX_DC включает три основных блока:

Рис. 91. Блок-схема SPDIFRX

Рис. 91. Блок-схема SPDIFRX

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

Основными особенностями SPDIFRX являются:

  • возможность работы с четырьмя аудиовходами. При этом одновременно можно декодировать только один канал;
  • автоматическое определение скорости передачи символов. Если частота SPDIF_CLK достаточно высока, то SPDIFRX способен декодировать входной поток данных и определять частоту потока;
  • поддержка некодированных аудиопотоков, описанных в IEC-60958;
  • поддержка кодированных аудиопотоков, например, Dolby Digital, описанных в IEC-61937;
  • поддержка двух DMA-каналов. Один используется для пересылки данных, а второй выделен для управления и пересылки служебной информации;
  • возможность использования широкого спектра прерываний.

Максимальная частота аудиопотока SPDIFRX составляет 192 кГц. Для обеспечения требуемой скорости необходимо учитывать ограничения, накладываемые на минимальную частоту тактового сигнала SPDIFRX_CLK (таблица 13).

Таблица 13. Минимальные значения SPDIFRX_CLK для различных скоростей аудиопотока

Частота следования символов, МГц Частота SPDIFRX_CLK, МГц Скорость потока, кГц
3,072 33,8 48
6,144 67,6 96
12,288 135,2 192

Стандарт IEC-60958 описывает блоковую организацию аудиопотока (рисунок 92). Каждый блок содержит 192 кадра, а каждый кадр включает два подкадра.

Рис. 92. Формат блока S/PDIF

Рис. 92. Формат блока S/PDIF

Подкадр в свою очередь имеет длину 32 бита и содержит три поля (рисунок 93):

Рис. 93. Формат подкадра S/PDIF

Рис. 93. Формат подкадра S/PDIF

  • 4-битная прембула, необходимая для выполнения автоматической синхронизации;
  • 24 бита полезных данных;
  • биты статуса: V, U, CS, P.

Стандарт IEC-61937 подразумевает передачу PCM-потока с помощью кадров IEC-60958. Для этого в подкадре S/PDIF, как было показано выше, переназначено поле данных длиной 24 бита (с 4-го по 27-ой включительно). Кроме того, для синхронизации на уровне IEC-61937 определена специальная 64-битная преамбула, которая также передается в пользовательских полях подкадра S/PDIF.

На рисунке 94 представлена диаграмма переходов SPDIFRX. При возникновении ошибок SPDIFRX автоматически переходит в режим STATE_STOP.

Рис. 94. Состояния SPDIFRX

Рис. 94. Состояния SPDIFRX

Для приема данных SPDIFRX использует 32-битный сдвоенный буфер. Считывание принятых данных можно производить вручную или с помощью DMA.

SPDIFRX формирует несколько различных флагов ошибок:

  • FERR сообщает об ошибке формата сообщений;
  • SERR сообщает об ошибке синхронизации;
  • TERR сообщает о переполнении счетчика длины сообщения. Обычно это происходит при отсутствии сигнала на выбранном входе;
  • PERR сообщает об ошибке проверки бита четности;
  • OVR сообщает о переполнении при приеме данных. Стоит отметить, что SPDIFRX предлагает некоторые механизмы для обработки ситуаций, связанных с переполнением.

SPDIFRX остается активным в режимах Run и Sleep. При переходе микроконтроллера в режим Stop деятельность SPDIFRX прекращается, но содержимое регистров конфигурации сохраняется. После возвращения режима Standby необходимо заново инициализировать SPDIFRX.

SPI-интерфейс

SPI (Serial Peripheral Interface) – популярный интерфейс, позволяющий микроконтроллерам взаимодействовать с широким спектром внешних устройств, например, АЦП, расширителями портов ввода-вывода, дисплеями, другими микроконтроллерами и прочим. В микроконтроллерах STM32F7 реализовано до шести SPI-интерфейсов, каждый из которых позволяет осуществлять гибкую настройку параметров передачи данных.

Блок-схема SPI-контроллера представлена на рисунке 95. В его состав входит схема управления, FIFO-буферы, сдвиговый регистр, генератор тактового сигнала SCK, блок для аппаратного вычисления контрольной суммы (CRC). Для связи с внешними устройствами SPI-интерфейс использует четыре линии:

Рис. 95. Блок-схема SPI-интерфейса

Рис. 95. Блок-схема SPI-интерфейса

  • MOSI, по которой ведущий передает, а ведомый принимает данные;
  • MISO, по которой ведомый передает, а ведущий принимает данные;
  • SCK – тактовый сигнал, формируемый ведущим;
  • NSS – сигнал выбора ведомого. В зависимости от настроек SPI, эта же линия используется для синхронизации кадров и обнаружения конфликтов между ведущими.

В классическом случае SPI использует все четыре линии для организации двустороннего обмена данными между ведущим и ведомым (рисунок 96). Ведущий начинает обмен с выбора ведомого с помощью сигнала NSS. Далее происходит передача данных по фронту или срезу тактового сигнала SCK. Стоит отметить, что в данном случае возможна полнодуплексная передача, при которой и ведущий, и ведомый передают данные одновременно.

Рис. 96. Схема подключения при полнодуплексном обмене

Рис. 96. Схема подключения при полнодуплексном обмене

Использование всех линий требуется не всегда. Иногда ведомый только принимает данные. В таких случаях линия MISO остается незадействованной (рисунок 97). Бывают и противоположные ситуации, когда ведущий только принимает данные от ведомого, тогда уже линия MOSI остается незадействованной. Сигнал выбора NSS также не всегда используется.

Рис. 97. Схема подключения при однонаправленном обмене

Рис. 97. Схема подключения при однонаправленном обмене

SPI-контроллер в STM32F7 позволяет организовывать полудуплексный обмен. В таких случаях линия MOSI ведущего подключается к линии MISO ведомого (рисунок 98). При этом в качестве передатчика может выступать как ведущий, так и ведомый. Для предотвращения аварийных ситуаций, когда оба устройства одновременно пытаются воспользоваться линией данных, на ней рекомендуется размещать защитный резистор.

Рис. 98. Схема подключения при полудуплексном обмене

Рис. 98. Схема подключения при полудуплексном обмене

Если на шине присутствует только один ведомый, то сигнал NSS может в некоторых случаях не использоваться. Однако если один ведущий обменивается данными с несколькими ведомыми, потребуется сразу несколько независимых линий выбора ведомых (рисунок 99). Для этой цели используются обычные порты ввода/вывода.

Рис. 99. Схема подключения при обмене с несколькими ведомыми

Рис. 99. Схема подключения при обмене с несколькими ведомыми

Возможна организация двунаправленного обмена между несколькими ведущими (рисунок 100). Особое внимание следует уделить подключению сигналов выбора NSS. Вывод NSS одного ведущего должен подключаться к простому GPIO другого, и наоборот.

Рис. 100. Обмен между двумя ведущими

Рис. 100. Обмен между двумя ведущими

SPI-интерфейс может использовать DMA для загрузки и выгрузки данных. Кроме того, встроенный блок вычисления контрольной суммы позволяет выполнять обмен практически без привлечения процессорного ядра. Все это значительно уменьшает нагрузку на процессор.

SPI остается активным в режимах Run и Sleep. При переходе микроконтроллера в режим Stop деятельность SPI прекращается, но содержимое регистров конфигурации сохраняется. После возвращения режима Standby необходимо заново инициализировать SPI.

USART

USART является чрезвычайно гибким интерфейсом и поддерживает различные варианты обмена данными: асинхронный обмен, синхронный обмен, LIN, IrDA, взаимодействие со смарт-картами ISO/IEC 7816. Кроме того, USART имеет несколько полезных функций для реализации протокола Modbus.

В микроконтроллерах STM32F7 реализовано восемь модулей USART с небольшими отличиями в функционале. В частности, UART4/UART5/UART7/UART8 не поддерживают обмен со смарт-картами (таблица 14).

Таблица 14. Функционал модулей USART в микроконтроллерах STM32F7

Особенность USART1/USART2/
USART3/USART6
UART4/UART5/
UART7/UART8
Аппаратный контроль потока для модема + +
Использование DMA + +
Мультипроцессорная связь + +
Синхронный режим +
Режим обмена со Smartcard +
Однопроводной полудуплексный обмен + +
IrDA SIR ENDEC + +
Режим LIN + +
Прерывание передатчика по таймауту + +
Режим Modbus + +
Автоматическое определение скорости обмена + +
Сигнал разрешения для драйвера + +
Длина кадра USART 7/8/9 бит

Блок-схема USART представлена на рисунке 101. Схема состоит из двух доменов тактирования. Первый домен включает регистры управления и состояния, которые взаимодействуют с шиной APB и работают с тактовой частотой PCLK. В качестве источника тактирования для основного домена USART может выступать SYSCLK, PCLK, HIS и LSE.

Рис. 101. Блок-схема USART

Рис. 101. Блок-схема USART

Взаимодействие USART с внешним миром происходит с помощью пяти выводов:

  • RX – вход приемника;
  • TX – выход передатчика;
  • CK – выход тактового сигнала. Используется при синхронном обмене в режиме SPI и при взаимодействии со смарт-картами;
  • СTS и RTS – сигналы управления потоком при работе в режиме RS-232;
  • DE – сигнал разрешения работы приемника. Используется при реализации RS-485.

USART позволяет гибко настраивать формат сообщений. Каждое сообщение начинается старт-битом. Далее следуют биты данных. Пользователи могут использовать длину поля данных 7/8/9 бит (рисунок 102). При необходимости после данных передается бит паритета. Затем следуют стоп-биты. Длину поля стоп-битов также можно настроить (0/1/1,5/2 бита).

Рис. 102. Формат сообщений USART

Рис. 102. Формат сообщений USART

USART обеспечивает различные режимы обмена данными. Для дуплексного обмена будет достаточно всего двух линий: Tx и Rx. При этом выход каждого передатчика подключается ко входу другого.

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

В режиме RS-232 интерфейс USART использует четыре линии для организации потока данных между устройствами (рисунок 103). Линии СTS и RTS помогают согласовать и синхронизировать работу приемников и передатчиков.

Рис. 103. Аппаратный контроль потока (характерен для RS-232)

Рис. 103. Аппаратный контроль потока (характерен для RS-232)

Для реализации интерфейса RS-485 используются внешние приемопередатчики, которые должны иметь возможность переключения между режимом приема и передачи, то есть освобождать общую дифференциальную шину. Встроенный USART в микроконтроллерах STM32F7 позволяет выполнять управление активностью передатчика с помощью дополнительного выхода DE, который делит общий вывод с сигналом RTS.

USART может работать в синхронном режиме, например, при взаимодействии с SPI-устройствами (рисунок 104). При этом старт- и стоп-биты исключаются из формата кадра.

Рис. 104. Пример синхронного обмена (режим SPI)

Рис. 104. Пример синхронного обмена (режим SPI)

Для работы со смарт-картами применяется полудуплексный режим обмена и двухпроводная шина (ISO/IEC 7816). Линия Tx попеременно используется для передачи и приема данных, а линия CK – для тактирования.

USART поддерживает IrDA и позволяет работать со скоростями до 115,2 кбит/с.

USART позволяет работать с широким спектром прерываний и поддерживает обмен с привлечением DMA (рисунок 105). Это освобождает процессорное ядро от рутинного полинга и операций по пересылке данных.

Рис. 105. Прерывания USART

Рис. 105. Прерывания USART

USART остается активным в режимах Run и Sleep. При переходе микроконтроллера в режим Stop деятельность USART прекращается, но содержимое регистров конфигурации сохраняется. После возвращения режима Standby необходимо заново инициализировать USART.

USB

В микроконтроллерах STM32F7 есть поддержка интерфейсов USB FS и USB HS. Встроенный контроллер USB FS позволяет обмениваться данными со внешними устройствами на скоростях до 12 Мбит/с и поддерживает спецификацию On-The-Go для USB 2.0. Таким образом, у пользователя есть возможность работы как в режиме ведомого, так и в режиме хоста. Поддержка протокола BC1.2 позволяет STM32F7 работать со внешними зарядными устройствами с током до 1,5 А. Все те же режимы характерны и для контроллера USB HS. Особенности реализации интерфейсов USB OTG_FS и USB OTG_HS приведены в таблице 15.

Таблица 15. Особенности интерфейсов USB OTG_FS и USB OTG_HS

Особенности реализации OTG_FS OTG_HS
Количество двунаправленных конечных точек (включая EP0) 6 9
Количество каналов хоста 12 16
Объем выделенного ОЗУ, кбайт 1,2 4
Поддержка USB 2.0 LPM (link power management) +
Версия OTG 2
Поддержка протокола ADP (Attach detection protocol)
Поддержка BCD (Battery charging detection)

Блок-схема контроллера USB OTG_FS представлена на рисунке 106. Как показано на схеме, USB-контроллер состоит из двух доменов: домена AHB и домена с тактированием от специального сигнала 48 МГц. В зависимости от требований конкретного приложения, для реализации USB может потребоваться низкочастотный или высокочастотный резонатор. Встроенный модуль PHY обеспечивает согласование физических сигналов шины USB и ядра OTG FS.

Рис. 106. Блок-схема USB OTG_FS

Рис. 106. Блок-схема USB OTG_FS

Блок-схема контроллера USB OTG_HS представлена на рисунке 107. Она схожа с рассмотренной выше блок-схемой USB OTG_HS, но здесь у пользователей есть возможность подключения внешнего ULPI-трансивера.

Рис. 107. Блок схема USB OTG_HS

Рис. 107. Блок схема USB OTG_HS

USB-контроллеры могут работать в двух режимах: в режиме ведомого устройства или в режиме хоста. В зависимости от конкретного приложения для реализации USB-устройства может потребоваться внешний регулятор (для питания микроконтроллера от шины USB), интеллектуальный ключ (для ограничения тока подключаемых устройств), внешний резонатор и элементы защита от статики (рисунок 108).

Рис. 108. Универсальная схема построения USB-порта

Рис. 108. Универсальная схема построения USB-порта

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

USB остается активным в режимах Run и Sleep. При переходе микроконтроллера в режим Stop деятельность USB прекращается, но содержимое регистров конфигурации сохраняется. После возвращения режима Standby необходимо заново инициализировать USB.

Графический ускоритель Chrome-Art (DMA2D)

Графический ускоритель Chrome-Art (DMA2D) представляет собой специализированный контроллер прямого доступа к памяти с возможностью потоковой обработки графических данных. Другими словами, DMA2D не только освобождает процессор от рутинных операций, связанных с пересылкой данных, но и осуществляет различные операции, например, преобразование формата цвета пикселей, смешивание и антиалайзинг.

Блок-схема DMA2D представлена на рисунке 109. За один такт Chrome-Art может выполнить обработку одного пикселя. Для этого в составе DMA2D есть два канала: FG PFC и BG PFC. Первый служит для преобразования исходного формата цвета пикселя, а второй – для преобразования формата цвета фона. Далее выполняется α-смешивание. При необходимости формат цвета еще раз конвертируется на выходе.

Рис. 109. Блок-схема Chrome-Art (DMA2D)

Рис. 109. Блок-схема Chrome-Art (DMA2D)

Chrome-Art поддерживает следующие режимы пересылки данных:

  • Register-to-memory, который чаще всего нужен для заливки прямоугольной области заданным цветом;
  • Memory-to-memory, осуществляющий копирование исходного изображения (или его части) в заданную область памяти;
  • Memory-to-memory with Pixel Format Conversion, копирующий исходное изображение (или его часть) в заданную область памяти с дополнительным преобразованием формата цвета пикселей;
  • Memory-to-memory with Pixel Format Conversion and Blending, осуществляющий смешивание изображений (или их частей) с одинаковыми или различными форматами цветов пикселей и помещение в заданную область памяти с дополнительным преобразованием формата цвета пикселей.

Пользователь имеет возможность настройки основных параметров пересылки: адресов, размеров и позиций изображений, формата цветов, прозрачности.

Chrome-Art формирует следующие прерывания:

  • Configuration error – ошибка конфигурации. Соответствующий флаг – CEIF. Разрешение прерывания активируется с помощью бита CEIE.
  • CLUT transfer complete – завершение пересылки таблицы цветов данных. Соответствующий флаг – CTCIF. Разрешение прерывания активируется с помощью бита CTCIE.
  • CLUT access error – ошибка доступа. Соответствующий флаг – CAEIF. Разрешение прерывания активируется с помощью бита CAEIE.
  • Transfer watermark reached – достигнута граничная линия (задается пользователем). Соответствующий флаг – TWF. Разрешение прерывания активируется с помощью бита TWIE.
  • Transfer complete – завершена пересылка данных. Соответствующий флаг – TCIF. Разрешение прерывания активируется с помощью бита TCIE.
  • Transfer error – ошибка пересылки данных. Соответствующий флаг – TEIF. Разрешение прерывания активируется с помощью бита TEIE.

DMA2D остается активным в режимах Run и Sleep. При переходе микроконтроллера в режим Stop деятельность DMA2D прекращается, но содержимое регистров конфигурации сохраняется. После возвращения режима Standby необходимо заново инициализировать DMA2D.

Независимый сторожевой таймер IWDG

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

Блок-схема IWDG представлена на рисунке 110. Основой сторожевого таймера является вычитающий 12-битный счетчик. Начальное значение счетчика определяет пользователь с помощью регистра автозагрузки IWDG_RLR (по умолчанию используется значение 0xFFF). Для тактирования IWDG используется встроенный низкочастотный генератор LSI 32 кГц. Таким образом, работа таймера не зависит от системного тактового сигнала. Исходный тактовый сигнал может быть дополнительно поделен с помощью 8-битного делителя.

Рис. 110. Блок-схема независимого сторожевого таймера IWDG

Рис. 110. Блок-схема независимого сторожевого таймера IWDG

Еще одной особенностью IWDG является размещение в двух доменах питания. Регистры настройки и управления находятся в домене с питанием Vcore, а счетчик с делителем в домене Vdd. Это позволяет сторожевому таймеру работать даже в режимах Stop и Standby.

После запуска таймер IWDG начинает счет (по умолчанию с 0xFFF). Для обновления счетчика необходимо записать значение 0x0000 AAAA в регистр управления IWDG_KEY. По достижении значения 0x0000 происходит генерация сигнала сброса. Стоит отметить, что после запуска IWDG его можно остановить только путем сброса микроконтроллера.

Существует и альтернативный сценарий работы IWDG с использованием оконного режима. В составе IWDG есть регистр IWDG_WINR (не показан на рисунке 76), в котором хранится минимальный интервал обновления. Если программа попытается обновить счетчик слишком рано – еще до того, как он достигнет значения, записанного в IWDG_WINR, – то будет сгенерирован сигнал сброса микроконтроллера. Такой режим нужен для защиты от возможного зацикливания той части программы, в которой реализована функция сброса IWDG.

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

  • записать в регистр управления IWDG_KEY значение 0x0000 СССС для запуска счетчика;
  • записать в регистр управления IWDG_KEY значение 0x0000 5555 для снятия защиты от записи регистров IWDG_PR, IWDG_RLR и IWDG_WINR;
  • задать делитель тактового сигнала, записав необходимое значение в регистр IWDG_PR;
  • задать значение автообновления счетчика, записав его в регистр IWDG_RLR;
  • убедиться, что биты состояния в регистре IWDG_SR сброшены;
  • если требуется активировать оконный режим, то следует записать граничное значение в регистр IWDG_WINR;
  • обновить счетчик, для чего записать в регистр управления IWDG_KEY значение 0x0000 AAAA.

Если в процессе работы был сформирован сброс по сигналу от сторожевого таймера, то об этом можно узнать по флагу IWDHRSTF регистра RCC_CSR.

У IWDG есть особенность работы в режиме отладки. По умолчанию в процессе отладки процессорное ядро останавливается, а IWDG продолжает работать. Чтобы избежать сброса, необходимо остановить счетчик. Для этого следует установить бит DBG_IWDG_STOP в регистре DBGMCU_APB1_FZ.

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

Оконный сторожевой таймер WWDG

WWDG, как и IWDG, необходим для защиты от критических ошибок программного обеспечения, таких, например, как зацикливание. WWDG позволяет работать в оконном режиме и формировать не только сигнал сброса, но и прерывание Early Wakeup Interrupt, которое предупреждает программу о скором сбросе системы.

Блок-схема WWDG представлена на рисунке 111. Оконный сторожевой таймер построен на базе 7-битного вычитающего счетчика. Для тактирования используется сигнал PCLK, поделенный с помощью дополнительных встроенных делителей. При обновлении WWDG в счетчик записывается значение, определяемое пользователем и хранящееся в поле T[6:0] регистра WWDG_CR. Длительность минимального периода обновления хранится в поле W[6:0] регистра WWDG_CFR.

Рис. 111. Блок-схема оконного сторожевого таймера WWDG

Рис. 111. Блок-схема оконного сторожевого таймера WWDG

После активации оконного таймера содержимое вычитающего счетчика начинает уменьшаться (рисунок 112). Для тактирования используется сигнал PCLK, поделенный на величину 4096·2WWDG[1:0]. Поле WWDG[1:0] находится в регистре WWDG_CFR. Рассмотрим пример. Если частота шины APB PCLK = 48 МГц, WWDG[1:0] = 3, а T[6:0] = 63, то время таймаута сторожевого таймера составит (формула 1):

$$t_{WWDG}=\frac{1}{48000}\times 4096\times 2^3\times (63+1)=43.69\:мс\qquad{\mathrm{(}}{1}{\mathrm{)}}$$

Если в процессе работы значение счетчика становится меньше 0x40 (то есть 0x3F), формируется сигнал сброса. Сигнал сброса также генерируется, если программа попытается обновить счетчик слишком рано (рисунок 112). Как уже было сказано выше, длительность минимального периода обновления хранится в поле W[6:0] регистра WWDG_CFR.

Рис. 112. Принцип работы оконного сторожевого таймера WWDG

Рис. 112. Принцип работы оконного сторожевого таймера WWDG

Кроме того, у пользователей есть возможность генерации предупреждающего прерывания (Early Wakeup Interrupt) при достижении счетчиком значения 0x40, то есть за один такт до формирования сигнала сброса (рисунок 112). При возникновении такого прерывания у пользовательской программы остается достаточно времени для экстренного сброса сторожевого таймера WWDG. Для разрешения предупреждающего прерывания необходимо установить бит EWI в регистре WWDG_CFR. О возникновении события сообщает флаг EWIF регистра WWDG_SR.

В отличие от независимого сторожевого таймера, оконный сторожевой таймер WWDG является стандартным периферийным блоком и остается активным только в режимах Run и Sleep. При переходе микроконтроллера в режим Stop или Standby деятельность WWDG прекращается.

LPTIM

LPTIM (Low-power Timer) – малопотребляющий 16-битный таймер, позволяющий реализовывать различные приложения с невысоким энергопотреблением. Благодаря независимому тактированию LPTIM может работать во всех спящих режимах за исключением Standby.

Блок-схема таймера LPTIM представлена на рисунке 113. На схеме показано, что регистры управления и состояния находятся в домене тактирования APB, в то время как ядро таймера использует независимое тактирование. В качестве источника независимого тактирования могут выступать сигналы PCLK, HIS, LSI и LSE, кроме того, для тактирования может использоваться сигнал, поступающий со входа Input1. В последнем случае речь идет о подсчете внешних импульсов. Такой режим идеально подходит для различных умных счетчиков.

Рис. 113. Блок-схема таймера LPTIM

Рис. 113. Блок-схема таймера LPTIM

LPTIM построен на базе 16-битного счетчика (LPTIM_CNT), помимо этого, в состав таймера входят фильтры входных сигналов, энкодер, делитель тактового сигнала и регистры управления. 16-битные регистры сравнения (LPTIM_CMP) и перезагрузки (LPTIM_ARR) используются для формирования ШИМ-сигналов. Энкодер необходим для работы с инкрементальными квадратурными датчиками.

LPTIM имеет несколько режимов работы. Он способен формировать различные сигналы на выходе OUT даже при отключенном системном тактировании (рисунок 114). Настройка режима работы производится с помощью бита WAVE регистра LPTIM_CSGR и бита SNGSTRT регистра LPTIM_CR. Настройки параметров ШИМ определяются содержимым регистров LPTIM_CMP и LPTIM_ARR.

Рис. 114. Временные диаграммы при различных режимах работы таймера LPTIM

Рис. 114. Временные диаграммы при различных режимах работы таймера LPTIM

Режим энкодера подразумевает работу с внешними инкрементальными датчиками, подключенными ко входам Input1 и Input 2 (рисунок 115). Стоит сразу отметить, что этот режим доступен только для LPTIM1.

Рис. 115. Временные диаграммы работы таймера LPTIM в режиме энкодера

Рис. 115. Временные диаграммы работы таймера LPTIM в режиме энкодера

LPTIM позволяет генерировать следующие прерывания:

  • Compare match возникает, когда содержимое LPTIM_CNT сравнивается или становится больше, чем содержимое регистра сравнения LPTIM_CMP;
  • Auto-reload match возникает, когда значение LPTIM_CNT сравнивается со значением, хранимым в регистре LPTIM_ARR;
  • External trigger event возникает при обнаружении внешнего сигнала запуска (триггера);
  • Autoreload register write completed возникает при обновлении содержимого LPTIM_ARR;
  • Compare register write completed возникает при обновлении содержимого LPTIM_ CMP;
  • Direction change возникает при работе в режиме энкодера при смене направления счета.

Благодаря независимому тактированию таймер LPTIM способен работать даже в режиме STOP и пробуждать микроконтроллер из спящего режима. Однако после возвращения микроконтроллера из режима Standby необходимо заново инициализировать LPTIM.

Часы реального времени RTC

Часы реального времени RTC представляют собой специализированный таймер с функцией календаря. Модуль RTC является одним из важнейших компонентов при работе в режимах пониженного потребления (в том числе Stop и Standby), а также при питании от батарейки VBAT. При тактировании от LSE и питании 1,7 В потребление RTC составляет всего 620 нА.

В состав RTC входят дежурные 32-битные регистры (128 байт), необходимые для сохранения наиболее важной информации при переходе на батарейное питание. Это могут быть секретные данные, которые дополнительно защищаются от взлома с помощью экстренного стирания.

Ключевыми особенностями RTC являются:

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

Блок-схема RTC представлена на рисунке 116. Для тактирования регистров управления, подключенных к APB, используется сигнал PCLK, остальные блоки тактируются сигналом RTCCLK. В качестве RTCCLK могут выступать LSE, HSI (с коэффициентом деления 2…31) или LSI. При этом для работы в режиме Stop или Standby можно использовать только LSE или LSI. А при питании от батарейки (VBAT) можно использовать только LSE.

Рис. 116. Блок-схема RTC

Рис. 116. Блок-схема RTC

Сигнал RTCCLK дополнительно делится с помощью программируемого асинхронного 7-битного делителя. На выходе формируется сигнал ck_arpe (256 Гц по умолчанию). Для обеспечения минимального потребления рекомендуется выбирать максимально высокий коэффициент деления в регистре RTC_PRER. Сигнал ck_arpe используется для тактирования большинства блоков RTC.

В свою очередь сигнал ck_arpe делится с помощью еще одного программируемого 15-битного делителя, значение которого также определяется содержимым регистра RTC_PRER. На выходе делителя формируется сигнал ck_spre с частотой 1 Гц. Он используется для тактирования календаря. При этом регистр, отвечающий за подсчет субсекундных интервалов (RTC_SSR), тактируется от ck_arpe.

Инициализация RTC является защищенной процедурой. По умолчанию регистры RTC защищены от записи, и эту защиту необходимо предварительно снять. За это отвечает бит DBP в регистре PWR_CR1.

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

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

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

RTC позволяет формировать сигналы пробуждения (alarm) при достижении предустановленных значений. Эти сигналы способны пробуждать микропроцессор из режимов пониженного потребления. Кроме того, они могут быть выведены на выход RTC и использоваться внешними микросхемами.

Еще одним способом выхода из спящих режимов (Stop или Standby) является функция периодического автопробуждения (periodic auto-wakeup). Интервал генерируемых прерываний задается пользователем с помощью поля WUT[15:0] регистра RTC_WUTR.

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

RTC генерирует следующие виды прерываний:

  • Alarm A сообщает о достижении заданного момента времени. Соответствующий флаг – ALRAF. Разрешение прерывания активируется с помощью бита ALRAIE.
  • Alarm B сообщает о достижении заданного момента времени. Соответствующий флаг – ALRBF. Разрешение прерывания активируется с помощью бита ALRBIE.
  • RTC_TS input (timestamp) сообщает о проставлении временной метки. Соответствующий флаг – TSF. Разрешение прерывания активируется с помощью бита TAMPIE.
  • RTC_TAMP1 input detection сообщает об обнаружении взлома на входе RTC_TAMP1. Соответствующий флаг – TAMP1F. Разрешение прерывания активируется с помощью бита TAMPIE.
  • RTC_TAMP2 input detection сообщает об обнаружении взлома на входе RTC_TAMP1. Соответствующий флаг – TAMP2F. Разрешение прерывания активируется с помощью бита TAMPIE.
  • RTC_TAMP3 input detection сообщает об обнаружении взлома на входе RTC_TAMP1. Соответствующий флаг – TAMP3F. Разрешение прерывания активируется с помощью бита TAMPIE.
  • Wakeup timer interrupt сообщает о том, что 16-битный таймер автопробуждения достиг значения 0. Соответствующий флаг – WUTF. Разрешение прерывания активируется с помощью бита WUTIE.

Часы реального времени RTC способны работать во всех режимах, включая Standby, и при питании от VBAT.

Таймеры

Микроконтроллеры STM32F7 могут предложить пользователям широкий выбор таймеров:

  • General-purpose – таймеры общего назначения, способные работать в различных режимах, таких как сравнение, захват, режим однократных импульсов, ШИМ. Кроме того, они позволяют подключать внешние датчики, например квадратурные энкодеры и датчики Холла.
  • Advanced – таймеры с расширенным функционалом. Они обладают теми же возможностями, что и таймеры общего назначения, но имеют дополнительные комплементарные выходы. Эти выходы позволяют управлять инверторами, бесколлекторными двигателями и так далее.
  • Одноканальные таймеры общего назначения, обладающие функционалом таймеров общего назначения, но имеющие только один выход.
  • Двухканальные таймеры общего назначения, обладающие функционалом таймеров общего назначения, но имеющие только два выхода.
  • Basic timers – таймеры, которые не подключены к физическим входам и выходам микроконтроллера. Они могут использоваться для синхронизации работы других периферийных модулей, например, для запуска ЦАП или АЦП.
  • Low-power timers – таймеры для режимов пониженного потребления (подробнее читайте в разделе «LPTIM»).

Перечень встроенных таймеров микроконтроллеров STM32F7 представлен в таблице 16.

Таблица 16. Типы таймеров в STM32F7

Тип таймера Название
С расширенным функционалом (Advanced) TIM1 и TIM8
Общего назначения (General purpose) 32-битные TIM2 и TIM5
16-битные TIM3 иTIM4
Базовые (Basic) TIM6 и TIM7
1-канальные TIM10, TIM11, TIM13, TIM14
2-канальные TIM12 и TIM9
LPTIM LPTIM1

Функционал различных типов таймеров существенно различается. В таблице 17 представлены основные возможности всех типов таймеров.

Таблица 17. Возможности различных типов таймеров в STM32F7

Тип таймера Разрядность Направление счета DMA Число каналов Комплементарные каналы Синхронизация
Ведущий Ведомый
Advanced 16 -битный Вверх, вниз, с центральным выравниванием + 4 (6) 3 + +
General-purpose 16-битный или
32-битный
Вверх, вниз, с центральным выравниванием + 4 0 + +
Basic 16 -битный Вверх + 0 0 +
1-канальный 16-битный Вверх 1 0 +
(сигнал OC)
2-канальный 16-битный Вверх 2 0 + +
Low-power timer 16-битный Вверх 1 0 +
(сигнал OC)

Блок-схема таймера с расширенным функционалом TIM1 представлена на рисунке 117. Таймер построен на базе 16-битного счетчика. В состав TIM1 также входит 16-битный регистр автообновления и шесть 16-битных регистров захвата/сравнения. Тактирование таймера производится с помощью сигнала CK_CNT, поступающего с 16-битного делителя. Кроме того, на входах захвата присутствуют индивидуальные делители и фильтры.

Рис. 117. Блок-схема таймера TIM1

Рис. 117. Блок-схема таймера TIM1

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

Таймер TIM1 обеспечивает работу в таких режимах как:

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

В каждом из режимов есть множество своих особенностей, для ознакомления с которыми следует ознакомиться с документами:

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

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

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

О компании ST Microelectronics

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

Товары
Наименование
STM32F746BGT6 (ST)
STM32F746NGH6 (ST)
STM32F745VET6 (ST)
STM32F745ZGT6 (ST)
STM32F746VGT6 (ST)
STM32F746ZGT6 (ST)
STM32F765ZIT6 (ST)
STM32F765VIT6 (ST)
STM32F765VGT6 (ST)
STM32F769BIT6 (ST)
STM32F767VIT6 (ST)
STM32F746G-DISCO (ST)
STM32F722RET6 (ST)
STM32F746IGK6 (ST)
STM32F746IGT6 (ST)
STM32F767ZIT6 (ST)
STM32F723E-DISCO (ST)
STM32F745IGT6 (ST)
STM32F769I-DISCO (ST)
STM32F722IEK6 (ST)