В статье представлены модули TE-STM32F207 и TE-STM32F217 выполненные на микроконтроллерах (МК) нового семейства STM32 F2 компании STMicroelectronics.
Особенности семейства STM32
Семейство 32-разрядных МК STM32 компании STMicroelectronics отличается сбалансированностью характеристик ядра и набора периферийных блоков. МК первой генерации – STM32 F1 – имеют процессор с максимальной частотой 72 МГц, флэш-память до 1 Mбайт, RAM до 96 Kбайт и большой набор интерфейсов, включая Ethernet, USB OTG, CAN. Особым преимуществом является наличие 12-разрядных АЦП и ЦАП.
МК STM32 уже проявили себя как удобные для проектирования и надежно работающие электронные компоненты. Их программирование поддержано обширными библиотеками Standard Peripheral Library, которые позволяют использовать отлаженные функции ввода/вывода.
STM32 F2 – разработаны на основе технологии 90 нм. Это позволило увеличить максимальную тактовую частоту до 120 МГц, объединить в старших моделях все периферийные блоки, которые ранее были отработаны в МК разных линий первой генерации. На максимальной тактовой частоте быстродействие составляет 150 DMIPS, коэффициент энергопотребления равен 188 мкА/МГц. Структура МК линейки STM32 F2 приведена на рисунке 1.

Рис. 1. Структура МК STM32 F2
Важным успехом семейства STM32 F2 является согласованная работа процессора и внутренней памяти программ без тактов ожидания на всех частотах вплоть до максимальной. Это достигнуто за счет введения специального блока ART AcceleratorTM. FSMC-контроллер в семействе STM32 F2 позволяет работать с оперативной памятью SRAM и PSRAM, флэш-памятью NOR, NAND, Compact Flash и LCD 8080/6800.
Удобство применения и надежность работы устройства увеличивают два внутренних RC-генератора – 16 МГц и 32 КГц. Область применения МК расширяет встроенный контроллер цифровой видеокамеры. Увеличенная скорость преобразования 12-разрядных АЦП и ЦАП наряду с новым набором DSP-команд позволяют семейству STM32 F2 бороться за лидерство в классе сигнальных МК. Особенностью МК линеек STM32F215/217 является встроенный процессор криптографии.
Модули «Терраэлектроники» на МК STM32 F2
Компания «Терраэлектроника» в рамках программы по инструментальному сопровождению МК STM32 F2 разработала модули TE—STM32F207 и TE—STM32F217. Первый из них является многоцелевым производительным модулем с расширенным набором коммуникационных интерфейсов, а второй – модулем на основе МК с блоком криптографии, имеющим большой объем оперативной и флэш-памяти.
Модуль TE—STM32F207 выполнен на МК STM32F207VGT6, процессорное ядро которого работает с внутренней флэш-памятью объемом 1 Мбайт на частотах до 120 МГц. В корпусе LQFP100 доступны 128 Кбайт ОЗУ, три 12-разрядных АЦП с быстродействием 2 MSPS (6 MSPS при групповой работе), два 12-разрядных ЦАП. Набор интерфейсов включает Ethernet MAC 10/100, USB OTG, 2xCAN, 5хUSART, 3хSPI, I2C, SDIO.

Рис. 2. Модуль TE—STM32F207
На плате модуля TE-STM32F207(см. рис. 2) кроме МК установлены: SPI-флэш-память AT45DB161D (16 Мбит), разъемы и драйверы порта Ethernet и двух портов CAN, разъем порта USBOTG,разъемы и драйверы двух портов RS-232. Для программирования и отладки предназначен разъем JTAG, 31 линия портов МК выведена на двухрядный штыревой разъем. Имеются также аудио-усилитель и динамик.
Этот функциональный набор аппаратных средств открывает большие возможности управления и обработки сигналов с помощью модуля TE-STM32F207. Кроме того, модуль TE-STM32F207 способен работать в тандеме с дисплейными модулями TE—ULCD35/56.

