Программирование STM32. Часть 1: Документация

Начало знакомства с любой вещью лучше всего начинать с инструкции. В некоторых случаях ясно все и так, в других — «хм, ничего не работает, похоже все-таки надо почитать инструкцию». Микроконтроллеры — устройства достаточно сложные, и без прочтения документации с ними уж точно ничего полезного не сделаешь, хотя…

В этой статье мы рассмотрим, как на официальном сайте производителя организована документация на микроконтроллеры STM32, в частности на серию STM32F1. Все статьи цикла можно посмотреть тут: https://dimoon.ru/category/obuchalka/stm32f1.

После каких-нибудь AVR-ок, можно испытать легкий шок от количества разных PDF-ок на микроконтроллеры STM32. Куда глядеть первым делом? Как этим пользоваться? Что ваще происходит?? С первого взгляда ни чего не понятно. Поэтому я решил сделать небольшой обзор мира документации на эти замечательные микроконтроллеры. Особый упор буду делать на STM32F103C8T6, так как далее планирую написать несколько уроков по использованию именно этого камушка.

Основными документами на STM-ки являются следующие:

  1. Datasheet
  2. Reference manual
  3. Programming Manual
  4. Errata Sheet

Datasheet

Datasheet содержит в себе информацию о наличии определенной периферии в конкретном МК, цоколевке, электрических характеристиках и маркировке чипов для STM32F103x8 и STM32F103xB, то есть для вот этих, которые обведены красным прямоугольником:

Некисло, один даташит на 8 микроконтроллеров.

Основное в Datasheet-е

В первую очередь нужно обратить внимание на раздел 7. Ordering information scheme, в котором указано, то обозначает каждый символ в маркировке. Например, для STM32F103C8T6: корпус  LQFP-48, 64Кб flash-а, температурный диапазон –40 to 85 °C.

Далее 2.1 Device overview. В нем есть таблица, в которой сказано, какая периферия есть в конкретном микроконтроллере и в каком количестве:

Основное различие между микроконтроллерами из разных колонок в количестве ножек и объеме флеша, остальное все одинаково. Небольшое исключение составляет первая колонка версий Tx: в этих микроконтроллерах поменьше модулей SPI, I2C и USART-ов. Нумерация периферии идет с единицы: то есть, если в STM32F103Cx у нас 2 SPI, то они имеют имена SPI1 и SPI2, а в STM32F103Tx у нас только SPI1. Так как Datasheet у нас на микроконтроллеры STM32F103x8 и STM32F103xB, то эта таблица справедлива только для этих моделей. К примеру STM32F103C8 или STM32F103CB соответствуют этой таблице, а STM32F103C6 нет, для него есть отдельный даташит.

В разделе 2.2 Full compatibility throughout the family говорится о том, что устройства STM32F103xx являются программно, функционально и pin-to-pin (для одинаковых корпусов) совместимыми.

В reference manual-е есть разделение на следующие «виды» микроконтроллеров: STM32F103x4 и STM32F103x6 обозначены как low-density devices, STM32F103x8 и STM32F103xB как medium-density devices, STM32F103xC, STM32F103xD и STM32F103xE как high-density devices. В устройствах Low-density devices меньше Flash и RAM памяти, таймеров и периферийных устройств. High-density devices имеют больший объем Flash и RAM памяти, а так же имеют дополнительную периферию, такую как SDIO, FSMC, I2S и DAC, при этом оставаясь полностью совместимыми с другими представителями семейства STM32F103xx. То есть, если на каком-то этапе разработки стало ясно, что выбранного микроконтроллера не хватает для реализации всех возможностей, то можно безболезненно выбрать более навороченный камень без необходимости переписывать весь существующий софт, при этом, если новый камень будет в том же корпусе, то отпадает необходимость заново разводить печатную плату.

Reference manual

Поехали далее. Reference manual (справочное руководство) содержит подробное описание всей периферии, регистров, смещений, и так далее. Это основной документ, который используется при создании прошивки под микроконтроллер. Reference manual составлен для большой группы микроконтроллеров, в нашем случае для всех STM32F10xxx, а именно STM32F101xx, STM32F102xx, STM32F103xx и STM32F105xx/STM32F107xx. Но STM32F100xx не входят в этот RM, для них есть свой.

