8-900-374-94-44
[email protected]
Slide Image
Меню

Stm32 уроки программирования – Уроки STM32. Введение. Общие сведения, скорее впечатления, об STM32.

STM32. Уроки по программированию STM32F4. Урок № 1. Система тактирования STM32F4.

STM32. Уроки по программированию STM32F4. Урок № 1. Система тактирования STM32F4.

16 November 15 г. Автор - admin

 

Вместо предисловия.

 

В прошлом уроке был краткий обзор курса видео уроков по программированию STM32F4. Установка IDE, code generator STM32CUBE. Портирование проекта из КУБА в IDE System Workbench for STM32 (SW4STM32).

 

Предисловие.

 

На сегодняшнемем уроке рассмотрим систему тактирования STM32F4. Посмотрим в документацию на МК. Попробуем понять азы настройки системы тактирования STM32F4.

 

Документация.

 

Обучение будем производить на базе платы STM32F4-Discovery на которой установлен чип: STM32F407VG. Документация на данный чип находится по адресу. Во вкладке Design Resources находятся документы:

1. Product Specifications - DS8626: ARM Cortex-M4 32b MCU+FPU, 210DMIPS, up to 1MB Flash/192+4KB RAM, USB OTG HS/FS, Ethernet, 17 TIMs, 3 ADCs, 15 comm. interfaces & camera - это даташит на семейство данного мк.

 

2. Reference Manual - RM0090: STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439 advanced ARM®-based 32-bit MCUs - это справочное руководство. Оно описывает серию из нескольких микроконтроллеров. Он станет основным документом в части "железа".

 

3. Related Tools and Software - STM32CubeF4. Embedded software for STM32F4 series (HAL low level drivers, USB, TCP/IP, File system, RTOS, Graphic - coming with examples running on ST boards: STM32 Nucleo, Discovery kits and Evaluation boards) - это НАШ КУБ. Данной библиотекой будем пользоваться в наших уроках.

Для старта хватит.

 

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

 

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

Тактовый сигнал

Подразделяется на 2 вида:

  1. Системный тактовый сигнал (SYSCLK) - от него зависит вся рабочая периферия, за исключением некоторых блоков о которых мы поговорим далее.
  2. Вторичный тактовый сигнал - отвечает за резервные системы и системы контроля стабильности работы, также используется для тактирования системных часов реального времени (RTC)

Существует 3 источника системного тактового сигнала:

  • HSI высокоскоростной (16МГц) внутренний осциллятор тактового сигнала
  • HSE высокоскоростной (4 - 26МГц) внешний осциллятор тактового сигнала
  • Main PLL Основное ФАПЧ для генерации системного тактового сигнала

У вторичного тактового сигнала также существует 2 источника:

  • 32 кГц низкоскоростной внутренний осциллятор тактового сигнала RC (LSI RC), для привода зависимого ватчдога (система контроля стабильности), и еще при желании часов реального времени для авто-старта из режима остановки/ожидания.
  • 32,768 кГц низкоскоростной внешний осциллятор (LSE crystal) для тактирования часов реального времени (RTCCLK)

Различные источники тактового сигнала могут быть переключены или выключены в зависимости от использования, а также для оптимизации энергосбережения МК. Однако, следует помнить следующее - внешние источники более стабильны по отношению к температуре, чем внутренние RC-генераторы, однако они потребляют больше энергии.

Карта системы тактирования:

Разные предделители используются для настройки AHB частоты, высокоскоростного APB (APB2) и низкоскоростного APB (APB1) доменов. Максимальная частота для AHB домена 168 МГц, для APB2 - 84 МГц и для низкоскоросного APB1 - 42 МГц.

От этих доменов тактируется вся переферия МК.

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

Например:

RCC AHB1 peripheral clock register (RCC_AHB1ENR)

Bit 1. GPIOBEN: IO port B clock enable - включает тактирование порта B. Как видно из названия регистра, данный домен тактируется от максимальной частоты 168 МГц.

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

