+ All Categories
Home > Documents > Web семинар STM32CubeMX• «Hello World», создание и конфигурация...

Web семинар STM32CubeMX• «Hello World», создание и конфигурация...

Date post: 27-Sep-2020
Category:
Upload: others
View: 13 times
Download: 0 times
Share this document with a friend
110
Web семинар STM32CubeMX 10 ноября Попов Роман (Компэл) Александр Квашин (ST)
Transcript
Page 1: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Web – семинар STM32CubeMX

10 ноября

Попов Роман (Компэл)

Александр Квашин (ST)

Page 2: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

• Введение

• Ядро Cortex-M7, архитектура STM32F7

• Обзор семейства STM32F7

• Бесплатные среды разработки

• Графический генератор кода STM32CubeMX

• Примеры:

• «Hello World», создание и конфигурация проекта

• USB. Виртуальный COM – порт (CDC)

• Ethernet. Web-Server

• Ответы на вопросы

• Розыгрыш призов

Программа 2

Page 3: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Ядро

ARM CORTEX-M7

3

DSP

Page 4: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Ядро Cortex-M4 • Архитектура ARMv7E-M

• Гарвардская архитектура, конвейер 3 - уровня

• Поддержка деления, инструкций SIMD

• Модуль защиты памяти (MPU)

• Модуль плавающей точки (FPU)

• Включен во все STM32 на ядрах ARM Cortex-M4

4

12-тактов задержки ISR

Page 5: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

• Архитектура ARMv7E-M

• Гарвардская архитектура, конвейер 6 - уровней

• Супер скалярная архитектура!

• Поддержка деления, инструкций SIMD

• Модуль защиты памяти (MPU)

• Модуль плавающей точки (FPU)

• Включен во все STM32 на ядрах ARM Cortex-M4 и Cortex-M7

Ядро Cortex-M7 5

На один шаг ближе к DSP На один шаг ближе к процессорам

реального времени

Выполнение операций загрузки/выгрузки

параллельно с арифметическими операциями

Прямой доступ ядра к 2 областям оперативной

памяти

Операции ветвления без задержек Кеш память для внешней памяти ( шина AXI-M)

12-тактов задержки ISR

Page 6: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Cortex-M7 → параллельное выполнение 6

1

Fetch Decode Issue Prefetch

DATA PROCESSING UNIT

(+ FPU)

LOAD/STORE

UNIT

PREFETCH

UNIT

#1 DECODE #2 DECODE

64-бит за 1 такт

Load/Store 1

Load/Store 2

ALU 1 (Main)

ALU 2

MAC (32b x 32b + 64b)

FPU

2 3 4

32-бит

32-бит

Execute

BTAC 64-entry

X 64 bits

BRANCH

(2x 32b)

Память данных

NVIC

DPU

Page 7: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Операции математики и load/store

• Cortex-M4

• Единичные операции load/store занимают 2 такта

• N последовательных операций load/store занимают N+1 тактов

• Cortex-M7

• Операции load/store выполняются параллельно

• с арифметическими

• Доступ к памяти без задержек!

7

Работа компилятора!

Выборка Декодиро

вание

Результат

#1 DECODE #2 DECODE

Load/Store 1

Load/Store 2

ALU 1 (Main)

ALU 2

32-бит (2x 32b)

32-бит

Выполнение

Группировка команд

Параллельное

выполнение команд

Page 8: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Архитектура STM32F7

8

DSP

Page 9: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

DMA1 DMA2 ETH

DMA

USB

HS

DMA L1-Cache

4KB I/D

AXI to Multi-

AHB

LCD-

TFT

DMA

Chrom-

ART

SRAM

240 KB

SRAM

16 KB

AHB1

Peripheral

AHB2

Peripheral

FMC

QuadSPI

ITCM RAM

16 KB

DTCM RAM

64 KB

AX

IM

AH

BS

ITC

M

DT

CM

APB1

Peripheral

APB2

Peripheral

FLASH

1MB

AH

BP

DM

A_M

EM

1

DM

A_M

EM

2

DM

A_P

1

DM

A_P

2

ART

Шина ITCM

Шина DTCM

Шина AXIM

Шина AHBS

Гибкая архитектура STM32F7x6 9

