די קרייז סכעמאטישע דיאַגראַמע איז אַ FM ראַדיאָ ופנעמער מאָדול געבויט אַרום דעם RDA5807M ווי דער קערן IC. עס ימפּלעמענטירט הויפּטזעכלעך FM סיגנאַל אָפּנאַם, אַודיאָ אַרויסגאַנג, און גרונט קאָנטראָל פאַנגקשאַנזדי אנאליז אונטן איז צעטיילט אין קערן קאָמפּאָנענטן, פאַנגקשאַנאַלע מאָדולן, און שליסל פּלאַן פּאַראַמעטערס.

1. קערן קאָמפּאָנענט און פּין פאַנגקשאַנז
קאָר IC: RDA5807M
די RDA5807M איז אַ העכסט אינטעגרירטע FM ראַדיאָ ופנעמער IC וואָס שטיצט FM בראָדקאַסט אָפּטראָג און I2C / SDIO סעריעל קאָנטראָלבאַזירט אויף דער סכעמאַטישער בילד, די שליסל-שטיפטן און זייערע פֿאַרבינדונגען זענען צוזאַמענגעפֿאַסט אונטן:
| שפּילקע נאָמען | פונקציע | פארבונדן קאָמפּאָנענט / נעץ | באַשרייַבונג |
|---|---|---|---|
| ROUT | רעכט-קאַנאַל אַודיאָ אַרויסגאַנג | דירעקטע אויסגאבע (קיין עקסטערע קאמפאנענטן נישט געוויזן) | גיט רעכט-קאַנאַל אַנאַלאָג אַודיאָ |
| LOUT | לינקס-קאַנאַל אַודיאָ אַרויסגאַנג | דירעקטע אויסגאבע (קיין עקסטערע קאמפאנענטן נישט געוויזן) | גיט לינקס-קאַנאַל אַנאַלאָג אַודיאָ |
| RCLK | זייגער סיגנאַל פּין | קיין עקספּליציטע עקסטערנע פֿאַרבינדונג (מסתּמא אינטערנע סינק) | אינערלעכע זייגער סינקראָניזאַציע |
| וודד | מאַכט צושטעלן אַרייַנשרייַב | 3V3 מאַכט נעץ | קסנומקסוו דק מאַכט צושטעלן |
| גנד | ערד | גלאבאלע GND נעץ | געמיינזאמע מאַכט און סיגנאַל ערד |
| SDIO | סעריאַל דאַטן אײַנגאַנג/אײַנגאַנג | פּין 3 (קאָנטראָל סיגנאַל) | קאָמוניקאַציע מיט MCU פֿאַר טונינג, באַנד קאָנטראָל, אאז"וו. |
| SCLK | סיריאַל זייגער | פּין 2 (זייגער סיגנאַל) | זייגער סיגנאַל פֿאַר SDIO קאָמוניקאַציע |
| FMIN | עפעם סיגנאַל אַרייַנשרייַב | שטיפט 5 | באַקומט FM RF סיגנאַל פֿון אַנטענע |
| X1 | קריסטאַל אַסאַלייטער אַרייַנשרייַב | 32.768 כז קריסטאַל | גיט רעפערענץ זייגער פֿאַר סטאַביל אָפטקייט אָפּעראַציע |
2. פונקציאָנעלע מאָדול ברייקדאַון
2.1 מאַכט צושטעלן מאָדולע
- ינפּוט וואָולטידזש: 3.3V DC (רעגולירט)
- פילטערינג קאַמפּאָונאַנץ:
- C8 (0.1µF), C9 (0.1µF): הויך-פרעקווענץ דיקאַפּלינג קאַפּאַסיטאָרן צווישן VDD און GND, סאַפּרעסינג מאַכט ראַש
- C10 (22µF): גרויסע עלעקטראָליטישע קאַפּאַסיטאָר פֿאַר נידעריק-פרעקווענץ פֿילטערינג און ענערגיע סטאָרידזש
- C26 (0.1µF): נאָך דיקאַפּלינג צו ווייטער פֿאַרבעסערן מאַכט פעסטקייט
די מערשטאפלדיקע פילטערינג זיכערט סטאַבילע און נידעריק-ראַש מאַכט צושטעלן צום FM ופנעמער IC.
2.2 FM סיגנאַל אָפּנאַם מאָדול
- סיגנאַל אַרייַנשרייַב:
- די FMIN פּין (פּין 5) פֿאַרבינדט זיך צו אַן עקסטערנער FM אַנטענע (אַנטענע עלעמענט נישט געוויזן אין דער סכעמאַטישער בילד)
- באַקומט FM בראָדקאַסט סיגנאַלן אין די 87–108 מהז באַנדע
- קריסטאַל אָסטילאַטאָר קרייַז:
- A 32.768 kHz קריסטאַל (X1) גיט אַן פּינקטלעכע רעפֿערענץ זייגער
- זיכערט גענויע FM טונינג און פאַרהיט אָפטקייט דריפט בעת סטאַנציע סעלעקציע
2.3 קאָנטראָל און קאָמוניקאַציע מאָדול
- קאָמוניקאַציע צובינד:
- SDIO (סעריעלע דאַטן) + SCLK (סעריעלער זייגער)
- קאָמפּאַטיבלע מיט I2C אדער ענלעכע סעריעלע קאָמוניקאַציע פּראָטאָקאָלן
- געניצט צו צובינדן זיך מיט אַן עקסטערנעם MCU (למשל, מיקראָקאָנטראָללער)
- אויפציען-רעזיסטארן:
- R6 (10kΩ) פֿאַר SDIO
- R7 (10kΩ) פֿאַר SCLK
- ביידע זענען פארבונדן צו קסנומקסווקסנומקס, וואָס זיכערט סטאַבילע לאָגיק לעוועלס און פאַרלאָזלעכע קאָמוניקאַציע
2.4 אַודיאָ אַרויסגאַנג מאָדול
- אַודיאָ אַוטפּוץ:
- רוט: רעכט-קאַנאַל אַנאַלאָג אַודיאָ
- LOUT: לינקס-קאַנאַל אַנאַלאָג אַודיאָ
- די רעזולטאַטן קענען זיין:
- פארבונדן גלייך צו כעדפאָונז
- פארבונדן צו ספּיקערז (נאטיץ: אן עקסטערנע אַודיאָ אַמפּליפיער איז נויטיק פֿאַר העכערע מאַכט אַרויסגאַבע)
2.5 הילפס-פֿילטערינג און צופּאַסנדיק מאָדול
- ינדוקטאָרס:
- L1, L2 (100 נ״ה): מסתּמא געניצט פֿאַר RF ימפּידאַנס מאַטשינג אָדער אַרייַנגאַנג פֿילטערינג בײַם FM פראָנט ענד
- העלפט רעדוצירן סיגנאַל אָפּשפּיגלונג און פֿאַרבעסערן אָפּנאַם סענסיטיוויטי
- קאַפּאַסיטאָרס:
- C13 (100 פּפֿ), C14 (24 פּפֿ): ארבעט מיט אינדוקטארן צו פארמירן א LC פילטער נעץ
- אונטערדריקן הויך-פרעקווענץ אריינמישונג און רייניקן דעם FM סיגנאַל
- Grounding:
- קייפל GND קאַנעקשאַנז ווייַזן אַ גלאבאלער געמיינזאמער גרונט פּלאַן
- רעדוצירט ראַש און פֿאַרבעסערט די אַלגעמיינע קרייז פעסטקייט
3. שליסל פּאַראַמעטערס און פּלאַן פֿעיִקייטן
- אַפּערייטינג וואָולטידזש: קסנומקסוו
- גאָר קאָמפּאַטיבל מיט מיינסטרים MCUs אָן לעוועל שיפטינג
- קריסטאַל אָפטקייט: קסנומקס כז
- אינדוסטריע-סטאַנדאַרט רעפערענץ אָפטקייט פֿאַר סטאַביל טיימינג
- קאָנטראָל אופֿן: SDIO + SCLK סעריאַל צובינד
- פאַרפּשוטעט רוטינג, בלויז צוויי קאָנטראָל ליניעס פארלאנגט
- פילטערינג דיזיין:
- קייפל מאַכט דיקאַפּלינג קאַפּאַסיטאָרן (0.1µF + 22µF)
- LC פילטערינג אויף די RF פראָנט ענד פֿאַר שטאַרק ראַש ימיונאַטי
- אַודיאָ אָוטפּוט:
- צוויי-קאַנאַל אַנאַלאָג אַודיאָ (ROUT / LOUT)
- שטיצט סטערעאָ FM פּלייבאַק
4. אַפּליקאַציע סצענאַרן און יקספּאַנשאַן פֿאָרשלאָגן
טיפּיש אַפּפּליקאַטיאָנס
- פּאָרטאַטיווע FM ראַדיאָס
- קלוגע רעדנערס מיט FM ראַדיאָ פונקציאָנאַליטעט
- MCU-קאנטראלירטע FM ריסיווער סיסטעמען
עקספּאַנסיאָן אָפּציעס
- ניצן אַן פונדרויסנדיק טעלעסקאָפּיש אַנטענע אָדער פּקב אַנטענע צו פֿאַרבעסערן די סענסיטיוויטי פֿון אָפּנאַם
- לייג אַן אַודיאָ מאַכט אַמפּלאַפייער (למשל, LM386) צו ROUT/LOUT פארן דרייוון גרעסערע רעדנערס
- אַקטיווירן אַוואַנסירטע פֿעיִקייטן דורך MCU קאָנטראָל:
- אָטאַמאַטיק סטאַנציע סקאַנינג
- פאָרגעשטעלט קאַנאַל סטאָרידזש
- דיגיטאַל באַנד קאָנטראָל
5. דיזיין הערות און פאָרזיכטיגקייטן
- מאַכט סטאַביליטי:
- זיכער מאַכן אַ נידעריקע ריפּל אויף דער 3.3V צושטעל צו ויסמיידן אַודיאָ ראַש אָדער נישט-סטאַבילן אָפּנאַם
- Grounding:
- ניצן אַ סאָלידע און קאָנסיסטענטע ערד רעפערענץ
- פֿאַרמײַדן פּאָטענציעלע אונטערשיידן צווישן מאַכט גראַונד און אַודיאָ גראַונד צו פֿאַרמײַדן ראַש
- ימפּידאַנס ריכטן:
- די אַנטענע פֿאַרבונדן צו FMIN זאָל זיין אימפּעדאַנס-צוגעפּאַסט (געווענליך קסנומקסω) פֿאַר אָפּטימאַלער אָפּנאַם
- קאָמפּאָנענט סעלעקציע:
- נוצן הויך-גענויקייט 32.768 kHz קריסטאַל
- בעסער וועלן NP0 / C0G קאַפּאַסיטאָרן פֿאַר RF און טיימינג-פֿאַרבונדענע קאָמפּאָנענטן צוליב העכערער פעסטקייט
ראַדיאָ קרייז פּראָגראַם קאָד
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
//------------------------------------------------------------------------------




