Разделы справочника
Справочник инженера встраиваемых систем: STM32, ESP32, схемотехника, язык C, RTOS, сети. Каждый раздел проверен сборкой и прогоном. Есть виртуальная лаборатория, калькуляторы и приложение для Android.
- I. Основы
- 1. Микроконтроллер как таковой
- 2. Портфель STM32 и выбор камня
- 2а. Клоны и подделки STM32: как отличить
- 2б. STM32U5 и TrustZone: чем новое поколение отличается от F4
- 2в. STM8: восьмибитный родственник — что взять, а что нет
- 2г. Миландр К1986ВЕ92: отечественный Cortex-M3 рядом с STM32
- 2д. STM32U585CIU6 в корпусе на 48 выводов: что остаётся от U585 и на что его ставить
- 2е. TrustZone на практике: SAU, GTZC, шлюз вызовов и два проекта на STM32U585
- 2ж. BlackPill на STM32F411: Cortex-M4 с FPU по цене BluePill — плата, загрузка по USB и три примера
- 3. Язык C для встраиваемых систем
- 3а. Битовые операции
- 4. Инструментарий
- 4а. Keil: проект и структура программы
- 4б. STM32CubeIDE: проект, сборка, отладка и разбор сбоев
- 4в. Сборка без среды: GCC, Makefile, стартовый код и свой скрипт компоновщика
- 5. Три уровня абстракции: CMSIS, HAL и LL
- 5а. HAL в работе: три режима обмена, состояния, обратные вызовы
- II. Ядро и системные механизмы
- 6. Тактирование (RCC)
- 7. Прерывания и исключения
- 7а. Вход в исключение изнутри: кадр стека, EXC_RETURN и FPU
- 7б. Ассемблер Cortex-M: Thumb-2 глазами C
- 7в. Ассемблер Cortex-M на практике: стартовый код, атомики, DSP и переключение задач
- 8. Порты ввода-вывода (GPIO)
- 9. Прямой доступ к памяти (DMA)
- 9а. GPDMA на STM32U5: связные списки, триггеры и приём в кольцо без прерываний
- 10. Питание и энергосбережение
- 10а. Малое потребление на L4 и U5: Stop 2, Stop 3, Standby с SRAM2, Shutdown
- 10б. LPBAM на STM32U5: периферия работает в Stop 2, пока ядро спит
- 11. Память, компоновка, загрузка
- 11а. MPU: защита памяти от своих же ошибок
- 11б. Кэш, TCM и домены памяти у F7 и H7
- 11в. Защита чтения на F1: почему уровень 1 не спасает прошивку
- 12. Служебные блоки: сторожевые таймеры, CRC, RTC
- 12а. RTC нового образца: доли секунды, калибровка, пробуждение, TAMP
- 12б. Самопроверка прошивки: ОЗУ, Flash, такты и ядро во время работы
- III. Периферия
- 13. Таймеры (TIM)
- 13а. Сервопривод: ШИМ 50 Гц, импульс 1–2 мс, угол, плавное движение и питание
- 13б. Зуммер: активный и пассивный, ноты на таймере, мелодия без блокировки
- 13в. 16-канальный ШИМ PCA9685 по I2C: сервоприводы и светодиоды без таймеров микроконтроллера
- 14. Аналого-цифровой преобразователь (АЦП)
- 14а. Ошибки АЦП: смещение, усиление, нелинейность и шум — что калибруется, а что нет
- 15. Цифро-аналоговый преобразователь (ЦАП)
- 15а. АЦП нового образца на G4: дифференциальный вход, передискретизация до 16 бит, две калибровки
- 15б. Внешний АЦП ADS1115 по I2C: 16 бит, усилитель PGA, мультиплексор, режимы преобразования и вывод ALERT/RDY
- 15в. Внешний ЦАП MCP4725 по I2C: 12 бит, быстрая запись и EEPROM, опорное от питания, генерация сигнала
- 16. UART / USART
- 16а. RS-485: линия, терминаторы, смещение и направление передачи
- 16б. Приём UART без потерь: DMA в кольцо, IDLE и половина буфера
- 16в. Bluetooth-модуль HC-05/HC-06: прозрачный UART, AT-режим, сопряжение и протокол поверх канала
- 16г. MP3-модуль DFPlayer Mini по UART: кадр команды, контрольная сумма, очередь треков, громкость и ответы модуля
- 17. Шина I²C
- 17а. Микроконтроллер как ведомое устройство: I²C и SPI
- 18. Шина SPI
- 18а. Звук по I2S: кадр, форматы и точная частота отсчётов
- 18б. SAI и DFSDM: многоканальный звук и цифровые микрофоны
- 18в. Синтезатор на STM32: разбор модулей Mutable Instruments — кодек, блок сэмплов и DSP в реальном времени
- 18г. RFID-считыватель RC522: MFRC522 по SPI, поиск карты, UID, антиколлизия, чтение блоков MIFARE Classic
- 18д. NFC-модуль PN532: кадры по I2C/SPI/UART, ACK, чтение UID и NTAG2xx, эмуляция и отличие от RC522
- 18е. DDS-генератор AD9833 по SPI: фазовый аккумулятор, частота и фаза, синус/треугольник/меандр, свип и FSK
- 19. Шина CAN
- 19а. CAN FD на FDCAN: 64 байта, две скорости, память сообщений
- 19б. CANopen: словарь объектов, NMT, PDO и SDO
- 19в. ISO-TP (ISO 15765-2): длинные сообщения поверх CAN
- 19г. OBD-II: диагностика автомобиля по CAN — режимы, PID и коды ошибок
- 19д. UDS (ISO 14229): сеансы, чтение данных, ошибки и прошивка через диагностику
- 19е. Файлы DBC: как расшифровать чужую шину CAN
- 19ж. USB-CAN адаптер и SocketCAN: candleLight, can-utils и стенд для автодиагностики
- 19з. rusEFI: открытый блок управления двигателем на STM32 — датчики, CAN и диагностика
- 19и. J1939: CAN грузовиков и спецтехники — PGN, SPN и диагностика DM1
- 19к. K-line: диагностика старых машин по ISO 9141 и KWP2000 на UART
- 19л. LIN: дешёвая шина кузовной электроники — break, sync, PID и расписание кадров
- 19м. rusEFI изнутри: искра и впрыск по углу коленвала — накопление, опережение и очередь событий на одном таймере
- 19н. CAN-контроллер MCP2515 по SPI: когда в микроконтроллере нет bxCAN, битовое время на 8 МГц, буферы, фильтры и прерывания
- 20. USB
- 20а. USB OTG и хост; 48 МГц без кварца
- 20б. USB-C и UCPD: питание и роли по кабелю
- 20в. USB HID на практике: дескриптор отчёта и составное устройство
- 20г. Клавиатура на STM32: разбор QMK — матрица, антидребезг, слои и USB HID
- 20д. Своё USB-устройство без драйвера: дескрипторы по байтам, MS OS 2.0 и WinUSB
- 21. Отладочный вывод SWO и ITM
- 21а. RTT: вывод и ввод через отладчик без SWO и без UART
- 22. Внешняя обвязка и индикация
- 22а. Графический интерфейс на дисплее: буфер кадра, LTDC, DMA2D и сенсор
- 22б. Камера по DCMI: кадр в память через DMA
- 22в. Сегментный ЖКИ: стекло, мультиплекс и контроллер LCD
- 22г. Адресные светодиоды: WS2812B, SK6812 RGBW и SK6812WWA — протокол, тайминги, SPI, таймер с DMA, питание и уровни
- 22д. Символьный ЖК-дисплей LCD1602 на HD44780: 4 бита, инициализация, время команд, CGRAM, I²C-переходник
- 22е. Драйверы индикаторов TM1637 и MAX7219: свой двухпроводный протокол, SPI-слова, яркость, каскад матриц 8×8
- 22ж. ИК-пульт и протокол NEC: приёмник VS1838/TSOP, захват таймера, декодер на прерываниях, повтор и шум
- 22з. Цветной TFT-дисплей ST7735 по SPI: инициализация, окно адресов, RGB565, шрифт, DMA и частичное обновление
- 22и. Расширитель портов MCP23017 по I2C: 16 линий, прерывания по изменению, клавиатура и дребезг
- 22к. Резистивный тачскрин и контроллер XPT2046 по SPI: измерение X/Y, давление, калибровка по трём точкам и фильтрация дребезга
- 43. Аппаратная криптография: CRC, RNG, HASH, CRYP
- 43а. Откуда TLS берёт случайность: аппаратный RNG, свой источник энтропии и проверка качества
- 43б. Защищённый элемент ATECC608: ключ, который не читается из прошивки
- 44. Аналоговые блоки внутри кристалла: OPAMP и COMP
- 45. Сенсорный ввод: TSC
- 46. Таймеры специального назначения: HRTIM и LPTIM
- 46а. CORDIC: синус, косинус и фаза за несколько тактов
- 46б. FMAC: фильтр-ускоритель G4 — КИХ и БИХ без процессора
- IV. FreeRTOS
- 23. Зачем нужна операционная система
- 23а. Прибор без ОС: автоматы, очередь событий, неблокирующие драйверы
- 24. Устройство FreeRTOS
- 25. Управление памятью
- 26. Задачи
- 27. Очереди
- 28. Прерывания в RTOS
- 29. Программные таймеры
- 30. Синхронизация и потокобезопасность
- 31. События и уведомления
- 32. Буферы потоков и сообщений
- 32а. Активные объекты: архитектура прибора на событиях — задача, своя очередь и автомат
- 33. Конфигурирование и энергосбережение
- 33а. Сторожевой таймер для нескольких задач: кто завис и как это заметить
- 33б. Трассировка FreeRTOS: макросы trace и временная диаграмма задач
- 34. Макросы и функции FreeRTOS: справочник
- 34а. Zephyr: другая операционная система — обзор для того, кто знает FreeRTOS
- V. Отладка и качество
- 35. Отладка
- 35а. Semihosting: вывод и файлы через отладчик
- 35б. Прошивка и отладка из командной строки: OpenOCD, GDB, CubeProgrammer CLI
- 35в. Отказ в поле: слепок состояния, переживающий сброс, и разбор после перезагрузки
- 35г. Журнал на приборе: уровни, кольцевой буфер и двоичные записи вместо printf
- 35д. Как отладчик управляет ядром: SWD, порты DP и AP, остановка ядра и точки останова FPB
- 36. Типовые проблемы: симптом → причина → лечение
- 36а. Приборы на столе: мультиметр, осциллограф, логический анализатор
- 36б. Самопроверка во время работы: ядро, ОЗУ, флеш, частота
- 36в. Помехоустойчивая прошивка: ловушки в свободной Flash, пустые векторы, контроль хода программы
- 36г. Осциллограф, часть 1: вход канала, развёртка, память и режимы сбора
- 36д. Осциллограф, часть 2: запуск — все виды синхронизации и когда какой нужен
- 36е. Осциллограф, часть 3: курсоры, автоизмерения, математика и БПФ
- 36ж. Осциллограф, часть 4: декодирование шин, маски, сегментированная память, сохранение и управление по SCPI
- 36з. Гальваническая развязка при измерениях: земля осциллографа, изолированные каналы, дифференциальный щуп
- 36и. Свой дифференциальный щуп: изолированный усилитель, развязанное питание, делитель и проверка
- 36к. Генераторы сигналов: функциональный, DDS, произвольной формы и генератор на STM32
- 36л. Анализаторы: логический, спектра, цепей (NanoVNA) и шин
- 36м. Старшие осциллографы RIGOL: DHO1000 и DHO4000 — что добавляется и чем отличается управление
- 36н. Осциллограф и генератор в работе: практикум на DHO900 и DG900 Pro
- VI. Практикум
- 37. Приложения IoT
- 37а. Сколько стоит TLS на микроконтроллере: Mbed TLS по флешу и ОЗУ
- 38. Сводный каталог проектов
- 38а. Вопросы для собеседования: сто вопросов по справочнику с короткими ответами и ссылкой на раздел
- 41. Внешняя память: SPI Flash, NAND, SD
- 41а. SD-карта по SDIO: четыре линии данных, команды, DMA и FatFS
- 41б. FSMC и FMC: дисплей 8080, внешняя SRAM и SDRAM
- 41в. Quad-SPI: внешняя флеш как память и код из неё
- 42. Файловая система FatFS
- 42а. LittleFS на SPI NOR: файловая система, которая переживает отключение питания
- 47. Регулирование: обратная связь, П- и ПИД-регулятор
- 48. Собственный загрузчик и обновление прошивки
- 48а. Подпись прошивки: загрузчик проверяет, кто её сделал
- 48б. MCUboot на STM32: два слота, обмен образов и откат
- 48в. Разностное обновление: переслать только изменения прошивки
- 48г. Шифрование образа прошивки: ключ, режим AES и где ключ живёт в приборе
- 48д. Заводской загрузчик ST в системной памяти: вход по BOOT0 и из прошивки, протокол USART, своя утилита прошивки
- VII. Документация и её язык
- 39. Как читать документацию ST
- 39а. Официальные документы: что и где взять
- 39б. Errata на практике: как читать список ошибок кристалла и обходить их
- 39в. Даташит чужой микросхемы → драйвер: HTS221 от первой страницы до проверки без платы
- 40. Англо-русские соответствия по темам
- VIII. Электроника вокруг микроконтроллера
- 49. Напряжение, ток, мощность: закон Ома и первые расчёты
- 50. ВАХ, делитель напряжения, RC-цепи
- 50а. Цепь по частоте: АЧХ, ФЧХ и диаграмма Боде
- 51. Полупроводники: диоды, стабилитроны, биполярные транзисторы
- 52. Управление нагрузками: ключи, реле, MOSFET, драйверы
- 53. Источники питания
- 54. Гальваническая изоляция
- 55. Линейные стабилизаторы
- 56. Операционные усилители
- 57. ШИМ в силовой электронике
- 57а. Двигатели: коллекторный, шаговый, бесколлекторный
- 57б. Ток двигателя: шунт, усилитель, выборка в нужный момент ШИМ
- 57в. VESC и OpenInverter: силовая электроника под управлением по CAN
- 57г. Klipper: STM32 как исполнитель 3D-принтера — шаги по расписанию от компьютера
- 57д. FOC своими руками: SimpleFOC и ODrive — векторное управление бесколлекторным мотором
- 57е. Ток в обмотке шагового двигателя: ШИМ-чоппер и режимы спада
- 57ж. Микрошаг без драйвера: стрелочный шаговый двигатель прямо от таймера
- 57з. Драйвер коллекторного мотора: L298N и TB6612FNG — H-мост, ШИМ на таймере, торможение, энкодер и ПИД скорости
- 57и. Магнитный энкодер AS5600: угол по I2C и ШИМ, нулевая точка, счёт оборотов и скорость
- 58. Импульсные преобразователи
- 59. Цифровая логика: вентили и законы алгебры логики
- 60. Мультиплексоры, дешифраторы, комбинационные схемы
- 61. Минимальная обвязка микроконтроллера: условия запуска
- 62. Защита выводов
- IX. Язык C: от основ до продвинутого
- 63. Как текст становится программой; системы счисления
- 64. Типы данных
- 65. Ветвления и циклы
- 66. Функции, область видимости, рекурсия
- 67. Указатели и адресная арифметика
- 68. Массивы и строки
- 69. Вещественные числа
- 70. Структуры и файлы
- 71. Многомодульные программы, препроцессор, аргументы командной строки
- 72. Отладка и динамические структуры данных
- 73. Измерение времени и производительности
- 74. Библиотеки языка C
- 75. Оптимизация кода
- 75а. Профилировщик на самом камне: выборка счётчика команд по таймеру и через DWT
- 76. Алгоритмы
- 77. Компиляция и компиляторы
- 78. Сокеты и веб-сервер на C
- X. Проектирование, сети и IoT
- 79. Как рождается устройство: этапы разработки
- 80. Прототип на Arduino: плата, среда, первый скетч
- 81. Датчики на прототипе и борьба с шумом
- 81а. Цифровые фильтры: КИХ, БИХ и CMSIS-DSP
- 81б. Алгоритм Гёрцеля: найти тон без БПФ
- 82. Индикация на прототипе: ШИМ, RGB, сдвиговые регистры
- 83. I²C и SPI на прототипе: датчик и дисплей
- 84. Прерывания и время на прототипе
- 84а. От скетча к регистрам: один прибор на четырёх уровнях
- 85. TinyML: машинное обучение на микроконтроллере
- 86. Типы сетей и основные технологии
- 87. Виртуализация, облака, контейнеры
- 88. Распределённые системы и API
- 89. Сетевые протоколы и mesh-сети
- 90. Архитектура IoT-решений
- 91. Платформы интернета вещей
- 92. Радиообследование и карта покрытия
- 93. LoRa: радио, модуль SX1276, дальность
- 93а. nRF24L01: радио 2,4 ГГц на SPI — адреса, каналы, Enhanced ShockBurst, подтверждения и повторы
- 94. LoRaWAN: сеть, ключи, классы
- 94а. NFC-метка ST25DV: телефон и микроконтроллер делят одну память
- 94б. Flipper Zero изнутри: STM32WB55, FreeRTOS и радио 433 МГц, NFC, RFID и ИК в одной прошивке
- XI. Датчики: подключение, схемы, драйверы
- 95. Как подключать датчики: питание, подтяжки, уровни, провода
- 95а. Преобразователи уровней: транзистор с подтяжками, TXB и TXS — почему модуль не работает с I²C и длинным проводом
- 96. Температура: NTC-термистор и DS18B20
- 97. Влажность: DHT22, SHT31 и AHT20
- 98. Давление и высота: BMP280 и BME280
- 99. Движение: MPU-6050 и ADXL345
- 99а. Полётный контроллер на STM32: разбор Betaflight — гироскоп 8 кГц, фильтры, PID и DShot
- 99б. Ориентация по IMU: кватернион, фильтр Маджвика и калибровка магнитометра
- 99в. GPS-приёмник NEO-6M: NMEA по UART, разбор строк, контрольная сумма, время и координаты, PPS
- 99г. Магнитометр-компас QMC5883L/HMC5883L по I2C: курс, калибровка hard/soft iron, наклон и магнитное склонение
- 100. Расстояние и присутствие: HC-SR04 и HC-SR501
- 100а. Присутствие человека радаром 24 ГГц: HLK-LD2420 — дальность по воротам, протокол UART и настройка порогов
- 100б. Лазерный дальномер VL53L0X: время пролёта по I2C, режимы точности и скорости, несколько датчиков на одной шине
- 101. Ток и напряжение: INA219 и ACS712
- 101а. Монитор тока и мощности INA226: 16 бит, калибровочный регистр, усреднение, тревога по порогу и счёт энергии
- 102. Вес: тензодатчик и HX711
- 103. Свет и газ: фоторезистор, BH1750, MQ
- 103а. Пульсоксиметр MAX30102: фотоплетизмограмма по I2C, FIFO, выделение пульса и оценка SpO₂ — и почему это не медицинский прибор
- 103б. Датчик цвета TCS34725 по I2C: каналы RGBC, время интегрирования и усиление, баланс белого, цветовая температура и освещённость
- 103в. Датчик пыли PMS5003 по UART: кадр 32 байта, PM1.0/PM2.5/PM10, активный и пассивный режим, сон и индекс качества воздуха
- 104. Термопара: MAX31855 и MAX6675
- 104а. Паяльник на STM32: разбор IronOS — термопара в жале, ПИД и USB Power Delivery
- 104б. ИК-термометр MLX90614 по SMBus: температура объекта без контакта, PEC, излучательная способность и поле зрения
- XII. Сети и DevOps для инженера
- 105. Сеть снизу вверх: Ethernet, MAC, IP, подсети, ARP
- 106. TCP и UDP изнутри: рукопожатие, окна, повторы, NAT
- 106а. Ethernet на F407: RMII, PHY по MDIO и дескрипторы DMA
- 106б. Пакет по байтам: Ethernet, ARP, IPv4, ICMP, UDP и TCP глазами микроконтроллера
- 106в. lwIP на STM32: буферы, три интерфейса и память
- 106г. GSM-модем SIM800L по UART: AT-команды, SMS, звонок и TCP через GPRS — разбор ответов без блокировки
- 107. Что происходит, когда вводишь адрес: DNS, DHCP, HTTP, TLS
- 108. Маршрутизация, VLAN, Wi-Fi и VPN
- 109. Git для инженера: ветки, история, версии прошивки
- 110. CI/CD для прошивки: сборка в контейнере, тесты, артефакты
- 110а. Прошивка под присмотром конвейера: дельта размера на каждую правку и assert без строк в рабочей сборке
- 110б. Плата на столе в конвейере: pytest, последовательный порт и свой исполнитель
- 111. Контейнеры и инфраструктура: Compose, образы, обратный прокси
- 112. Наблюдаемость: логи, метрики, оповещения
- XIII. Другие языки и их сборщики
- 113. Ada и SPARK: Alire, GNAT для Cortex-M, доказательство
- 114. Rust: Cargo, no_std, cortex-m-rt, embedded-hal
- 115. Менеджеры сборки для прошивки: PlatformIO, west (Zephyr), CMake-пресеты
- 115а. CMake-проект прошивки: от .ioc до VS Code
- 115б. Последовательный порт со стороны компьютера: мосты, драйверы, терминалы, задержки
- 115в. Python рядом с прибором: порт, байты, журнал, скрипт-испытатель
- 115г. Форматы обмена: TLV, protobuf (nanopb) и CBOR на микроконтроллере
- XIV. Машинное обучение на микроконтроллере
- 116. Типовые подходы и алгоритмы: от порога до маленькой нейросети
- 117. Данные с датчика: окна, признаки, CMSIS-DSP
- 118. Обучение маленькой модели в контейнере
- 119. Квантование в int8: CMSIS-NN и TensorFlow Lite Micro
- 120. Обнаружение аномалий: вибрация и предиктивное обслуживание
- 121. Классика против ML: фильтр Калмана и оценка заряда батареи
- 121а. OpenMV: камера с машинным зрением на STM32H7 — DCMI, MicroPython и поиск объектов
- 121б. Звук на микроконтроллере: от PDM-микрофона к MFCC и распознаванию команды
- 121в. STM32N6 и камера с нейросетью на батарейке: YOLO на NPU Neural-ART, малое потребление, уличный прибор
- XV. Язык C глубже
- 122. Целые типы и преобразования: продвижение, знак, переполнение
- 123. Неопределённое поведение: где прячется и как его ловить
- 124. volatile, const и атомарность: прерывания и C11
- 125. Объявления и указатели на функции: таблицы обработчиков и обратные вызовы
- 126. Данные в памяти: выравнивание, упаковка, битовые поля, порядок байт
- 127. Препроцессор как инструмент: X-макросы, _Generic, static_assert
- 128. Стандарты C99–C23: что изменилось для прошивки
- 129. MISRA C и защитное программирование
- 129а. Модульные тесты прошивки на ПК: подмена железа, свой маленький раннер и покрытие
- 129б. Статический анализ прошивки: clang-анализатор, gcc -fanalyzer и cppcheck в конвейере
- XVI. Печатная плата
- 130. Плата для микроконтроллера: принципы
- 130а. Как читать принципиальную схему: обозначения, цепи, листы
- 130б. Тепло на плате: тепловое сопротивление, площадь меди и переходные под корпусом
- 131. KiCad: плата скриптом и проверка из командной строки
- 132. DipTrace: схема, плата и плагины
- 132а. DipTrace: свои корпуса и компоненты
- 132б. DipTrace: слои, правила, трассировка и медь
- 132в. DipTrace: проверки, панель и файлы для завода
- 132г. DipTrace: скоростные цепи, дифференциальные пары, переходы к заливкам
- 132д. DipTrace: схема и плата вместе — иерархия, SPICE, спецификация, 3D
- 133. Altium Designer: проект, правила, выпуск
- 134. Другие программы и перенос плат между ними
- XVII. Системное программирование на C
- 135. Процесс: запуск, окружение, память, лимиты, завершение
- 136. fork, exec, wait и сигналы
- 137. Обмен между процессами: каналы, сокеты, очереди, общая память
- 138. Демон и его журнал: setsid, syslog, файл блокировки, backtrace, core
- 139. Потоки POSIX и синхронизация: mutex, cond, rwlock, барьер, TLS
- 140. Потоки C11, атомарные операции и OpenMP
- 141. Неблокирующий ввод-вывод: select, poll, epoll, дескрипторы событий
- 142. Веб-сервисы на C: HTTP, REST, CGI, FastCGI, sendfile
- 143. Статические и динамические библиотеки: .a, .so, soname, rpath, LD_PRELOAD, dlopen
- 144. Ассемблер x86-64 глазами C: регистры, соглашение вызовов, gcc -S, inline asm, nasm
- 145. UNIX как среда разработки: POSIX, getopt, make, CMake, Meson, diff, gdb, valgrind, strace
- 146. Объектно-ориентированный C: непрозрачные указатели, таблицы функций, наследование, _Generic
- 146а. C++ на микроконтроллере: что бесплатно, а что дорого
- 147. Ядро Linux: сборка, модуль, символьное устройство, ioctl
- 148. Базы данных из C: SQLite, PostgreSQL (libpq), Redis (hiredis)
- 149. Графика и игры на C: SDL2, игровой цикл, OpenGL
- XVIII. ESP32: второй микроконтроллер
- 150. ESP32 как платформа: чип, модуль, память, выводы, загрузка
- 151. ESP-IDF и инструменты: idf.py, компоненты, Kconfig, разделы, esptool, QEMU, Arduino
- 152. FreeRTOS на двух ядрах: закрепление задач, спин-блокировки, тик, стек, esp_timer, сторож
- 153. GPIO и ШИМ на ESP32: выводы, электрика, strapping, матрица сигналов, LEDC, MCPWM
- 154. АЦП и ЦАП ESP32: затухание, калибровка, ADC2 и Wi-Fi, непрерывный режим, ЦАП и косинус
- 155. Хранение на ESP32: таблица разделов, NVS, SPIFFS, FAT с выравниванием износа
- 156. Сеть на ESP32: esp_netif и lwIP, DHCP, SNTP, syslog, HTTP REST, MQTT
- 157. Сон и малопотребляющий домен ESP32: режимы питания, память RTC, пробуждение, сопроцессор ULP
- 158. Bluetooth LE на ESP32: реклама, GATT-сервер на NimBLE, характеристики и уведомления
- 159. Обновление по сети на ESP32: разделы OTA, загрузчик, подтверждение и откат
- 160. Длинные линии на плате и в проводах: волновое сопротивление, отражения, согласование, фронт I²C
- 161. Питание и нагрузки вокруг ESP32: стабилизатор, пики Wi-Fi, ключи, реле и выбросы
- XIX. Аналоговый тракт: ОУ и родственные элементы
- 162. Однополярный тракт под АЦП: y = m·x + b
- 163. Устойчивость: запас по фазе, ёмкостная нагрузка, компенсация
- 164. Параметры реального ОУ: входной ток, помеха по питанию, полный размах
- 165. Шум: сложение, резисторы, усилитель, 1/f и бюджет под АЦП
- XX. Элементы и типовые схемы вокруг МК
- 166. Резисторы в деталях: ТКС, импульс, шунт, делитель батареи
- 167. Конденсаторы в деталях: классы керамики, ESR и ESL, развязка, электролиты
- 168. Катушки, дроссели и ферритовые бусины: LC-фильтр, резонанс, насыщение
- 169. Диоды в деталях: падение по току и температуре, утечка Шоттки, восстановление, «ИЛИ» питания
- 170. Биполярный транзистор: принцип, четыре режима, насыщение, выключение, источник тока
- 170а. Схемы на двух транзисторах: составные, зеркало, дифкаскад, мультивибратор, верхний ключ и ограничитель тока
- 171. Полевой транзистор: принцип, режимы, порог и сопротивление канала, плато Миллера, паразитный диод
- 172. Ключи: верхний и нижний, драйвер затвора, полумост и мёртвая пауза, плавный пуск, аналоговый ключ
- 173. Защита питания: переполюсовка, предохранитель, ограничитель выброса
- 173а. Пропадание питания: сколько миллисекунд есть, PVD и BOR, что успеть записать
- 173б. Li-ion на плате: заряд, защита и сколько осталось
- 173в. Открытая BMS на STM32: разбор Libre Solar — измерение ячеек, балансировка, защита и SOC
- 174. Кварц и тактовая цепь: две частоты, нагрузочная ёмкость, уход часов, запуск
- XXI. Аналоговые узлы
- 175. Компараторы: задержка, выход с открытым стоком, гистерезис, оконный компаратор
- 176. Инструментальный усилитель: три ОУ, ослабление синфазного, путь для входных токов
- 176а. Токовая петля 4–20 мА: приём датчика и выход на ПЛК
- 176б. Термометр сопротивления PT100/PT1000: ратиометрия и 2-, 3-, 4-проводное подключение
- 177. Источники опорного напряжения: делитель, стабилитрон, ИОН, дрейф и шум
- 178. Активные фильтры: Саллен–Ки, порядок, добротность, фильтр перед АЦП
- 179. Генераторы и нелинейные узлы: релаксационный, мост Вина, точный выпрямитель, пиковый детектор
- 180. Аналоговый тракт вокруг АЦП: ёмкость выборки, буфер, мультиплексор, драйвер
- 181. Аналоговая разводка: общая земля, наводки, экранирование
- XXII. Программная инженерия
- 182. Жизненный цикл прошивки и цена ошибки
- 183. Сроки и люди: бригада, опоздание, оценка по трём точкам
- 184. Тестирование прошивки: уровни, покрытие, мутации, санитайзеры
- XXIII. Приложение к прибору: Dart и Flutter
- 185. Dart для инженера прошивки: байты, числа, разбор кадра
- 186. Асинхронность: поток кадров, таймауты, переподключение, изолят
- 187. Экран прибора на Flutter: виджеты, состояние, команды, тесты
- 188. Сеть приложения: HTTP, WebSocket и MQTT
- 189. BLE и USB-serial: транспорт до прибора, MTU, очередь записей, разрешения
- 189а. Обновление прошивки из мобильного приложения: от кнопки в Flutter до загрузчика STM32
- 190. Телеметрия и выпуск: кольцевой буфер, прореживание, хранение, сборка
- XXIV. Встраиваемый Linux
- 191. Встраиваемый Linux: когда он нужен и из чего собран образ
- 192. Периферия из программы: gpiochip, i2c-dev, spidev, sysfs
- 193. Служба прибора: systemd, журнал, права и сторожевой таймер
- 194. Связь с микроконтроллером: порт со стороны Linux, кадры COBS и CRC
- 195. Обновление по схеме A/B: два слота, подтверждение и откат
- XXV. Мини-проекты
- 196. Мини-проект: термостат на BluePill
- 197. Мини-проект: частотомер на таймере
- 198. Мини-проект: часы на RTC с будильником и коррекцией хода
- 198а. Мини-проект: датчик на батарейке — год на одной CR2032
- 198б. Мини-проект: USB-самописец и программа на ПК
- 198в. Мини-проект: модуль ввода-вывода на Modbus RTU
- 198г. Мини-проект: жесты по акселерометру
- 198д. Мини-проект: логический анализатор из BluePill
- 198е. Мини-проект: CAN-сниффер на STM32 — протокол SLCAN поверх USB CDC
- 198ж. Датчик по UDP: широковещание, обнаружение в сети и свой протокол
- 198з. Веб-страница и REST на STM32: lwIP httpd, SSI и CGI
- 198и. MQTT-клиент на STM32: публикация, подписка и повторное подключение
- 198к. Мини-проект: осциллограф на плате — АЦП, DMA, запуск по фронту и экран на ПК
- 198л. Мини-проект: всё, что есть на F4-Discovery — акселерометр, аудио-ЦАП, микрофон и USB
- 198м. Мини-проект: метеостанция — датчики, журнал и экран
- 198н. Мини-проект: приёмник GPS — NMEA, PPS и точное время
- 198о. Мини-проект: ИК-пульт — приём и передача протокола NEC
- 198п. Мини-проект: MIDI — вход по UART 31250 и синтезатор на ЦАП
- 198р. Мини-проект: OBD-II сканер на STM32 — обороты, скорость, температура и коды ошибок
- 198с. Мини-проект: приборная панель по CAN — обороты, скорость и температура из шины машины
- 198т. Мини-проект: регистратор шины CAN на карту SD — запись поездки и разбор на компьютере
- 198у. Мини-проект: свой блок на шине CAN — датчик, DBC, диагностика UDS и прошивка по шине
- 198ф. Мини-проект: USB-флешка на B-U585I-IOT02A — прибор отдаёт журнал как диск
- 198х. Мини-проект: датчики платы B-U585I-IOT02A — климат, движение и свет
- 198ц. Мини-проект: журнал во внешней Octo-SPI флешке B-U585I-IOT02A
- 198ч. Мини-проект: USB-хост на B-U585I-IOT02A — клавиатура и флешка
- 198ш. Мини-проект: USB-COM и клавиатура в одном приборе на B-U585I-IOT02A — составное устройство CDC + HID
- 198щ. Мини-проект: свой загрузчик серийного прибора на STM32F405 — раскладка по секторам, буферный слот, обновление по UART-Bluetooth и защита от обрыва питания
- 198э. Мини-проект: датчик температуры по Bluetooth LE на P-NUCLEO-WB55 — два ядра, IPCC и свой сервис GATT
- 0. О справочнике
- 0. С чего начать и куда идти
- 0а. Маршрут новичка: двадцать разделов по порядку
- 0б. Маршруты по темам: CAN и диагностика автомобиля
- 0в. Маршруты по темам: от макета к изделию
- 0г. Маршруты по темам: прибор на RTOS — архитектура и наблюдение
- XXVI. От макета к изделию
- 199. Сборка платы на заводе: перечень, файл установки и гербер
- 200. Первое включение новой платы
- 201. Тест в производстве и прошивка на линии
- 201а. Выпуск прошивки: версия, метаданные и один файл на производство
- 202. Калибровка на линии
- 203. ЭМС изделия: помехи, стойкость и проверка в мастерской
- 204. Надёжность: запасы, старение и испытания у себя
- 204а. Корпус прибора: от платы к корпусу, инструменты, проверка до печати
- 205. Документация изделия: комплект, обозначения, ревизии
- 205а. Документы по ЕСКД на прибор: коды, схема Э3, перечень элементов ПЭ3 из KiCad
- 205б. Лицензии открытого кода и SBOM: что можно взять в прошивку
- 206. Сертификация: подтверждение соответствия и радиомодули
- 206а. Сертификация в ЕАЭС по шагам: регламенты, декларация или сертификат, схема, EAC
- 207. Рабочее место сборки: статика, пайка SMD, отмывка
- 208. Прибор от сети 230 В: безопасность и питание
- 208а. Прибор от 24 В: промышленное питание, защита входа и цифровые входы
- 208б. Нагрузка 230 В от микроконтроллера: реле, симистор, твердотельное реле
- Приложения
- A. Карты регистров STM32F1
- A2. Карты регистров STM32F4
- A3. Карты регистров STM32F0
- A4. Карты регистров STM32F2
- A5. Карты регистров STM32F3
- A6. Карты регистров STM32F7
- A7. Карты регистров STM32H7
- A8. Карты регистров STM32H5
- A9. Карты регистров STM32G0
- A10. Карты регистров STM32G4
- A11. Карты регистров STM32C0
- A12. Карты регистров STM32L0
- A13. Карты регистров STM32L1
- A14. Карты регистров STM32L4
- A15. Карты регистров STM32L5
- A16. Карты регистров STM32U5
- A17. Карты регистров STM32WB
- A18. Карты регистров STM32WL
- B. Шпаргалка CMSIS
- C. Шпаргалка HAL API
- D. Шпаргалка FreeRTOS API
- E. Распиновки плат
- F. Сокращения
- G. Указатель регистров и функций
- H. Периферия × серия × раздел: где что есть и где об этом читать