64-b

it

Bu

sM

atr

ix 32-бит матрица шин

Cortex-M7

Выполнение кода возможно из:

Flash ITCM с ART Accelerator

или

Flash AXI с L1-cache

или

Внешняя память с L1-cache

Page 10: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Архитектура ядра 10

DATA PROCESSING

UNIT

(+ FPU)

NVIC

LOAD/STORE

UNIT

STORE

BUFFER

BUS INTERFACE

UNIT

MPU

AXI-M

AHBS

for DMAs

AHBP (периферия)

Прерывания

TIGHTLY COUPLED MEMORY UNIT SQ

ARM® Cortex®-M7

ITCM DTCM

DEBUG ETM/ITM trace

Отладка

AHBD

PREFETCH

UNIT

AXI to Multi-AHB

Внешняя память Внутренняя память

I-Cache D-Cache

ART

FLASH

64-бит

64-бит

256-бит

Page 11: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Резюме

1. Супер скалярная архитектура

→ 2 инструкции за 1 такт

2. Ветвление за 1 такт

3. Система кэш менеджмента для

работы с медленной памятью

4. Развитая архитектура для

работы с большими объемами

данных

11

1000 CoreMark

Page 12: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Семейство STM32F7

Page 13: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Портфолио семейства STM32 13

09/12/2015 Presentation Title

75 93 106 177 245 398 608 1000 273 CoreMark

Page 14: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

14 Портфолио STM32F7 (1/2) 3/7

Co

rte

-M7

– 2

16

MH

z

Acceleration

• ART Accelerator™

• L1 cache: 4K+4K data

and instruction cache

• Chrom-ART

Accelerator™

• Single Precision FPU

Connectivity

• 2 x USB2.0 OTG FS/HS

• SDIO

• USART, UART, SPI, I²C

• 2 x CAN

• HDMI-CEC

Audio

• I²S + audio PLL

• 2 x SAI

• 2 x 12-bit DAC

• SPDIF-RX

Others

• 16 and 32-bit timers

• 3 x 12-bit ADC

(2.4Msps)

• Low voltage 1.7 to 3.6V

• 85°C and 105°C range

Product

line

FCPU

(MHz)

FLASH

(bytes)

RAM

(KB)

Quad -

SPI

Ethernet

I/F

IEEE

1588

Camera

I/F FMC

TFT

controller

Hardware

Crypto /

hash

STM32F756 216 512 K

to 1 M

320K (incl.64K

DTCM) + 16K

ITCM + 4K

backup

STM32F746 216 512 K

to 1 M

320K (incl.64K

DTCM) + 16K

ITCM + 4K

backup

STM32F745 216 512 K

to 1 M

320K (incl.64K

DTCM) + 16K

ITCM + 4K

backup

Page 15: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Портфолио STM32 F7 (2/2) 15

LQFP100 LQFP144

WLCSP143

LQFP176

UFBGA176 LQFP208 TFBGA216

512 K

1 M

Размер FLASH

(байт)

STM32F746VG STM32F746ZG STM32F746IG STM32F746BG STM32F746NG

STM32F746VE STM32F746ZE STM32F746IE STM32F746BE STM32F746NE

STM32F756VG STM32F756ZG STM32F756IG STM32F756BG STM32F756NG

STM32F756VE STM32F756ZE STM32F756IE STM32F756BE STM32F756NE

С крипто/hash сопроцессором

Количество

ножек

Без крипто/hash сопроцессора

Page 16: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Отладочные платы 16

STM32746G-EVAL

STM32756G-EVAL

STM32F746G-DISCO

• 216 МГц STM32F756NGH6 или STM32F746NGH6

• SAI аудио ЦАП, стерео audio jack, микрофон

• SDRAM 8Mx32 SDRAM, 1Mx16 бит SRAM, 8Mx16

бит NOR FLASH и 512 Mбит QuadSPI NOR FLASH

• Цветной 5.7’ 640 x 480 TFT LCD сенсорный экран

• Ethernet EEE-802.3-2002

• USB OTG HS/FS, разъем micro-AB

• CAN 2.0A/B

• Модуль камеры

• 216 МГц STM32F746NGH6, 1 Mб Flash, 340 Kб RAM