В прикрепленном видео уроке показаны основные настройки системы тактирования в STM32Cube. Объяснена стартовая инициализация системы тактирования в коде сгенерируемым Кубом.

 

Уроки по программированию STM32F4. Урок № 1. Система тактирования STM32F4. Видео.

 

 

 

З.Ы. коментарии, вопросы и предложения складываем тут

druid.su

STM Урок 62. FMC SDRAM. Часть 1 |

&nbsp

&nbsp

&nbsp

 

Урок 62

 

Часть 1

 

 

 

Сегодня мы попробуем поработать с микросхемой памяти SDRAM.

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

Представителем такой памяти мы выберем микросхему MT48LC4M32B2 от компании Micron.

Данная память установлена на плате STM32F746G-DISCO, с которой мы очень хорошо знакомы.

Данная память имеет объём 128 мегабит, но так как из 32 контактов обмена данными распаяно в целях экономии только 16, то в данном варианте будет 64, что также немало. Физически получится 8 мегабайт быстрой оперативной памяти.

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

Тем не менее мы все равно немного ознакомимся с организацией работы с данной памяти.

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

Конфигурация памяти имеет разбивку на 4 банка: 1 мегаадрес по 32 бита (1 бит на каждый контакт шины данных) и таких 4 банка, вот и получаем мы 128 мегабит.

1 мегаадрес получаем мы из расчета матрицы 4096 строк по 256 колонок.

Вот вообщем кратко по организации памяти.

Посмотрим блок-схему нашей микосхемы

 

 

 

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

Шина данных состоит из 32 ножек — это ножки DQ0-DQ31. По этим ножкам, выставляя их в определённое время в определённое состояние, мы записываем информацию в память, а также читаем её с них также в определённое время, снимая их состояния.

Ножки DQM[3:0] отвечают за определённый доступ к данным. Подробно не рассматриваем.

Адресная шина состоит 12 ножек A0-A11. По ней мы обращаемся по определённым адресам к определённым ячейкам памяти, передавая по данным ножкам адрес колонки и адрес строки.

Также к адресному регистру ещё относятся и ножки выбора одного из четырёх банков памяти BA0-BA1.

Также сверху мы ещё наблюдаем ряд ножек, относящимся к командной логике.

CLK — это ножка, которая обеспечивает синхронизацию, собственно, также она называется у многих устройств, требующих синхронизацию.

CKE — ножка, разрешающая синхронизацию.

CS — ножка выбора или Chip Select, необходимая для выбора определённой микросхемы, когда их несколько.

WE — Write Enable, отвечающая за состояние записи или чтения.

CAS — при активизации данной ножки состояние адресной шины расценивается микросхемой, как адрес колонки.

RAS — при активизации данной ножки состояние адресной шины расценивается как адрес строки.

 

Также существует ряд команд для настройки микросхемы, с которыми мы, возможно и познакомимся в процессе программирования, но возможно нам это и не потребуется, так как все низкоуровневые функции возьмёт на себя FMC.

 

Можно также немного познакомиться с тем как же всё-таки вообще читаются и пишутся данные. Я думаю, многим это будет интересно. Хотя конечно всё это можно найти, почитав техническую документацию.

Сначала рассмотрим некоторые команды.

Команда активации

 

 

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

 

 

Следующая после неё команда уже скажет памяти о том, читаем мы с неё или пишем в неё, а также передаст адрес колонки.

Команда чтения

 

 

Здесь мы видим необходимые состояния ножек.

Команда записи

 

 

Здесь мы также видим приблизительно ту же картину, единственное отличие — ножка WE в низком состоянии. Вот по её состоянию микросхема и поймёт что мы в неё пишем. В двух последних операциях уже передаётся адрес колонки.

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

Время от времени мы всё равно будем поглядывать и в даташит микросхемы, и отладочной платы, а также будем конечно и к схеме отладочной платы обращаться.

В следующей части занятия мы уже плотно займёмся созданием проекта для решения нашей поставленной задачи — работе с памятью SDRAM с использованием контроллера памяти FMC.

 

