Detta kretsschema är ett FM-radiomottagarmodul byggd runt RDA5807M som kärn-IC. Den implementerar huvudsakligen FM-signalmottagning, ljudutgång och grundläggande kontrollfunktionerAnalysen nedan är indelad i kärnkomponenter, funktionella moduler och viktiga designparametrar.

1. Kärnkomponent och pinfunktioner
Kärnkrets: RDA5807M
Ocuco-landskapet RDA5807M är en högintegrerad FM-radiomottagare-IC som stöder mottagning av FM-sändningar och I2C / SDIO seriell styrningBaserat på schemat sammanfattas nyckelstiften och deras anslutningar nedan:
| Pin-namn | Funktion | Ansluten komponent / Nät | BESKRIVNING |
|---|---|---|---|
| VILD FLYKT | Höger kanals ljudutgång | Direktutgång (inga extra komponenter visas) | Ger analogt ljud i höger kanal |
| DRUMMEL | Vänster kanals ljudutgång | Direktutgång (inga extra komponenter visas) | Ger analogt ljud för vänster kanal |
| RCLK | Klocksignalstift | Ingen explicit extern anslutning (troligen intern synkronisering) | Intern klocksynkronisering |
| VDD | Ingång för strömförsörjning | 3V3 strömnät | 3.3V DC strömförsörjning |
| GND | Marken | Globalt GND-nät | Gemensam kraft- och signaljord |
| SDIO | Seriell data-I/O | Stift 3 (styrsignal) | Kommunikation med MCU för finjustering, volymkontroll etc. |
| SCLK | Seriell klocka | Stift 2 (klocksignal) | Klocksignal för SDIO-kommunikation |
| FMIN | FM-signalingång | Stift 5 | Tar emot FM RF-signal från antennen |
| X1 | Kristalloscillatoringång | 32.768 kHz kristall | Ger referensklocka för stabil frekvensdrift |
2. Funktionell moduluppdelning
2.1 Strömförsörjningsmodul
- Inspänning: 3.3V DC (reglerad)
- Filtrera komponenter:
- C8 (0.1µF), C9 (0.1µF): Högfrekventa avkopplingskondensatorer mellan VDD och GND, vilket undertrycker effektbrus
- C10 (22µF): Bulkelektrolytkondensator för lågfrekvensfiltrering och energilagring
- C26 (0.1µF): Ytterligare frikoppling för att ytterligare förbättra effektstabiliteten
Denna flerstegsfiltrering säkerställer stabil och tystgående strömförsörjning till FM-mottagarens IC.
2.2 FM-signalmottagningsmodul
- Signalingång:
- Ocuco-landskapet FMIN-stift (stift 5) ansluts till en extern FM-antenn (antennelementet visas inte i schemat)
- Tar emot FM-sändningssignaler i 87-108 MHz Bandet
- Kristalloscillatorkrets:
- A 32.768 kHz kristall (X1) ger en noggrann referensklocka
- Säkerställer exakt FM-inställning och förhindrar frekvensavvikelse vid stationsval
2.3 Styr- och kommunikationsmodul
- Kommunikationsgränssnitt:
- SDIO (seriell data) + SCLK (seriell klocka)
- Kompatibel med I2C eller liknande seriella kommunikationsprotokoll
- Används för att ansluta till en extern MCU (t.ex. mikrokontroller)
- Pull-up-motstånd:
- R6 (10 kΩ) för SDIO
- R7 (10 kΩ) för SCLK
- Båda är kopplade till 3V3, vilket säkerställer stabila logiknivåer och tillförlitlig kommunikation
2.4 Ljudutgångsmodul
- Ljudutgångar:
- VILD FLYKT: Högerkanalig analog ljudkanal
- DRUMMEL: Vänster kanals analoga ljud
- Dessa utgångar kan vara:
- Ansluten direkt till hörlurar
- Ansluten till högtalare (obs: en extern ljudförstärkare krävs för högre effekt)
2.5 Hjälpfiltrerings- och matchningsmodul
- Indikatorer:
- L1, L2 (100 nH): Används troligen för RF-impedansmatchning eller ingångsfiltrering vid FM-frontänden
- Hjälper till att minska signalreflektion och förbättra mottagningskänsligheten
- Kondensatorer:
- C13 (100 pF), C14 (24 pF): Arbeta med induktorer för att bilda en LC-filternätverk
- Dämpa högfrekventa störningar och rengöra FM-signalen
- Grundstötning:
- Flera GND-anslutningar indikerar en global gemensam grunddesign
- Minskar brus och förbättrar den totala kretsstabiliteten
3. Viktiga parametrar och designfunktioner
- Driftspänning: 3.3V
- Helt kompatibel med vanliga mikrokontroller utan nivåförskjutning
- Kristallfrekvens: 32.768 kHz
- Branschstandardreferensfrekvens för stabil timing
- Kontroll metod: SDIO + SCLK seriellt gränssnitt
- Förenklad routing, endast två styrledningar krävs
- Filtreringsdesign:
- Flera effektavkopplingskondensatorer (0.1 µF + 22 µF)
- LC-filtrering på RF-frontänden för stark brusimmunitet
- Ljudutgång:
- Dubbelkanaligt analogt ljud (ROUT / LOUT)
- Stöder FM-stereouppspelning
4. Tillämpningsscenarier och förslag på expansion
Typiska användningsområden
- Bärbara FM-radioapparater
- Smarta högtalare med FM-radiofunktion
- MCU-styrda FM-mottagarsystem
Expansionsalternativ
- Använd en extern teleskopantenn eller PCB-antenn för att förbättra mottagningskänsligheten
- Lägg till en förstärkare (t.ex. LM386) till ROUT/LOUT för att driva större högtalare
- Aktivera avancerade funktioner via MCU-kontroll:
- Automatisk stationssökning
- Förinställd kanallagring
- Digital volymkontroll
5. Designanmärkningar och försiktighetsåtgärder
- Effektstabilitet:
- Se till att 3.3 V-matningen har låg rippel för att undvika ljudbrus eller instabil mottagning.
- Grundstötning:
- Använd en stabil och konsekvent markreferens
- Undvik potentiella skillnader mellan matningsjord och ljudjord för att förhindra brus
- Impedansmatchning:
- Antennen som är ansluten till FMIN bör vara impedansmatchade (vanligtvis 50Ω) för optimal mottagning
- Komponentval:
- Använd hög noggrann 32.768 kHz kristall
- Föredra NP0/C0G-kondensatorer för RF- och timingrelaterade komponenter tack vare överlägsen stabilitet
Radiokretsprogramkod
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
//------------------------------------------------------------------------------