Рис. 3. Модуль TE-STM32F217
Модуль TE—STM32F217 (см. рис. 3) выполнен на МК STM32F217ZGT6, в состав которого входит процессор криптографии. Для реализации алгоритмов обработки сигналов и криптографии, хранения данных модуль имеет большую внешнюю оперативную и флэш-память (PSRAM 16 Mбайт, NAND-флэш 64 Mбайт). Для программирования и отладки установлен разъем JTAG, линии портов МК выведены на два штыревых разъема. В дальнейшем предполагается установка модификации этого модуля в качестве мезонина на плату-носитель с интерфейсами Ethernet, USB OTG, CAN и дисплеем 5,7” c разрешением 320×240 точек.
Разработка программ для STM32 с использованием библиотек
Затраты на создание встраиваемого программного обеспечения (ПО) – это один из основных факторов, определяющих стоимость разработки. Компания ARM при программировании МК с ядром Cortex-M предложила использовать стандарт взаимодействия ПО CMSIS (Cortex Microcontroller Software Interface Standard).
Ядро Cortex-M, разработанное ARM, в МК различных производителей одинаковое, и включает кроме процессора периферию ядра – схему ФАПЧ и систему управления питанием, контроллер прерываний NVIC, интерфейс отладки ITM уровня приложения, системный таймер SysTick и т.д.
Стандарт CMSIS определяет самый нижний слой встраиваемого ПО, связывающий аппаратуру ядра с приложениями, и не касается особенностей МК за пределами ядра. CMSIS реализован в виде библиотеки программных средств. Общий стандарт взаимодействия ПО для всех производителей МК на базе ядра Cortex-M позволяет кардинально снизить стоимость разработки ПО, особенно в случаях создания новых проектов или портирования существующего проекта на новое устройство. Местоположение библиотеки CMSIS во встраиваемом ПО показано на рисунке 4.