• Цветной 4.3’ 480x272 LCD-TFT сенсорный экран

• 128-Mбит Quad-SPI Flash, 128-Mбит SDRAM

• Ethernet IEEE-802.3-2002

• USB OTG HS/FS, разъем micro-AB

• SAI аудио кодек, стерео выход

• Два МЭМС микрофона

• Модуль камеры

• Поддержка VCP, MS и отладочного порта

Page 17: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Среды разработки, ПО

Page 18: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

ПО для разработки

• Генерация готового кода и проекта.

Возможность фокусировки на

собственном приложении

• Свойства:

• HAL

• RTOS, USB, TCP/IP, файловая

система, графическая библиотека

• Использование максимальных

возможностей STM32 с

минимальной избыточностью

кода. Простые функции с прямым

доступом к регистрам.

STM32CubeMX:

Совместимость

STM32Snippets:

Оптимизация

Hardware Abstraction Layer API

HAL

ST boards

TCP/IP FAT

File

System

Graphics USB

Host &

Device

Библиотеки, стеки, ОС

RTOS

Приложение

18

Page 19: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Мастер портов в/в

Мастер

тактирования

Wizard периферии и ПО

Мастер

энергопотребления

STM32CubeMX 19

Page 20: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Бесплатные среды IDE для разработки

Page 21: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Среда разработки

System Workbench for STM32

Page 22: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32 Community

• Среда основана на бесплатных кодах

• Графическая оболочка – Eclipse

• Компилятор – GCC

22

Page 23: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Основные моменты

• Поддерживаемый функционал:

• Аппаратная отладка на ST-LINK

• Мастер создания проектов с HAL или SPL

• Совместимость с STM32CubeMX

• Поддержка

• Компания AC6 является партнером ST

• Техническая поддержка осуществляется через

форум http://www.openstm32.org/forum7

23

Page 24: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Установка среды разработки

• Воможны 2 варианта установки

• Из дистрибутива

• Путем установки плагина к уже установленному

ранее Eclipse

24

Page 25: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Генератор кода STM32CubeMX

Page 26: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Философия CubeMX

• STM32CubeMX – это конфигуратор, который позволяет удобное

управлениями драйверами и всеми библиотеками кода от ST и

партнеров для микроконтллеров STM32

• Программа бесплатная

• Драйвера и другой код - бесплатные

• На выходе STM32CubeMX выдает проект, который можно открыть в

среде программированя

• Исходные файлы

• В среде программирования можно добавлять свой код и иметь

возможность изменять проект в STM32 CubeMX.

26

Page 27: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Установка STM32CubeMX • Скачиваем STM32CubeMX

• http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1533/P

F259242?s_searchtype=partnumber

• STM32CubeMX треубет для своей работы java

• Если пакет java не установлен, то установите его под свою версию

Windows (32/64 бит)

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

иное подсемейство STM32

• STM32CubeL0

• STM32CubeL1

• STM32CubeF0

• STM32CubeF1

• STM32CubeF2

• STM32CubeF3

• STM32CubeF4

27

Page 28: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Установка STM32CubeMX • Установите STM32CubeMX

• Запустите STM32CubeMX

28

Репозиторий

CubeMX Project

Для генерации

проекта нужно

сконфигурировать

репозиторий STM32CubeMX

генерирует

проект

Page 29: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Настройка STM32CubeMX

• В случае, если вы вручную скачали пакеты, то их можно добавить в

репозиторий:

• MENU>Help>Updater Settings…

• Можете видеть и менять папку репозитория

• По умолчанию C:/User/Acc_name/STM32Cube/Repository/

• Лучше избегать кириллических символов в пути к репозиторию,

в идеале – его лучше разместить в корневой директории

• Можно загрузить репозиторий автоматически

29

CubeMX

repository

Путь к

репозиторию

Page 30: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Настройка STM32CubeMX

• Как выглядит репозиторий в файловой системе компьютера

• Для автоматической загрузки:

• MENU>Help>Install New Libraries

• Выбираете нужный пакет

• Нажимаете кнопку Install Now

30

Пример того,

как выглядит

репозиторий Автоматическая загрузка

в STM32CubeMX

