Embedded HandbookПриложения
Все разделы › VII. Документация и её язык
STM32F103, STM32F407 · уровень базовый · 12 мин чтения
Открыть в интерактивном справочнике

39. Как читать документацию ST

Рано или поздно любой справочник заканчивается, а вопрос остаётся. Тогда открывают документацию производителя — а она вся на английском, объёмом в полторы тысячи страниц, и разбита на десяток документов с непрозрачными названиями. Этот раздел о том, как в них ориентироваться и как читать их язык.

Хорошая новость: язык документации ST предельно однообразен. Выучив четыре десятка оборотов, вы будете понимать любой её раздел, даже не владея английским свободно.

Как это называется в документации

Оригинал Перевод
datasheet (DS) описание микросхемы: выводы, электрика, корпуса
reference manual (RM) справочное руководство: периферия и регистры
errata sheet (ES) перечень известных ошибок кристалла и обходов
application note (AN) заметка о применении: как решить конкретную задачу
user manual (UM) руководство пользователя платы или программы
programming manual (PM) руководство по программированию ядра
reset value значение регистра после сброса
reserved, must be kept at reset value зарезервировано, оставлять значение после сброса

39.1 Какие бывают документы

Тип Что внутри Когда открывать
DS — Datasheet распиновка, электрические параметры, корпуса, состав кристалла «какой вывод», «сколько тока», «терпит ли 5 В»
RM — Reference manual как работает периферия и все её регистры «какой бит за это отвечает»
PM — Programming manual ядро Cortex-M: система команд, NVIC, SysTick, MPU «что делает эта инструкция», «как устроен NVIC»
ES — Errata sheet известные ошибки кристалла и обходные пути до начала разработки, а не после
AN — Application note готовое решение конкретной задачи «как сделать X правильно»
UM — User manual отладочные платы и инструменты «что распаяно на Discovery»

С каким вопросом в какой документ идти: DS, RM, PM, ES, AN, UM

Главное различие, которое экономит часы поиска:

Для наших двух платформ:

STM32F103 STM32F407
Reference manual RM0008 RM0090
Programming manual PM0056 (Cortex-M3) PM0214 (Cortex-M4)
Errata ES096 ES0182

39.2 Что где искать

Вопрос Документ Раздел (как называется в оригинале)
Какой вывод куда идёт DS Pinouts and pin description
Какая периферия на каком выводе DS Alternate function mapping
Терпит ли вывод 5 В DS там же, колонка I/O structure, пометка FT
Предельные ток и напряжение DS Absolute maximum ratings
Реальные параметры при работе DS Electrical characteristics
Сколько потребляет в каждом режиме DS Supply current characteristics
Как работает периферия и её регистры RM раздел по имени блока
Карта адресов RM Memory map
Дерево тактов RM Reset and clock control (RCC)
Инструкции процессора PM The Cortex-M instruction set
Что сломано в этом кристалле ES Description of device limitations
Как прошить через загрузчик AN2606 Bootloader для вашего семейства

Практический приём. Открыв reference manual, не листайте — пользуйтесь оглавлением в PDF и поиском по имени регистра. Ищите не «GPIO output», а прямо GPIOx_ODR: имена регистров уникальны, и поиск сразу приводит и к описанию бита, и к карте регистров, и к местам, где он упоминается.


39.3 Как устроено описание регистра

Все описания регистров в reference manual построены одинаково. Разобрав одно, вы прочитаете любое. Пример — из RM0008 (STM32F103):

GPIOx_ODR — Port output data register (x = A..G)

Address offset: 0x0C
Reset value: 0x0000 0000

31                            16 15                             0
├─────── Reserved ──────────────┤├──────── ODR15..ODR0 ─────────┤
                                        rw

Bits 31:16  Reserved, must be kept at reset value.
Bits 15:0   ODRy: Port output data (y = 0..15)
            These bits can be read and written by software.

Что читать в первую очередь:

Обозначения доступа

Обозначение Полностью Что означает на практике
rw read/write обычный бит: пишем и читаем
r read-only запись игнорируется
w write-only чтение возвращает нули — не используйте \|=
rc_w1 read / clear by writing 1 сбрасывается записью ЕДИНИЦЫ
rc_w0 read / clear by writing 0 сбрасывается записью нуля
rc_r read / cleared by reading сбрасывается самим чтением
rs read / set by software можно только установить, сбросит железо
t toggle запись единицы переключает бит
Res. reserved не трогать, сохранять значение по умолчанию

Описание регистра EXTI_PR со смещением 0x14 и строчкой rc_w1 под битовой картой, рядом восемь обозначений доступа с примерами: rw у ODR, w у BSRR — чтение даёт нули, rc_w1 у EXTI_PR — сброс записью единицы, rc_r у USART_SR — сброс самим чтением

Отсюда следуют вещи, которые иначе выглядят необъяснимыми:


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

Около сорока оборотов покрывают почти весь текст. Они повторяются дословно из раздела в раздел.

Про биты и регистры

Оригинал Перевод Что делать
must be kept at reset value должен сохранять значение сброса не трогать
this bit is set by hardware бит устанавливается аппаратно вы только читаете
cleared by software сбрасывается программно сбросить самому
cleared by writing 1 сбрасывается записью единицы именно единицы
this bit is set and cleared by software устанавливается и сбрасывается программно обычный настроечный бит
read as 0 читается как ноль не полагайтесь на содержимое
write access is protected запись защищена нужна последовательность разблокировки
this bit can be written only when … is disabled записывается, только пока … выключено сначала выключить блок

