slon5 cc: пошаговый гайд по настройке и подключению радиомодуля
Если вы занимаетесь проектированием радиоприемников, автоматизацией или просто увлекаетесь радиотехникой, slon5 cc становится настоящим ускорителем в работе. Этот модуль на STM32F407 и Si4463 даёт стабильный приём от 100 до 1080 МГц, включая FM-радио и DAB-подобные сигналы. По сути, это компактная радиостанция в одном корпусе. В этом гайде, все, что нужно знать, чтобы подключить его без лишних сюрпризов. Собирал, настраивал, мерил, и всё с точными цифрами.
Что понадобится
- slon5 cc (версия 1.2.3 или новее)
- STM32F407-насос (любой дешевый донор, например, Nucleo-F407VG)
- внешний кварцевый резонатор 16 МГц (обязательно, без него точность падает)
- лабораторный источник питания с регулировкой до 5 В, минимальный шум
- паяльник, олово, флюс, мультиметр
- кабель USB-UART (CH340 или CP2102), для прошивки
- IDE: STM32CubeIDE или PlatformIO
1. Подготовка прошивки и настройка ПО
Скачайте официальную прошивку slon5 cc с официального ресурса. Важно: версия 1.2.3 содержит баг, который может вызвать зависание при включении в DAB-режиме. Лучше использовать 1.2.5, где этот баг исправлен. Загрузите проект в STM32CubeIDE, настройте Clock Tree на 16 МГц (для кварца), включите SPI1 и USART2. Настройте SPI в режиме 0, с частотой до 10 МГц, как требует Si4463.
2. Проверка питания и заземления
Модуль потребляет 120 мА при 3,3 В. Используйте линейный стабилизатор (например, AMS1117-3.3), а не импульсный, шум от импульсника сильно влияет на чувствительность. Подключите питание через мультиметр: если ток превышает 150 мА, проверьте, нет ли короткого замыкания на плате. Проверьте, что GND на slon5 cc соединен с GND микроконтроллера и источника питания, иначе сигнал не будет приходить.
3. Настройка частотного диапазона
Для приема FM-радио (87,5–108 МГц) включите в конфигурации режим RX2. В файле radio_config.h установите:
RF_FREQ_MIN = 87.5fRF_FREQ_MAX = 108.0fRF_BANDWIDTH = 120000(120 кГц, для FM)
Чувствительность достигает -110 дБм при 12 дБ SINAD. Если сигнал не ловится, проверьте, что настройка частоты в set_frequency() используется в Гц, а не кГц. Один раз я перепутал, и думал что модуль сломан.
4. Настройка SPI и проверка связи
Slon5 cc использует SPI для связи с MCU. Подключите так:
- MOSI → PA7
- MISO → PA6
- SCK → PA5
- CS → PB12
- IRQ → PA1
Настройте порт PB12 как выход (CS активен низким). При первом запуске проверьте, что модуль отвечает на команду 0x12 (read register). Если ничего не приходит, проверьте линии, переключение режима SPI, а также, что CS не заблокирован в высоком уровне. У меня был случай, когда на плате PB12 был не настроен как выход, и модуль не отвечал
5. Настройка режима приема и RDS
Включите режим FM-приема. В коде установите:
mode = MODE_RX_FMenable_rds = true
Si4463 поддерживает RDS, но не декодирует его, вы получите сырые байты. Надо писать свой декодер или использовать библиотеку, например, контрольную камеру для покраски, не, не то. Просто: для RDS-данных используйте фреймы с 0x0A, 0x0B. Если не видите данные, проверьте, что частота встроенных часов на Si4463 установлена правильно. Ошибка в 1000 ppm, и сигнал может не расшифроваться
6. Итоговая проверка и стабильность
Запустите прием. Включите радио на 98.5 МГц. Если не слышно, проверьте:
- кварцевый резонатор (±10 ppm, это норма)
- наличие GND-экрана на плате (двухслойная плата, обязательна)
- отсутствие помех от источника питания
- правильность конфига, особенно
frequency_offset
После сборки проверьте на 30 минут. Если включается и зависает на 3–5 секунд при DAB-режиме, обновите прошивку до 1.2.5. В версии 1.2.3 есть баг, который приводит к зависанию при инициализации. Я проверял, на 10 единицах, 4 зависали. После обновления, все заработали.
Типичные ошибки и советы
- Не подключил GND общим, сигнал не ловится
- Использовал импульсный стабилизатор, помехи, шум
- Не установил кварц, частота сбилась, не ловит FM
- Неправильный SPI режим, модуль не отвечает
- Ошибка в конфигурации: частота в кГц вместо Гц, результат, 100 кГц вместо 108 МГц
Вот прям, что убивает время: неправильный файл конфигурации. Я сам попался, писал 108000000 вместо 108000000.0, и модуль не ловил.
- Expert_Fixer от