Page 31: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Настройка STM32CubeMX

Для ручной установки войдите:

• MENU>Help>Install New Libraries

• Нажмите кнопку “From Local…”

• Выберите скаченный zip

\HAL\STM32Cube_FW_F7_V1.0.0.zip

31

Page 32: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Возможности STM32CubeMX • CubeMX выдает проектные файлы под следующие среды

разработки:

• Keil

• IAR

• Atollic

• System Workbench (БЕСПЛАТНЫЙ)

• Для работы с отладочными платами потребуется так же драйвер

ST-Link

• STSW-LINK003 driver for Win XP/Vista/7

• STSW-LINK006 driver for Win 8

• Для установки требуется иметь Права администратора

32

Page 33: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Выбор микроконтроллера 33

• Фильтрация по:

• Cерии

• Семейству

• Типу корпуса

• Перифериии

• и т. д.

Page 34: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Конфигуратор выводов 34

• Конфигурирование

портов в/в

• Автоматический

перенос функций

портов (ремап)

• Автоматическая

привязка

периферии к

библиотекам

(FatFS, LWIP, …)

Page 35: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Настройка периферии 35

• Цветовые подсказки:

• Если пункт затенен, то

следует выбрать

соответствующую

периферию

• Зеленый цвет –

периферийный модуль

доступен без ограничений

• Желтый цвет –

периферийный модуль с

ограниченным

функционалом

• Красный цвет –

периферийный модуль не

доступен в данной

конфигурации

микроконтроллера

Серый

Нужно включить

периферию

Зеленый

периферия

активна

Желтый:

функционал

ограничен

Красный:

функционал не

доступен

Page 36: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Распределение выводов 36

Выводы периферийных модулей автоматически

переходят на неиспользуемые выводы в случае

«пересечений»

1. Выбираем

I2C1

2. Назначение

выводов I2C1

3. Выбираем

SWD

4. Конфликт выводов I2C1

и SWD. Вывод I2C1_SDA

перемещен на

альтернативную позицию

Page 37: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Распределение выводов 37

Можно отключить автоматическое

распределение периферии по выводам:

Установив данный

параметр

STM32CubeMX не

сможет

распределять

выводы на

альтернативные

I2C1 не может быть

переназначен на новые

выводы, поэтому модуль

SWD/JTAG невозможно

использовать

Page 38: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Конфигурация выводов 38

• Выводы периферии можно переназначать на другие вручную

• Нажимаете Ctrl + Click мышкой на выводе и перетягиваете на другой пин

(Ctrl не отпускайте)

1. Ctrl + Click

мышкой на вывод

2. Подсвечивается

альтернативная

позиция

3. Перемещаем

вывод на новую

позицию

Page 39: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Настройка тактирования 39

• Автоматический расчет частот • Подсветка ошибок • Визуальный конфигуратор

Page 40: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Конфигурация периферии 40

• Настройка периферии в

графическом режиме

• Подсветка ошибок:

+ Не сконфигурировано

ⱱ Сконфигурировано

x Ошибка в

конфигурировании

Page 41: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Конфигурация периферии

и библиотек 41

• Параметры привязаны к

системным настройкам

из документации

• Прерывания

• GPIO

• DMA

Page 42: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Конфигурация периферии

и библиотек 42

• Активация и управление

прерываниями NVIC

• Управление параметрами GPIO

• Управление DMA

• Конфигурация запросов в

DMA

• Рабочие параметры ПО

(адрес буфера, …) не

задаются

Page 43: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Настройка NVIC 43

• Управление всеми

прерываниями

• Работает сотировка

• Работает поиск

Page 44: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Настройка DMA 44

• Настраиваются все DMA

каналы в одном месте

• Сортировка по каналам

• Установка параметров

обмена по DMA

Page 45: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Панель настройки GPIO 45

• Большинство параметров

по умолчанию

устанавливаются в

правильное состояние

• Можно настроить время

нарастания фронтов

• Моржно изменять

параметры объединяя

пины группами

Page 46: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Генерация кода 46

• Генерация всех файлов в Си

• Автоматическая подстройка под

среды разработки (IDE)

• Пользовательский код может

быть добавлен в специальные

вставки и не пропадет при