Главное в Reference manual-е

Как было сказано выше, в reference manual-е есть разделение на следующие «виды» микроконтроллеров: low-, medium-, high-density и connectivity
line. В 2.3 Glossary разъяснено, кто есть кто:

  • Low-density devices это STM32F101xx, STM32F102xx и STM32F103xx микроконтроллеры, у которых размер Flash-памяти находится между 16 и 32 Kbytes.
  • Medium-density devices это STM32F101xx, STM32F102xx and STM32F103xx, размер флеш-памяти между 64 и 128 Kbytes.
  • High-density devices это STM32F101xx и STM32F103xx, размер флеш-памяти между 256 и 512 Kbytes.
  • XL-density devices это STM32F101xx и STM32F103xx, размер флеш-памяти между 768 Kbytes и 1 Mbyte.
  • Connectivity line devices это микроконтроллеры STM32F105xx и STM32F107xx.

Наш STM32F103C8T6 является Medium-density device-ом. Это будет полезно знать при изучении периферии, например, есть отдельные разделы про RCC для Low-, medium-, high- and XL-density устройств, и Connectivity line devices.

Далее обратимся к Tabe 1. В ней отмечено, какой раздел применим к конкретному типу микроконтроллеров. У нас это Medium-density STM32F103xx:

Далее все просто: идет куча разделов, в каждом из которых содержится описание на конкретную периферию и ее регистры 🙂

Programming Manual

Programming Manual не является документом первой необходимости в самом начале знакомства с STM-ми, однако является очень важным при углубленном изучении этих микроконтроллеров. Он содержит информацию о процессорном ядре, системе команд и периферии ядра. Причем это не та же самая периферия, которая описана в Reference manual-е.  В нее входят:

  • System timer — системный таймер
  • Nested vectored interrupt controller — контроллер приоритетных прерываний
  • System control block
  • Memory protection unit

Как только мы начнем знакомится с прерываниями в STM32, нам понадобится раздел 4.3 Nested vectored interrupt controller (NVIC). Ну и системный таймер является очень прикольной вещью, который будет полезен в каких-нибудь RTOS или для создания программных таймеров.

Errata Sheet

Errata Sheet — сборник всех известных аппаратных глюков и косяков микроконтроллеров и советов, как их обойти. Довольно веселый документ 🙂 Перед использованием какой-либо периферии, советую суда заглянуть. Это может помочь сократить количество потерянных нервных клеток при отладке своей чудо-прошивки, которая ни как не хочет работать 🙂

Продолжение тут: https://dimoon.ru/obuchalka/stm32f1/uroki-stm32f103-chast-2-iar-cmsis.html

Ссылки:

Datasheet: https://www.st.com/resource/en/datasheet/stm32f103c8.pdf

Reference manual: https://www.st.com/resource/en/reference_manual/cd00171190.pdf

Programming manual: https://www.st.com/resource/en/programming_manual/cd00228163.pdf

Errata sheet: https://www.st.com/resource/en/errata_sheet/cd00190234.pdf

Метки: , , . Закладка Постоянная ссылка.

8 комментариев: Программирование STM32. Часть 1: Документация

  1. Виктор пишет:

    Очень полезные статьи. Начинаю осваивать МК . Случайно наткнулся на Ваши статьи, после которых многие вещи ,которые просто копировал из примеров, стали понятными. Очень просто , а главное
    — лаконично и ничего лишнего! Хотелось бы побольше статей с описанием и комментами готовых примеров для работы с датчиками дисплеями итд… Спасибо!!!

  2. Евгений пишет:

    Спасибо очень доступно

  3. Ден пишет:

    Пацаны , сделайте кто-нибудь видео мануал как подключить St link для считывания прошивки и перепрограмировпния .

    Спасибо

  4. Пашка пишет:

    Спасибо за хорошие статейки!
    Стильно и сильно!

  5. Александр пишет:

    Спасибо)

  6. Ренат пишет:

    Хорошие статьи пишешь! Молодец, спасибо)

Добавить комментарий для Александр Отменить ответ