Analyse af radioskematisk diagram baseret på RDA5807M

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.

FM-radio RDA5807M skematisk diagram

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 navnFunktionTilsluttet komponent / NetværkBeskrivelse
RUTEHøjre kanal lydudgangDirekte udgang (ingen ekstra komponenter vist)Leverer analog lyd i højre kanal
LOUTVenstre kanals lydudgangDirekte udgang (ingen ekstra komponenter vist)Leverer analog lyd i venstre kanal
RCLKUrsignal-pinIngen eksplicit ekstern forbindelse (sandsynligvis intern synkronisering)Intern ursynkronisering
VDDStrømforsyning input3V3 strømnet3.3V DC strømforsyning
GNDGroundGlobalt GND-netFælles strøm og signaljord
SDIOSerielle data I/OBen 3 (styresignal)Kommunikation med MCU til tuning, lydstyrkekontrol osv.
SCLKSerielt urBen 2 (ursignal)Ursignal til SDIO-kommunikation
FMINFM-signalindgangPind 5Modtager FM RF-signal fra antennen
X1Krystaloscillatorindgang32.768 kHz krystalGiver 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
//------------------------------------------------------------------------------

Efterlad en kommentar

Din e-mail adresse vil ikke blive offentliggjort. Krævede felter er markeret *