повторной регенерации проекта

• Все библиотеки копируются в

папку проекта (опционально)

Page 47: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: обновление библиотек 47

• Help -> Updater settings

• Можно устанавливать нахождение репозитория с

библиотеками

• Обновлять можно вручную и автоматически

• Поддерживает выход через прокси

• Help -> Install new libraries : управление

библиотеками

• Отметить мышкой нужные библиотеки

• Библиотеки бдут автоматом подкачаны и разархивированы

Page 48: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Настройки проекта 48

• Project -> Settings

• Задаем имя проекта и

расположение

• Папка с именем проекта будет

создана автоматически.

• Следует выбрать среду(Keil, IAR,

Atollic, SW4STM32)

• Можно выбрать определенную

версию библиотек...

Page 49: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: генератор кода 49

• Опции генератора кода

• Копировать всю библиотеку или только

необходимое. Работать через репозиторий

• Сделать инициализацию в одном файле

stm32fYxx_hal_msp.c или для каждого модуля

создать свой файл

• Сохранять или не сохранять пользовательский

код

• Удалять или не удалять более не нужные файлы

проекта

• Неиспользуемые выводы переводить в

аналоговый режим(если SWD/JTAG не

активирован, эта опция отключит его)

• Включить «full assert» в проекте и код будет сам

себя тестировать на предмет некорректного

использования HAL

Page 50: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Настройка проекта 50

Копирование всех библиотек в проект

Project Driver

Folder CubeMX

repository

Копирование всех

драйверов из

репозитория

STM32CubeMX

Файлы охраняются в папке

Ваша_Папка_Проекта/Drivers/STM32XXXX_HAL_Driver folder

В проект подключаются только

используемые файлы

Page 51: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Настройка проекта 51

Копирование толко необходимых библиотек в проект

Project Driver

Folder

CubeMX

repository

Файлы только для

выбранной периферии

STM32CubeMX Сохраняются по пути

Ваша_Папка_Проекта/Drivers/STM32XXXX_HAL_Driver

Page 52: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Настройка проекта 52

Нет копирования файлов. Только ссылка в репозиторий

Ссылка

В файлах проекта нет папки с

драйверами

Папка

драйверов в

проекте

STM32CubeMX

репозиторий

Page 53: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Калькулятор потребления 53

• Настройка карты

потребления

контроллера

• Выбор батареи

• Создание графика

потребления

• Среднее потребление

• Средняя

производительность

ядра

• Время жизни от батареи

Page 54: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32CubeMX: Документация 54

Документ Описание

UM1718: STM32CubeMX for STM32

configuration and initialization C code

generation

Описание как использовать

STM32CubeMX

RN0094: STM32CubeMX release 4.11.0 Все изменения в версиях

библиотек

Page 55: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

«Hello World»

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

Page 56: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

STM32F7 DISCOVERY 56

Разъем Arduino UNO

Встроенный ST-LINK

V2-1

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

Электропитание через

USB или внешний

источник напряжения

USB FS

Ethernet 100

Page 57: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Конфигурация GPIO

• Настраиваем тактирование

• Конфигурируем порт в/в

• Генерируем код

• Добавляем функцию HAL_Delay() и

HAL_GPIO_Toggle()

• Наблюдаем за миганием светодиода

57

Page 58: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Настройка GPIO

• Создаем проект в STM32CubeMX

• Menu -> File -> New Project

• Выбираем контроллер STM32F746NGH6

• Конфигурируем порт GPIOI, вывод 1 (PI1)

58

Page 59: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Настройка GPIO

• Включаем отладочный порт SWD/JTAG:

• Можно это сделать в дереве настройки портов в/в TAB -> Pinout ->SYS

• На отладочной плате выведен только SWD

• Если SWD/JTAG не активировать и выбрать Set all free pins as analog

(MENU -> Project -> Settings -> TAB -> Code Generator), процесс отладки

станет недоступен

59

Page 60: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Конфигурация тактирования

• Открываем вкладку Clock Configuration

• На поле HCLK вводим желаемую частоту и мастер настраивает все

блоки (PLL, делители) автоматически

60

Page 61: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Настройка GPIO • Заходим в закладку GPIO Configuration

TAB -> Configuration -> System -> GPIO

