Dette kredsløbsdiagram er et FM-radiomodtagermodul bygget omkring RDA5807M som kerne-IC'en. Den implementerer primært FM-signalmodtagelse, lydudgang og grundlæggende kontrolfunktionerAnalysen nedenfor er opdelt i kernekomponenter, funktionelle moduler og nøgledesignparametre.

1. Kernekomponent og pinfunktioner
Kerne-IC: RDA5807M
RDA5807M er en stærkt integreret FM-radiomodtager-IC, der understøtter modtagelse af FM-udsendelser og I2C / SDIO seriel kontrolBaseret på skematisk tegning er nøglebenene og deres forbindelser opsummeret nedenfor:
| Pin navn | Funktion | Tilsluttet komponent / Netværk | Beskrivelse |
|---|---|---|---|
| RUTE | Højre kanal lydudgang | Direkte udgang (ingen ekstra komponenter vist) | Leverer analog lyd i højre kanal |
| LOUT | Venstre kanals lydudgang | Direkte udgang (ingen ekstra komponenter vist) | Leverer analog lyd i venstre kanal |
| RCLK | Ursignal-pin | Ingen eksplicit ekstern forbindelse (sandsynligvis intern synkronisering) | Intern ursynkronisering |
| VDD | Strømforsyning input | 3V3 strømnet | 3.3V DC strømforsyning |
| GND | Ground | Globalt GND-net | Fælles strøm og signaljord |
| SDIO | Serielle data I/O | Ben 3 (styresignal) | Kommunikation med MCU til tuning, lydstyrkekontrol osv. |
| SCLK | Serielt ur | Ben 2 (ursignal) | Ursignal til SDIO-kommunikation |
| FMIN | FM-signalindgang | Pind 5 | Modtager FM RF-signal fra antennen |
| X1 | Krystaloscillatorindgang | 32.768 kHz krystal | Giver referenceur til stabil frekvensdrift |
2. Opdeling af funktionelle moduler
2.1 strømforsyningsmodul
- Indgangsspænding: 3.3V DC (reguleret)
- Filtreringskomponenter:
- C8 (0.1µF), C9 (0.1µF): Højfrekvente afkoblingskondensatorer mellem VDD og GND, der undertrykker effektstøj
- C10 (22µF): Bulkelektrolytisk kondensator til lavfrekvensfiltrering og energilagring
- C26 (0.1µF): Yderligere afkobling for yderligere at forbedre strømstabiliteten
Denne flertrinsfiltrering sikrer stabil og støjsvag strømforsyning til FM-modtagerens IC.
2.2 FM-signalmodtagelsesmodul
- Signalindgang:
- FMIN-ben (ben 5) tilsluttes en ekstern FM-antenne (antenneelementet er ikke vist i diagrammet)
- Modtager FM-udsendelsessignaler i 87-108 MHz band
- Krystaloscillatorkredsløb:
- A 32.768 kHz krystal (X1) giver et præcist referenceur
- Sikrer præcis FM-indstilling og forhindrer frekvensforskydning under stationsvalg
2.3 Styrings- og kommunikationsmodul
- Kommunikationsgrænseflade:
- SDIO (serielle data) + SCLK (Serielt ur)
- Kompatibel med I2C eller lignende serielle kommunikationsprotokoller
- Bruges til at forbinde med en ekstern MCU (f.eks. mikrocontroller)
- Pull-up modstande:
- R6 (10kΩ) til SDIO
- R7 (10kΩ) til SCLK
- Begge er forbundet til 3V3, hvilket sikrer stabile logiske niveauer og pålidelig kommunikation
2.4 Lydudgangsmodul
- Lydudgange:
- RUTE: Højre kanal analog lyd
- LOUT: Venstre kanals analog lyd
- Disse output kan være:
- Forbundet direkte til hovedtelefoner
- Forbundet til højttalere (bemærk: en ekstern audio-forstærker er påkrævet for højere effekt)
2.5 Hjælpefiltrerings- og matchningsmodul
- Spoler:
- L1, L2 (100 nH): Sandsynligvis brugt til RF-impedansmatchning eller inputfiltrering ved FM-frontenden
- Hjælper med at reducere signalrefleksion og forbedre modtagefølsomheden
- kondensatorer:
- C13 (100 pF), C14 (24 pF): Arbejd med induktorer for at danne en LC-filternetværk
- Undertrykker højfrekvent interferens og renser FM-signalet
- Jordforbinde:
- Flere GND-forbindelser indikerer en globalt fælles grundlagsdesign
- Reducerer støj og forbedrer den samlede kredsløbsstabilitet
3. Nøgleparametre og designfunktioner
- Driftsspænding: 3.3V
- Fuldt kompatibel med mainstream MCU'er uden niveauforskydning
- Krystalfrekvens: 32.768 kHz
- Branchestandard referencefrekvens for stabil timing
- Kontrolmetode: SDIO + SCLK seriel grænseflade
- Forenklet routing, kun to styreledninger kræves
- Filtreringsdesign:
- Flere effektafkoblingskondensatorer (0.1µF + 22µF)
- LC-filtrering på RF-frontend for stærk støjimmunitet
- Lydudgang:
- Dobbeltkanals analog lyd (ROUT / LOUT)
- Understøtter stereo FM-afspilning
4. Anvendelsesscenarier og udvidelsesforslag
Typiske applikationer
- Bærbare FM-radioer
- Smarte højttalere med FM-radiofunktion
- MCU-styrede FM-modtagersystemer
Udvidelsesmuligheder
- Brug en ekstern teleskopantenne eller PCB-antenne for at forbedre modtagefølsomheden
- Tilføj en lydforstærker (f.eks. LM386) til ROUT/LOUT for at drive større højttalere
- Aktivér avancerede funktioner via MCU-styring:
- Automatisk stationsscanning
- Lagring af forudindstillede kanaler
- Digital lydstyrkekontrol
5. Designnoter og forholdsregler
- Strømstabilitet:
- Sørg for lav ripple på 3.3V-forsyningen for at undgå lydstøj eller ustabil modtagelse.
- Jordforbinde:
- Brug en solid og ensartet jordreference
- Undgå potentielle forskelle mellem strømjord og lydjord for at forhindre støj
- Impedanstilpasning:
- Antennen, der er forbundet til FMIN bør være impedansmatchede (typisk 50Ω) for optimal modtagelse
- Komponentvalg:
- Brug højpræcisionskrystal på 32.768 kHz
- Foretrække NP0 / C0G kondensatorer til RF- og timingrelaterede komponenter på grund af overlegen stabilitet
Radiokredsløbsprogramkode
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
//------------------------------------------------------------------------------




