Toto schéma zapojení je Modul přijímače FM rádia postaveno kolem RDA5807M jako jádro integrovaného obvodu. Implementuje hlavně Příjem FM signálu, audio výstup a základní ovládací funkceNíže uvedená analýza je rozdělena na klíčové komponenty, funkční moduly a klíčové konstrukční parametry.

1. Funkce základních komponent a pinů
Jádro integrovaného obvodu: RDA5807M
Jedno RDA5807M je vysoce integrovaný integrovaný obvod pro přijímač FM rádia, který podporuje příjem FM vysílání a Sériové ovládání I2C / SDIONa základě schématu zapojení jsou níže shrnuty klíčové piny a jejich zapojení:
| Název PIN | funkce | Propojená komponenta / síť | Popis |
|---|---|---|---|
| ÚTĚK | Výstup zvuku pravého kanálu | Přímý výstup (bez zobrazených dalších komponent) | Poskytuje analogový zvuk pravého kanálu |
| KLACEK | Audio výstup levého kanálu | Přímý výstup (bez zobrazených dalších komponent) | Poskytuje analogový zvuk levého kanálu |
| RCLK | Pin hodinového signálu | Žádné explicitní externí připojení (pravděpodobně interní synchronizace) | Synchronizace interních hodin |
| VDD | Vstup napájení | Napájecí síť 3V3 | 3.3V DC napájení |
| GND | Země | Globální síť GND | Společné uzemnění napájení a signálu |
| SDIO | Sériové datové vstupy/výstupy | Pin 3 (řídicí signál) | Komunikace s MCU pro ladění, ovládání hlasitosti atd. |
| SCLK | Sériové hodiny | Pin 2 (hodinový signál) | Hodinový signál pro komunikaci SDIO |
| FMIN | Vstup FM signálu | Kolík 5 | Přijímá FM RF signál z antény |
| X1 | Vstup krystalového oscilátoru | 32.768 kHz krystal | Poskytuje referenční hodiny pro stabilní provozní frekvenci |
2. Rozdělení funkčních modulů
Napájecí modul 2.1
- Vstupní napětí: 3.3V DC (regulované)
- Filtrační komponenty:
- C8 (0.1 µF), C9 (0.1 µF): Vysokofrekvenční oddělovací kondenzátory mezi VDD a GND, potlačující šum
- C10 (22 µF): Objemový elektrolytický kondenzátor pro nízkofrekvenční filtraci a skladování energie
- C26 (0.1 µF): Dodatečné oddělení pro další zlepšení stability napájení
Tato vícestupňová filtrace zajišťuje stabilní a tichý přívod energie k integrovanému obvodu FM přijímače.
2.2 Modul pro příjem FM signálu
- Vstup signálu:
- Jedno Vývod FMIN (vývod 5) připojuje se k externí FM anténě (prvek antény není ve schématu zapojení zobrazen)
- Přijímá signály FM vysílání v 87-108 MHz kapela
- Obvod krystalového oscilátoru:
- A 32.768 kHz krystal (X1) poskytuje přesné referenční hodiny
- Zajišťuje přesné ladění FM a zabraňuje posunu frekvence během výběru stanice
2.3 Řídicí a komunikační modul
- Komunikační rozhraní:
- SDIO (sériová data) + SCLK (sériové hodiny)
- kompatibilní s I2C nebo podobné sériové komunikační protokoly
- Používá se k propojení s externím MCU (např. mikrokontrolérem)
- Pull-up rezistory:
- R6 (10 kΩ) pro SDIO
- R7 (10 kΩ) pro SCLK
- Oba jsou propojeni s 3V3, čímž se zajistí stabilní logické úrovně a spolehlivá komunikace
2.4 Modul zvukového výstupu
- Audio výstupy:
- ÚTĚK: Analogový zvuk pravého kanálu
- KLACEK: Analogový zvuk levého kanálu
- Tyto výstupy mohou být:
- Připojeno přímo k sluchátka
- Připojen k reproduktory (poznámka: externí audio zesilovač je vyžadováno pro vyšší výkon)
2.5 Pomocný modul filtrování a porovnávání
- Induktory:
- L1, L2 (100 nH): Pravděpodobně se používá pro přizpůsobení impedance RF nebo vstupní filtraci na vstupu FM
- Pomáhá snižovat odrazy signálu a zlepšovat citlivost příjmu
- Kondenzátory:
- C13 (100 pF), C14 (24 pF): Práce s induktory pro vytvoření LC filtrační síť
- Potlačení vysokofrekvenčního rušení a čištění FM signálu
- Základy:
- Vícenásobné připojení GND indikuje globální společný základ designu
- Snižuje šum a zlepšuje celkovou stabilitu obvodu
3. Klíčové parametry a konstrukční prvky
- Provozní napětí: 3.3V
- Plně kompatibilní s běžnými mikrokontroléry bez posunu úrovní
- Frekvence krystalu: 32.768 kHz
- Standardní referenční frekvence pro stabilní časování
- Způsob ovládání: Sériové rozhraní SDIO + SCLK
- Zjednodušené směrování, potřeba pouze dvě řídicí linky
- Návrh filtrování:
- Vícenásobné oddělovací kondenzátory pro napájení (0.1 µF + 22 µF)
- LC filtr na RF vstupu pro silnou odolnost proti šumu
- Audio výstup:
- Dvoukanálový analogový zvuk (ROUT / LOUT)
- Podporuje stereo přehrávání FM rádia
4. Scénáře aplikací a návrhy na rozšíření
Typické aplikace
- Přenosná FM rádia
- Chytré reproduktory s funkcí FM rádia
- Systémy FM přijímačů řízené MCU
Možnosti rozšíření
- Použijte tlačítko externí teleskopická anténa nebo anténa na plošný spoj pro zlepšení citlivosti příjmu
- Přidat komentář zesilovač zvukového výkonu (např. LM386) na ROUT/LOUT pro řízení větších reproduktorů
- Povolte pokročilé funkce pomocí ovládání MCU:
- Automatické skenování stanic
- Ukládání přednastavených kanálů
- Digitální ovládání hlasitosti
5. Poznámky a bezpečnostní opatření k návrhu
- Výkonová stabilita:
- Zajistěte nízké zvlnění na 3.3V napájení, abyste zabránili šumu nebo nestabilnímu příjmu.
- Základy:
- Použijte pevný a konzistentní referenční bod země
- Zabraňte rozdílům v potenciálu mezi uzemněním napájení a uzemněním audio, abyste předešli šumu
- Impedanční přizpůsobení:
- Anténa připojená k FMIN by měly být impedančně přizpůsobeny (obvykle 50Ω) pro optimální příjem
- Výběr komponent:
- Použití vysoce přesný krystal 32.768 kHz
- Preferujte Kondenzátory NP0 / C0G pro RF a časovací součástky díky vynikající stabilitě
Programový kód rádiového obvodu
RDA5807.H
/*
**==============================================================================
** RDA5807.H:
**
** Description:
**
**==============================================================================
*/
#ifndef __RDA5807__
#define __RDA5807__
//------------------------------------------------------------------------------
#ifdef RDA5807_GLOBALS
#define RDA5807_EXT
#else
#define RDA5807_EXT extern
#endif // RDA5807_GLOBALS
//------------------------------------------------------------------------------
//==============================================================================
void RDA5807Init(void);
//------------------------------------------------------------------------------
RDA5807_EXT uint16_t g_nRDA5807Channel;
//------------------------------------------------------------------------------
void RDA5807Setup(void);
void RDA5807I2CWrite(uint8_t * pucData, int nLength);
void RDA5807SetChannel(float freq);
//==============================================================================
// END OF THE FILE : RDA5807.H
//------------------------------------------------------------------------------
#endif // __RDA5807__
/*
**==============================================================================
** RDA5807.C:
**
**==============================================================================
*/
//------------------------------------------------------------------------------
#include "stm32f0xx_hal.h"
#include "stm32f0xxa.h"
#define RDA5807_GLOBALS 1 // Define the global variables
#include "RDA5807.H"
//------------------------------------------------------------------------------
#define RDA5807_BOOT_LENGTH 12
uint8_t RDA5807_boot_config[] = {
0xc1, 0x03, // Register 0x2
0x00, 0x00, // Register 0x3
0x0a, 0x00, // Register 0x4
0x88, 0x0f, // Register 0x5
0x00, 0x00, // Register 0x6
0x42, 0x02, // Register 0x7
};
//------------------------------------------------------------------------------
#define RDA5807_TUNE_CONFIG_LENGTH 4
uint8_t RDA5807_tune_config[] = {
0xc0, 0x01, // Register 2
0x00, 0x00, // Reigster 3
};
void RDA5807SetTuneConfig(uint16_t channel) {
RDA5807_tune_config[2] = (uint8_t)(channel >> 2);
RDA5807_tune_config[3] = (uint8_t)(((channel & 0x3) << 6) | 0x10);
}
//------------------------------------------------------------------------------
void RDA5807Init(void) {
/* Assumin band starts at 87.0MHz(per setting below)
* and channel spaceing of 100kHz(0.1Mhz)(per settings below)
* then channel can be derive as floowins:
* channel = (<desired freq in MHz> - 87.0) / 0.1
*
* which is ave as:
* <10x desired ferq in MHz> - 870
*/
g_nRDA5807Channel = 6;
RDA5807Setup();
}
//------------------------------------------------------------------------------
extern I2C_HandleTypeDef hi2c1;
void RDA5807I2CWrite(uint8_t * pucData, int nLength) {
HAL_I2C_Master_Transmit(&hi2c1, 0x20, pucData, nLength, 10);
}
//------------------------------------------------------------------------------
void RDA5807Setup(void) {
RDA5807I2CWrite(RDA5807_boot_config, RDA5807_BOOT_LENGTH);
RDA5807SetTuneConfig(g_nRDA5807Channel);
RDA5807I2CWrite(RDA5807_tune_config, RDA5807_TUNE_CONFIG_LENGTH);
}
void RDA5807SetChannel(float freq) {
g_nRDA5807Channel = (int)((freq - 87.0) * 10.0 + 0.5);
RDA5807SetTuneConfig(g_nRDA5807Channel);
RDA5807I2CWrite(RDA5807_tune_config, RDA5807_TUNE_CONFIG_LENGTH);
}
//==============================================================================
// END OF THE FILE : RDA5807.C
//------------------------------------------------------------------------------