61

Page 62: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Настройка GPIO

• GPIO(Pin) Configuration

• Выбираем Push Pull mode

• No pull-up или pull-down

• Скорость HIGH обычно важна в

режиме работы порта SPI,

USART

• Нажимаем OK

62

Page 63: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Настройка GPIO • Максимальная скорость порта (maximum output speed)

• Влияет на наклон фронта при переключении порта из одного состояния в

другое

• Более высокая скорость GPIO увеличивает EMI и увеличивает

потребление STM32

• Поэтому не следует всем портам назначать максимальную скорость.

Т. е. мигание светодиодом с частотой 1Гц – это низкая скорость, но SPI на

45 МГц должен работать на максимальной скорости

63

LOW

HIGH

LOW

HIGH

LOW

HIGH

LOW

HIGH

GPIO output LOW speed GPIO output MEDIUM speed

GPIO output HIGH speed GPIO output FAST speed

Page 64: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

• Menu -> Project -> Settings…

• Назовите проект

• Выберите SW4STM32

• Нажмите «OK»

• Генерируем код

• Menu -> Project -> Generate Code

64 Генерация кода проекта

Page 65: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Открываем System Workbench for STM32

• Открываем SW4STM32 (System workbench for STM32)

• Выбираем workspace path

• Удобнее всего генерировать код STM32CubeMX в ту же

папку, с которой работает программа

65

Page 66: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Первый запуск Eclipse 66

• Закройте начальное приглашение

• После этого Project Explorer и Code Browser

появятся на экране

Page 67: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Импорт проекта 67

• Menu -> File -> Import…

• Select Existing Project into

Workspace

• Next

Page 68: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Пишем свой код в Eclipse Modify 68

• Сейчас проект из STM32CubeMX находится

в System Workbench

• Добавляем мигание светодиодом в main()

/* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_GPIO_TogglePin(GPIOI,GPIO_PIN_1); HAL_Delay(500); } /* USER CODE END 3 */

Page 69: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Конфигурируем проект Eclipse 69

• Правой кнопкой мыши Project -> Properties

• Или нажимаем ALT+ENTER

Page 70: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Свойства проекта в Eclipse 70

• В ветке “C/C++ Build”

• Выбираем “Settings”

• Настройки проекта как в Keil, IAR…

(включая оптимизацию и т д)

Page 71: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Подготавливаем Eclipse Debug 71

• Открываем “Run/Debug

settings”

• Click “New…”

Page 72: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Подготавливаем Eclipse Debug 72

• Выбираем “Ac6 STM32 Debugging”

• Нажимаем “OK”

Page 73: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Подготавливаем Eclipse Debug 73

• Выбираем закладку Main

• Здесь можно выбрать ELF файл

• После этого мы может отлаживать

код, активировав отладку по F11

или через меню

Page 74: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Eclipse Run Вebug 74

• Отлаживаем!

• Остановить Debug можно нажав на

красный квадрат

• Переключатель между режимами

«С» и «Debug»

Page 75: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Конфигурация SPI

• Чтобы понять как исполдьзовать HAL для работы с

периферией так же активируем SPI

• Возвращаемся в CubeMX

• В классиеский режим Full Duplex

75

Page 76: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Конфигурация SPI

• Конфигурируем

основные

параметры

76

Page 77: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Конфигурация SPI

• Конфигурируем прерывания

• Активируем SPI прерывание

77

Page 78: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Конфигурация SPI

• Конфигурируем DMA каналы

78

Page 79: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Генерируем проект

• Меню Project Generate Code

• В System Workbench

• Правой кнопкой мыши по проекту

и выбираем “Refresh”

• Компилируем Ctrl + B

• Запускаем отладку

79

Page 80: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Использование HAL

• Каждое прерывание, которые выбрано

создается в среде. И в каждом прерывании –

обработчик:

• Писать свой код в перрываниях не следует

• Достаточно пользоваться CallBack функциями

HAL

80

Page 81: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Использование HAL

• Находим необходимую функцию в файле драйвера:

• И копируем в свой проект необходимый call back

81

Page 82: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

USB. Виртуальный COM-порт (CDC)

Page 83: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Цели работы