Про поведение

Оригинал Перевод
the following sequence must be applied необходимо выполнить следующую последовательность
it is mandatory to обязательно нужно
it is recommended to рекомендуется
shall / must обязан
should следует, но не критично
may / can допустимо
refer to Section 9.2 for details подробности в разделе 9.2
whichever comes first что наступит раньше
unless otherwise specified если не указано иное
is not affected не изменяется
takes effect after … вступает в силу после …
up to до … включительно
at least не менее
typical / min / max типовое / минимальное / максимальное

⚠️ Разница между must, should и may в технической документации не стилистическая. must — нарушение приведёт к неработоспособности, should — нарушение допустимо, но чревато, may — просто возможность. В переводах эту разницу часто стирают, и рекомендация превращается в требование или наоборот.

Слова, которые переводят неправильно

Оригинал Ошибочно Верно
to assert a signal «утверждать» перевести в активное состояние
to negate / deassert «отрицать» снять сигнал
sample «образец» отсчёт, выборка
to latch «защёлкнуть» зафиксировать значение
granularity «гранулярность» шаг, дискретность
overrun «переполнение» приём данных поверх непрочитанных
underrun «недополнение» данные кончились раньше, чем их запросили
idle «холостой» простой, отсутствие активности
frame «рамка» кадр (посылка)
word «слово» в общем смысле ровно 32 бита
half-word «полуслово» 16 бит
wait state «состояние ожидания» такт ожидания
prescaler «прескалер» предделитель
duty cycle «рабочий цикл» коэффициент заполнения D = τ/T, в процентах
jitter «джиттер» дрожание фронта
glitch «глитч» короткая помеха, ложный импульс

Скважность в строгом смысле — обратная величина T/τ: при заполнении 25 % скважность равна 4. В разговоре, и в этом справочнике тоже, «скважностью» часто называют само заполнение (раздел 82.2) — в расчётах их различайте.


39.5 Errata: читать до, а не после

Errata sheet — официальный список того, что в кристалле работает не так, как написано в reference manual. Документ короткий, читается за полчаса, и эти полчаса окупаются многократно.

Типичная запись выглядит так:

2.1.5  I2C analog filter may provide wrong value, locking BUSY flag

Description: ...
Workaround:  ...

То есть: что сломано, при каких условиях проявляется и как обойти.

Классические примеры, на которых теряют дни:

Перечень разбит по ревизиям кристалла, и у многих пунктов сказано, в какой ревизии их исправили, — значит, сначала надо знать свою. Её узнают по букве ревизии в маркировке корпуса или по полю REV_ID — старшим 16 битам DBGMCU_IDCODE по адресу 0xE0042000 (у F1 и у F4 адрес один). Какой код какой букве соответствует — в начале перечня и в описании DBGMCU_IDCODE в справочном руководстве: у F405/F407 0x1000 — ревизия A, 0x1001 — Z. У F103 подвох: без отладчика DBGMCU_IDCODE читается нулём, и программа свою ревизию сама не узнает — это тоже пункт перечня ошибок (раздел 2а).

Симптом всегда один и тот же: код написан строго по документации, а работает не так. Прежде чем искать ошибку у себя третий час — откройте errata.


39.6 Application notes

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

Документ О чём
AN2606 встроенный загрузчик: какие интерфейсы, как войти, протокол
AN2867 как правильно выбрать и развести кварц — почему он «не заводится»
AN4013 таймеры: режимы, синхронизация, каскадирование
AN4776 таймеры общего назначения, практические расчёты
AN2834 АЦП: как получить заявленную точность
AN3116 АЦП: режимы работы и где какой применять
AN4031 DMA: приёмы и подводные камни

Если задача выглядит типовой — почти наверняка по ней есть application note. Поиск: STM32 <тема> application note или прямо AN с номером на сайте ST.


39.7 Как искать

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

Что нужно Что искать в документе
настройка вывода port bit configuration, alternate function
ток вывода output driving current, I/O current injection
частота и делители clock tree, prescaler, PLL configuration
задержки Flash latency, wait states, prefetch buffer
прерывания interrupt and status register, vector table, NVIC
настройка скорости UART baud rate generation, USART_BRR, fractional baud
режимы АЦП conversion modes, sampling time, injected channels
ШИМ PWM mode, output compare, capture/compare
энергосбережение low-power modes, Stop mode, Standby mode
загрузка boot configuration, system memory, option bytes

Приём с таблицами регистров. В конце каждого раздела reference manual есть сводная таблица <блок> register map and reset values — на одной странице все регистры блока со смещениями и значениями после сброса. Обычно это единственное, что нужно, когда механизм уже понятен и требуется лишь уточнить бит.


39.8 Грабли

Сделано строго по документации, а работает не так. Первым делом — перечень ошибок кристалла: там может быть ровно этот случай (39.5).

Рекомендация прочитана как требование — или наоборот. must, should и may различаются по смыслу, в переводах эту разницу стирают (39.4).

Распиновки нет в справочном руководстве. Она в даташите конкретного кристалла; регистры — в справочном руководстве, ядро — в руководстве по ядру (39.1–39.2).


39.9 Итоги

Дальше: раздел 39а «Официальные документы: что и где взять».

Открыть в интерактивном справочнике