Рис. 4. Структура встраиваемого ПО МК Cortex-M
CMSIS определяет и содержит следующие компоненты:
- объявления периферийных регистров и прерываний;
- функции работы с периферией ядра МК;
- библиотеку ЦОС (цифровой обработки сигналов) – оптимизированные сигнальные алгоритмы и поддержку SIMD (single instruction, multiple data) для ядра Cortex M4;
- описание МК в формате XML.
Для системы, построенной на базе ядра Cortex-M, CMSIS устанавливает единый стиль ПО:
- способ доступа к регистрам периферии и способ определения векторов прерываний;
- имена регистров периферии ядра и имена векторов обработчиков исключений;
- определяет независимый от устройства интерфейс для ОС реального времени, включая канал отладки;
- определяет алгоритмы цифровой обработки информации и другие векторно ориентированные операции.
Библиотека STM32F2хx_StdPeriph_Driver – библиотека драйверов периферийных устройств для МК STM32 F2. В отличие от CMSIS эта библиотека предоставляется компанией STMicroelectronics и обеспечивает интерфейс периферии, реализованной за рамками ядра Cortex – периферии, которую в МК добавил производитель микросхемы.
В настоящее время STMicroelectronics предоставляет для МК семейства STM32F2 следующие библиотеки:
- функции работы с периферийными устройствами (Standard Peripherals Library – SPL) позволяют работать со следующими блоками МК:
- misc.h – объявления, согласующие CMSIS и SPL;
- stm32f2xx_adc – блок аналогового цифрового преобразователя;
- stm32f2xx_can – блок CAN (Control Area Network);
- stm32f2xx_crc – модуль расчета CRC (CRC-32 (Ethernet) полином);
- stm32f2xx_cryp – криптографический сопроцессор (CRYP);
- stm32f2xx_dac – цифро-аналоговый преобразователь (DAC);
- stm32f2xx_dbgmcu – отладка приложений (DBM);
- stm32f2xx_dcmi – интерфейс цифровой камеры (DCMI);
- stm32f2xx_dma – блок прямого доступа к памяти (DMA);
- stm32f2xx_exti – внешние прерывания (EXTI);
- stm32f2xx_flash – встроенная флэш-память (Flash);
- stm32f2xx_fsmc – контроллер статической внешней памяти (FSMC);
- stm32f2xx_gpio – порты ввода-вывода (GPIO);
- stm32f2xx_hash – сопроцессор Hash;
- stm32f2xx_i2c – блок интерфейса I2C (I2C);
- stm32f2xx_rcc – модель синхронизации (RCC);
- stm32f2xx_rng – генератор случайных чисел (RND);
- stm32f2xx_rtc – часы реального времени (RTC);
- stm32f2xx_sdio – интерфейс SD/MMC-карт;
- stm32f2xx_spi – интерфейс SPI;
- stm32f2xx_syscfg – настройка системной конфигурации (SYSCFG);
- stm32f2xx_tim – таймер/счетчик (TIM);
- stm32f2xx_usart – универсальный последовательный приемо-передатчик (USART);
- stm32f2xx_wwdg – сторожевой таймер;
- STM32F2xx программирование in-application programming через интерфейс USART;
- STM32F2x7 программирование in-application programming через интерфейс Ethernet;
- LwIP TCP/IP демостек для МК STM32F2x7;
- EEPROM эмуляция в МК STM32 F2;
- STM32 I2C-библиотека работы с интерфейсом I2C.
Отметим также, что STMicroelectronics активно расширяет список доступного ПО.
Тестирующая программа модуля TE—STM32F207
Для демонстрации функциональных возможностей модуля TE-STM32F207 разработана тестирующая программа, проекты которой реализованы для компиляторов GNU/GCC и IAR. Программа использует следующие библиотеки:
- Standart Peripheal Driver v 1.0.0 for STM32F2xx/библиотека драйверов периферийных устройств, входящих в состав МК4;
- Ethernet Library v1.0.0/Библиотека Ethernet;
- CMSIS Cortex-M3 Core Peripheral Access Layer/библиотека функций ядра Cortex-M компании ARM Limited;
- the uIP TCP/IP stack code;
- http-server.
Тестовое ПО позволяет получить доступ к аппаратным ресурсам модуля TE-STM32F207 (используются http-CGI-скрипты) через WEB-интерфейс. Структура тестирующей программы показана на рисунке 5. После включения питания на модуле запускается WEB-сервер (IP-адрес 10.0.0.10, задан статически в файле /uip/uipopt.h). При подключении к серверу отображается стартовая страница с общим описанием (см. рис. 6).

Рис. 5. Структурная схема тестирующей программы
Во вкладке «Test TE-STM32F207»можно выполнить следующие действия:
- включить светодиод D4;
- выключить светодиод D4;
- разрешить работу аудиоусилителя DA3;
- запретить работу аудиоусилителя DA3;
- прочитать значение температурного датчика;
- передать данные по интерфейсу USART2 (разъем X9);
- передать данные по интерфейсу USART3 (разъем X10);
- передать данные по интерфейсу CAN1 (разъем X3);
- передать данные по интерфейсу CAN2 (разъем X4);
- прочитать общий входной буфер для интерфейсов USART2/USART3/CAN1/CAN2.
Кроме того доступны вкладки: Connections (статистика соединений); Files (перечень файлов http-сервера с статистикой доступа к ним); Statistics (статистика интерфейса Ethernet – принятые пакты, сброшенные пакеты, количество ошибок и т.д.)

Рис. 6. Стартовая страница WEB -сервера
Страницы http-сервера хранятся в файлах fsdata.c и fsdata.h, которые генерируются при помощи программы fs_generator (разработанной фирмой Design4FPGA). Данная программа транслирует HTML-документы в C код с поддержкой скриптов CGI. Эти скрипты позволяют тестовому ПО динамически изменять http-страницы и в ответ на запрос пользователя управлять модулем TE-STM32F207. По сути, CGI-скрипт – это функция (находится в файле cgi.c), которая при вызове возвращает динамически сформированную HTML-страницу и выполняет требуемые действия (включает светодиод, выключает светодиод, включает динамик, выключает динамик и т.д.).
Авторы: Владимир Бродин, Иван Арищенко


24 мая, 2018