• Необходимо создать приложение «Эхо»

• При подключении к USB-FSПК плата должна

обнаруживатьс как виртуальный ком-порт (CDC VCP)

• Изучить как подключиться к драйверу CDC из

приложения

83

Page 84: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Что нам необходимо

• Потребуется установить любую программу-терминал

• Putty, kitty, hyper terminal или подобную

• CDC драйвер встроен в Windows, но, возможно

потребуется доустановить inf файл

• inf файл – в установщике STSW-STM32102 на st.com

• Потребуется micro-USB кабель

84

Page 85: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Создаем проект?

• Мы будем использовать предыдущий проект

• Просто будем его донастраивать в STM32CubeMX и обновлять

в SW4STM32 (F5)

85

Page 86: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Активируем USB FS

• В дереве Pinout открываем ветку USB_OTG_FS

• Выбираем режим Device_Only

• В закладке MiddleWares

• Активируем CDC VCP драйвер

86

Page 87: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Конфигурируем тактирование

• Конфигурация тактирвоания

• Заходим в pinout

• Открываем ветку RCC («Reset and Clock Control»)

• Выводы на корпусе PH0 и PH1 должны окраситься в зеленый цвет

87

Page 88: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Конфигурируем тактирование

• По умолчанию кварцевый резонатор на 25 МГц – как и на плате

Discovery

• Далее так же в HCLK вводим желаемую частоту и мастер делает

остальное

88

Page 89: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Конфигурируем USB

• В закладке Configuration выбираем Connectivity USB_FS

• Выключаем VBUS sensing

• Нажимаем “OK”

89

Page 90: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Генерируем проект

• МенюProjectGenerate Code

• В System Workbench

• Нажимаем правой кнопкой мыши по проекту

и выбираем “Refresh”

• Компилируем Ctrl+B

• Запускаем отладку

90

Page 91: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Отладчик Eclipse

• Запускаем приложение

• Подключаем кабель micro-USB

• В ближний разъем к ST-LINK (USB

FS)

• Открываем диспетчер устройств

Windows

• В списке COM портов должен

появиться новый порт

91

Page 92: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Добавляем нужный код

• Перезапускаем прием новых пакетов каждый раз при приеме

• Для этого открываем файл usb_cdc_if.c и редактируем функцию

CDC_Receive_FS

92

void CDC_Receive_FS (uint8_t* Buf, uint32_t *Len) { /* USER CODE BEGIN 6 */ USBD_CDC_ReceivePacket(hUsbDevice_0); return (USBD_OK);

/* USER CODE END 6 */ } … uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) { uint8_t result = USBD_OK; /* USER CODE BEGIN 7 */ USBD_CDC_SetTxBuffer(hUsbDevice_0, Buf, Len); result = USBD_CDC_TransmitPacket(hUsbDevice_0); /* USER CODE END 7 */ return result; }

Page 93: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Добавляем нужный код 93

void CDC_Receive_FS (uint8_t* Buf, uint32_t *Len) { /* USER CODE BEGIN 6 */ USBD_CDC_CDC_Transmit_FS(Buf, *Len); ReceivePacket(hUsbDevice_0); return (USBD_OK);

/* USER CODE END 6 */ } … uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) { uint8_t result = USBD_OK; /* USER CODE BEGIN 7 */ USBD_CDC_SetTxBuffer(hUsbDevice_0, Buf, Len); result = USBD_CDC_TransmitPacket(hUsbDevice_0); /* USER CODE END 7 */ return result; }

• Сделаем приложение - эхо

• Продолжаем редактировать usb_cdc_if.c, добавляем функцию

USBD_CDC_CDC_Transmit_FS

Page 94: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Проверка работоспособности

• Открываем терминальную программу

• Подключаемся к Виртуальному COM порту

• И передаем любой текст, на экране должно

появиться эхо этого текста

94

Page 95: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Ethernet. Web-Server (lwIP)

Page 96: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Цели проекта

• Ведь в репозитории находится пример lwIP/http – не проще

ли его взять за основу?:

• К сожалению пример не основан на STM32CubeMX

• Не понятно как сделать проект в STM32CubeMX

• В примере из репозитория простой HTTP сервер.

Зачастую HTTP во встраиваемых приложениях редко