Предыдущий урок Программирование МК STM32 Следующая часть

 

Техническая документация на микросхему SDRAM MT48LC4M32B2

 

 

Отладочную плату можно приобрести здесь 32F746G-DISCOVERY

 

 

Смотреть ВИДЕОУРОК (нажмите на картинку)

 

Post Views: 4 888

narodstream.ru

Изучаем STM32. Урок 0. Что, как почему...

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

Да, многие могут воскликнуть, — ЗАЧЕМ? ведь есть давно вдоль и поперёк изученный Atmel с мегами, ардуины и прочяя атмелятина, а также PIC и т.д.))). Кто то даже отметит что STM32это барахло, а надо идти за дорого брат процессоры от Freescale и им подобным. Но тут никто никого не призывает с чего то спрыгивать, на что то пересаживаться. Мне нравиться продукция STM всеми своими сторонами, и то что она заполонила мир — это её заслуга, как в своё Windows захватил мир компов. Вобщем я тут учу STM32 , а кому чего не нравиться, идите жалуйтесь в свой двор)))

Почему СТМ32 а не АтМега 2560 или AtXmega. Начну с того, что для начала советую посмотреть цены. Вот маленький пример для сравнения
СТМ32F030F4P6 -самый малыш в линейке. Корпус TSSOP20, (48 МГц, 16 Кбайт Flash, 4 Кбайта SRAM, 4 таймера 16 бит, 11 каналов 12-битного АЦП, по 1 интерфейсу SPI, I2C и USART). Да конечно, тяжеловато по первой данный корпус поставить на плату, да и расстояние между дорожками 0,25мм тоже может тяжеловато для изготовления, но это всего лишь издержки.
Цена его — 21грн

А теперь давайте попробуем найти ему альтернативу хотя бы по простейшим параметрам типа памяти
Attiny2313 — 36 грн (1кб флэш)
Atmega8 — 27 грн (8кб флэш)
Атмега16 — 52грн (16кб флэш)
STM8S003K3T6 — 21грн (8кб флэш)
ATX меги не пишу так как им цену сложить не могут

Ну а теперь всё это дело нафаршируем 32х битной математикой за один такт и получим то, что уже не остановить — технический прогресс.

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

Итак, что нам вообще нужно для работы с STM32.
Первое — либо купленный процессор, либо как в моём варианте — отладочная плата STM32 Discovery. Я взял одну из старших плат в линейке, чтобы так сказать иметь "топовое" орудие)) Оно нам потом ещё пригодится.

Программатор

Кто взял — Discovery — тому программатор не нужен. Так как в этом случае сама плата помимо отладки ещё и выполняет функцию программатора. Вам потребуется лишь USB->microUSB кабель для работы с отладочной платой.
Кто не покупал STM32 Discovery - тому просто нужно купить вот такой программатор ST_Link mini Также, для начала можно вообще обойтись простым загрузчиком на базе UART-преобразователя (FT232RL и ему подобным) и заливать прошивку через UART, через программу ST-LINK Utility

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

Тут на выбор несколько вариантов
IAR — давно известный но платный (в бесплатном ограничение по коду)
CooCox + GNU компилятор — бесплатный вариант (один из лучших)
Keil uVision 4\5 — платный, но возможны варианты))

Также STM сделало не совсем давно супер решение STM32CubeMx — программа для настройки всей периферии в любом контроллере и получении уже готового проекта. единственное что по простому данная программа не может экспортировать проект в CooCox, но это решается небольшими танцами с бубном. НО — РЕШАЕТСЯ.


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

В своих же уроках я начну с Keil, и если всё таки CooCox понравиться — то буду делать уроки для двух сред.
На этом я думаю вступление можно заканчивать (може чего и добавлю по мелочи). В следующем уроке, Уроке1, мы будем изучать нашу программу STM32CubeMX и создавать первый проект типа Hello World — моргание светодиодами.

stmteacher.blogspot.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *