Ĉi tiu cirkvita skemo estas FM-radioricevilo-modulo konstruita ĉirkaŭ la RDA5807M kiel la kerna IC. Ĝi ĉefe efektivigas FM-signalricevo, aŭdio-eligo kaj bazaj kontrolfunkciojLa analizo sube estas dividita en kernaj komponantoj, funkciaj moduloj, kaj ŝlosilaj dezajnaj parametroj.

1. Kerna Komponanto kaj Pinglofunkcioj
Kerna IC: RDA5807M
la RDA5807M estas tre integra FM-radioricevilo-integrato, kiu subtenas FM-elsendan ricevon kaj I2C / SDIO seria kontroloSurbaze de la skemo, la ŝlosilaj stiftoj kaj iliaj konektoj estas resumitaj sube:
| Pingla Nomo | funkcio | Konektita Komponanto / Reto | Priskribo |
|---|---|---|---|
| VENKO | Dekstra-kanala aŭdio-eligo | Rekta eligo (neniuj ekstraj komponantoj montritaj) | Provizas dekstra-kanalan analogan aŭdion |
| BUTULO | Maldekstra-kanala aŭdio-eligo | Rekta eligo (neniuj ekstraj komponantoj montritaj) | Provizas maldekstra-kanalan analogan aŭdion |
| RCLK | Horloĝa signala stifto | Neniu eksplicita ekstera konekto (verŝajne interna sinkronigo) | Interna horloĝsinkronigado |
| VDD | Potenca provizo enigo | 3V3 potenca reto | 3.3V DC-nutrado |
| GND | tero | Tutmonda GND-reto | Komuna potenco kaj signala tero |
| SDIO | Seria datuma I/O | Stifto 3 (kontrola signalo) | Komunikado kun MCU por agordado, laŭtoreguligo, ktp. |
| SCLK | Seria horloĝo | Stifto 2 (horloĝsignalo) | Horloĝsignalo por SDIO-komunikado |
| FMIN | FM-signala enigo | Pinglo 5 | Ricevas FM RF-signalon de anteno |
| X1 | Kristala oscilatora enigo | 32.768 kHz kristalo | Provizas referencan horloĝon por stabila frekvenca operacio |
2. Funkcia Modula Analizo
2.1 Elektroproviza Modulo
- Eniro Tensio: 3.3V DC (reguligita)
- Filtrilaj Komponentoj:
- C8 (0.1µF), C9 (0.1µF): Altfrekvencaj malkuplaj kondensiloj inter VDD kaj GND, subpremante potencobruon
- C10 (22µF): Groca elektroliza kondensilo por malaltfrekvenca filtrado kaj energiakumulado
- C26 (0.1µF): Plia malkuplado por plue plibonigi potencostabilecon
Ĉi tiu plurŝtupa filtrado certigas stabila kaj malbrua potenco-liverado al la FM-ricevilo-integrato.
2.2 FM-Signala Riceva Modulo
- Signala Enigo:
- la FMIN-stifto (Stifto 5) konektiĝas al ekstera FM-anteno (antena elemento ne montrita en la skemo)
- Ricevas FM-elsendajn signalojn en la 87–108 MHz bando
- Kristala Oscilatora Cirkvito:
- A 32.768 kHz-kristalo (X1) provizas precizan referenchorloĝon
- Certigas precizan FM-agordon kaj malhelpas frekvencan drivon dum stacia elekto
2.3 Kontrola kaj Komunikada Modulo
- Komunikado Interfaco:
- SDIO (Seriaj Datumoj) + SCLK (Seria Horloĝo)
- kongrua kun I2C aŭ similaj seriaj komunikaj protokoloj
- Uzata por interagi kun ekstera mikroregilo (ekz., mikroregilo)
- Rezistiloj por tiro:
- R6 (10kΩ) por SDIO
- R7 (10kΩ) por SCLK
- Ambaŭ estas konektitaj al 3V3, certigante stabilajn logikajn nivelojn kaj fidindan komunikadon
2.4 Aŭdio-eliga modulo
- Aŭdio-eligoj:
- VENKO: Dekstra-kanala analoga aŭdio
- BUTULO: Maldekstra-kanala analoga aŭdio
- Ĉi tiuj eligoj povas esti:
- Rekte konektita al aŭdiloj
- Konektita al parolantoj (noto: ekstera aŭdio-amplifilo estas necesa por pli alta povumo)
2.5 Helpa Filtrado kaj Kongruiga Modulo
- Induktiloj:
- L1, L2 (100 nH): Verŝajne uzata por RF-impedanca akordigo aŭ eniga filtrado ĉe la FM-antaŭa finaĵo
- Helpas redukti signalreflekton kaj plibonigi ricevan sentemon
- Kondensiloj:
- C13 (100 pF), C14 (24 pF): Laboru kun induktiloj por formi LC-filtrila reto
- Subpremu altfrekvencan interferon kaj purigu la FM-signalon
- bazanta:
- Pluraj GND-konektoj indikas tutmonda komuna bazo-dezajno
- Reduktas bruon kaj plibonigas la ĝeneralan cirkvitan stabilecon
3. Ŝlosilaj Parametroj kaj Dezajnaj Trajtoj
- Mastruma tensio: 3.3V
- Plene kongrua kun ĉefaj mikroregiloj sen niveloŝanĝo
- Kristala Frekvenco: 32.768 kHz
- Industri-norma referenca frekvenco por stabila tempigo
- Kontrola Metodo: SDIO + SCLK seria interfaco
- Simpligita vojigo, nur du stiraj linioj necesas
- Filtrada Dezajno:
- Multoblaj potenco-malkuplaj kondensiloj (0.1µF + 22µF)
- LC-filtrado ĉe la RF-antaŭa finaĵo por forta bruimuneco
- Aŭdio Eligo:
- Du-kanala analoga aŭdio (ROUT / LOUT)
- Subtenas sterean FM-reludigon
4. Aplikaĵaj Scenaroj kaj Vastigaj Sugestoj
Tipaj Aplikoj
- Porteblaj FM-radioj
- Inteligentaj laŭtparoliloj kun FM-radiofunkcio
- MCU-kontrolitaj FM-ricevilsistemoj
Vastiĝaj Elektoj
- Uzu an ekstera teleskopa anteno aŭ PCB-anteno plibonigi ricevan sentemon
- Aldoni aŭda potencamplifilo (ekz., LM386) al ROUT/LOUT por funkciigi pli grandajn laŭtparolilojn
- Ebligi progresintajn funkciojn per MCU-kontrolo:
- Aŭtomata stacia skanado
- Antaŭdifinita kanala stokado
- Cifereca laŭtoregilo
5. Dezajnaj Notoj kaj Antaŭzorgoj
- Potenca Stabileco:
- Certigu malaltan ondeton ĉe la 3.3V-provizo por eviti aŭdan bruon aŭ malstabilan ricevon.
- bazanta:
- Uzu solidan kaj koheran grundan referencon
- Evitu eblajn diferencojn inter la elektra tero kaj la aŭda tero por preventi bruon.
- Impedancia Kongruo:
- La anteno konektita al FMIN devus esti impedanc-kongruigita (tipe 50Ω) por optimuma ricevo
- Elekto de komponantoj:
- Uzu a alt-preciza 32.768 kHz kristalo
- Prefere NP0 / C0G kondensatoroj por RF kaj tempigaj komponantoj pro supera stabileco
Radiocirkvita programkodo
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
//------------------------------------------------------------------------------