актуален

96

Page 97: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Возможности lwIP

• lwIP - популярный TCP/IP стек для микроконтроллеров:

• Оптимизирован под маленькие FLASH/RAM

• Оптимизирован под малую производительность контроллера

• Поддерживает RTOS

• В исходных кодах

• Бесплатный!

• Специальный API, опциональный Berkeley-like socket API

• Дополнения: HTTP, SNTP, SSL

97

Page 98: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Основы lwIP/TCP 98

• FreeRTOS и lwIP

• Использовать или не использовать FreeRTOS?

• Что такое socket?

• Сколько сокетов может существовать на одном

соединении TCP?

• Несколько уровней доступа (API):

• Сокеты

• Netconn

• Буферизация

Page 99: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Проект в STM32CubeMX 99

• Продолжаем редактировать наш

проект

• В периферийной ветке

• Активировать Eth в режим RMII

• В MiddleWares

• Активировать FreeRTOS

• Активировать lwIP

• Переходим в Clock configuration

Page 100: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Конфигурируем тактирование

• Никаких изменений здесь делать не трубется, переходим в

Configuration

100

Page 101: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Конфигурация Ethernet 101

• Конфигурируем Connectivity ETH

• Установить PHY адрес 0

• Активируем прерывание в NVIC

Page 102: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Конфигурируем lwIP 102

• В поле Configuration Middlewares

нажимаем кнопку LWIP

• Будем подклчюать F7-DISCO напрямую

в Ethуктуе порт ПК. Но ПК не раздает IP

адреса, потому выключаем сервис

DHCP

• Устанавливаем вручную IP 192.168.0.10

• И subnet mask 255.255.255.0

Page 103: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Конфигурация

FreeRTOS 103

• Увеличить кучу (heap) ОС

• Потому что lwIP будет использовать

кучу RTOS

• Создадим «задачу» для ETH

Page 104: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Генерируем проект 104

• Генерируем проект

• В Eclipse обновляем проект

Page 105: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Добавляем код 105

void StartTaskEth(void const * argument)

{

/* USER CODE BEGIN StartTaskEth */

struct netconn *conn, *newconn;

err_t err, accept_err;

/* Create a new TCP connection handle */

conn = netconn_new(NETCONN_TCP);

if (conn!= NULL)

{

/* Bind to port 80 (HTTP) with default IP address */

err = netconn_bind(conn, NULL, 80);

if (err == ERR_OK)

{

/* Put the connection into LISTEN state */

netconn_listen(conn);

• В нашу задачу ETH добавляем

код работы с TCP

• Файл freertos.c

• Очистить содержимое задачи и

добавить свое между

• /* USER CODE BEGIN

StartTaskEth */

• /* USER CODE END

StartTaskEth */

Page 106: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Добавляем код 106

/* accept any icoming connection */

accept_err = netconn_accept(conn, &newconn);

if(accept_err == ERR_OK)

{

/* serve connection */

while (1)

{

netconn_write(newconn, (const unsigned

char*)("test\r\n"), (size_t)6, NETCONN_COPY);

vTaskDelay(1000);

}

}

}

}

/* USER CODE END StartTaskEth */

}

• Не забываем

подключить хидеры в

freertos.c

/* USER CODE BEGIN Includes */

#include "stm32f7xx_hal.h"

#include "lwip/opt.h"

#include "lwip/arch.h"

#include "lwip/api.h"

/* USER CODE END Includes */

Page 107: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Тестирование 107

• Соедините плату с

компьютером проводом

Ethernet

• Запустите приложение

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

проводного сетевого

соединения:

• Введдите IP 192.168.0.1

• Нажмите ОК и немного

подождите (порядка минуты)

Page 108: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Настраиваем терминал 108

• Открываем HyperTerminal (или любую

другую программу)

• Создаем новое соединение

• Выбераем TCP/IP (вместо COM порта)

• Задаем IP адрес

• 192.168.0.10

• 80

• OK

Page 109: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Приложение ЭХО 109

• Создать такое приложение очень просто –

используем функцию приема:

• struct *inbuf;

• netconn_recv(conn, &inbuf);

Page 110: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.

Спасибо за внимание!


Recommended