Чаще всего проект «радио на STM32» сваливается в тишину в динамике по одной причине: модуль RDA5807M или SI4703 не отвечает по шине I2C, потому что не подтянуты линии SDA и SCL или неверно выбран адрес устройства. Проверка начинается не с кода, а с мультиметра и сканера I2C-шины — это занимает пять минут и сразу отсекает половину типичных проблем.
В этой статье разберём полный цикл построения FM-приёмника на микроконтроллере STM32: выбор радиомодуля, схему подключения, настройку периферии в STM32CubeMX, базовый код инициализации и диагностику ошибок. Материал подходит для популярных отладочных плат вроде Blue Pill на STM32F103, но принципы применимы к любой серии — F1, F4, G0 и другим.
Выбор радиомодуля для проекта
Для связки с STM32 чаще всего используют готовые модули с цифровым управлением. Они уже содержат ВЧ-тракт, синтезатор частоты и аудиовыход, а микроконтроллеру остаётся только отправлять команды по шине. Самые доступные варианты — RDA5807M и SI4703, оба управляются по I2C и работают от 3,3 В.
Отдельная категория — трансиверные модули для передачи данных, например NRF24L01+ на шине SPI. Это уже не FM-радио в бытовом смысле, а радиоканал для обмена пакетами между устройствами. Если ваша задача — именно вещательный приём, выбирайте RDA5807 или SI4703; если нужна связь между двумя платами — смотрите в сторону NRF24 или LoRa-модулей.
| Модуль | Интерфейс | Назначение | Питание |
|---|---|---|---|
| RDA5807M | I2C | FM-приёмник с RDS | 3,3 В |
| SI4703 | I2C | FM-приёмник с RDS | 3,3 В |
| TEA5767 | I2C | FM-приёмник (без RDS) | 5 В / 3,3 В |
| NRF24L01+ | SPI | Приёмопередатчик 2,4 ГГц | 3,3 В |
⚠️ Внимание: модули RDA5807M и SI4703 рассчитаны на питание 3,3 В и не толерантны к 5 В по питанию. Подача 5 В на VCC модуля — частая причина его выхода из строя. Платы вроде Blue Pill имеют стабилизатор 3,3 В — берите питание модуля оттуда.
Схема подключения к STM32
Типовое подключение RDA5807M к STM32F103 требует всего четырёх сигнальных линий. Линии SDA и SCL подключаются к выводам I2C1 (по умолчанию PB7 и PB6, но зависит от конкретной серии — сверяйтесь с datasheet на ваш чип). Питание — 3,3 В и общий GND.
Ключевой момент — подтягивающие резисторы на линиях I2C. На многих готовых модулях они уже распаяны, но если собираете на голой микросхеме или модуле без подтяжки, добавьте резисторы порядка 4,7 кОм от SDA и SCL к 3,3 В. Без них шина работать не будет, и это выглядит как «мёртвый» модуль.
- 📻 SDA → PB7 (I2C1_SDA, проверьте распиновку вашей серии STM32)
- 📻 SCL → PB6 (I2C1_SCL)
- 🔊 Аудиовыход модуля — на усилитель или наушники через конденсатор
- 📡 Антенна — кусок провода 70–80 см, подключённый к выводу ANT
- 🔌 Питание 3,3 В и общий GND между модулем и STM32
Короткие провода до модуля заметно снижают наводки на I2C. Если шина «отваливается» при работе передатчика рядом, первым делом сократите длину линий SDA/SCL до 10–15 см.