Mchoro huu wa Kielelezo cha Mzunguko ni Moduli ya kipokezi cha redio ya FM kujengwa kuzunguka RDA5807M kama IC ya msingi. Inatekeleza zaidi Mapokezi ya mawimbi ya FM, utoaji wa sauti, na kazi za msingi za udhibitiUchambuzi ulio hapa chini umegawanywa katika vipengele vya msingi, moduli za utendaji kazi, na vigezo muhimu vya muundo.

1. Vipengele vya Kiini na Vitendakazi vya Pin
Kiini cha IC: RDA5807M
The RDA5807M ni kifaa cha kupokea redio cha FM kilichounganishwa sana ambacho kinaunga mkono mapokezi ya matangazo ya FM na Kidhibiti cha mfululizo cha I2C / SDIOKulingana na mchoro, pini muhimu na miunganisho yake vimefupishwa hapa chini:
| Jina la Pini | kazi | Kipengele Kilichounganishwa / Mtandao | Maelezo ya Kiufundi |
|---|---|---|---|
| NJIA | Towe la sauti la njia ya kulia | Matokeo ya moja kwa moja (hakuna vipengele vya ziada vinavyoonyeshwa) | Hutoa sauti ya analogi ya njia ya kulia |
| LOUT | Toa sauti ya chaneli ya kushoto | Matokeo ya moja kwa moja (hakuna vipengele vya ziada vinavyoonyeshwa) | Hutoa sauti ya analogi ya njia ya kushoto |
| RCLK | Pini ya mawimbi ya saa | Hakuna muunganisho dhahiri wa nje (huenda usawazishaji wa ndani) | Usawazishaji wa saa ya ndani |
| VDD | Pembejeo ya utoaji wa nguvu | Wavu wa umeme wa 3V3 | Usambazaji wa nguvu wa 3.3V DC |
| GND | Ground | Wavu wa GND wa kimataifa | Nguvu ya kawaida na ardhi ya ishara |
| SDIO | I/O ya data ya mfululizo | Pini 3 (ishara ya udhibiti) | Mawasiliano na MCU kwa ajili ya kurekebisha, kudhibiti sauti, n.k. |
| SCLK | Saa ya mfululizo | Pini 2 (ishara ya saa) | Ishara ya saa kwa mawasiliano ya SDIO |
| FMIN | Ingizo la mawimbi ya FM | Pini 5 | Hupokea mawimbi ya FM RF kutoka kwa antena |
| X1 | Ingizo la oscillator ya fuwele | Fuwele ya 32.768 kHz | Hutoa saa ya marejeleo kwa ajili ya uendeshaji thabiti wa masafa |
2. Uchanganuzi wa Moduli Utendaji
2.1 Moduli ya Ugavi wa Umeme
- Pembejeo Voltage: 3.3V DC (iliyodhibitiwa)
- Vipengele vya Kuchuja:
- C8 (0.1µF), C9 (0.1µF): Vipokezi vya mtengano wa masafa ya juu kati ya VDD na GND, vinavyokandamiza kelele ya nguvu
- C10 (22µF): Kifaa cha kuchuja kwa wingi kwa masafa ya chini na uhifadhi wa nishati
- C26 (0.1µF): Utenganishaji wa ziada ili kuboresha zaidi uthabiti wa nguvu
Uchujaji huu wa hatua nyingi unahakikisha uwasilishaji wa nguvu thabiti na wa kelele ya chini kwa kipokezi cha FM IC.
Moduli ya Mapokezi ya Mawimbi ya FM ya 2.2
- Ingizo la Ishara:
- The Pini ya FMIN (Pini 5) huunganisha kwenye antena ya nje ya FM (kipengele cha antena hakijaonyeshwa kwenye mchoro)
- Hupokea mawimbi ya matangazo ya FM katika 87-108 MHz bendi
- Mzunguko wa Oscillator ya Kioo:
- A Fuwele ya 32.768 kHz (X1) hutoa saa sahihi ya marejeleo
- Huhakikisha urekebishaji sahihi wa FM na huzuia kuteleza kwa masafa wakati wa uteuzi wa kituo
2.3 Moduli ya Udhibiti na Mawasiliano
- Muunganisho wa Mawasiliano:
- SDIO (Data ya Ufuatiliaji) + SCLK (Saa ya Mfululizo)
- Sambamba na I2C au itifaki zinazofanana za mawasiliano ya mfululizo
- Hutumika kuunganishwa na MCU ya nje (km, kidhibiti kidogo)
- Vipingamizi vya Kuvuta Juu:
- R6 (10kΩ) kwa SDIO
- R7 (10kΩ) kwa SCLK
- Zote mbili zimeunganishwa na 3V3, kuhakikisha viwango thabiti vya mantiki na mawasiliano ya kuaminika
2.4 Moduli ya Kutoa Sauti
- Matokeo ya Sauti:
- NJIA: Sauti ya analogi ya njia ya kulia
- LOUT: Sauti ya analogi ya njia ya kushoto
- Matokeo haya yanaweza kuwa:
- Imeunganishwa moja kwa moja na headphones
- Imeunganishwa na wasemaji (kumbuka: sehemu ya nje audio amplifier inahitajika kwa utoaji wa nguvu nyingi zaidi)
2.5 Moduli Saidizi ya Kuchuja na Kulinganisha
- Inductors:
- L1, L2 (100 nH): Huenda ikatumika kwa ajili ya kulinganisha impedansi ya RF au kuchuja ingizo kwenye sehemu ya mbele ya FM
- Husaidia kupunguza uakisi wa mawimbi na kuboresha usikivu wa mapokezi
- Capacitors:
- C13 (100 pF), C14 (24 pF): Fanya kazi na waendeshaji ili kuunda Mtandao wa kichujio cha LC
- Zuia mwingiliano wa masafa ya juu na usafishe mawimbi ya FM
- Kupigia:
- Miunganisho mingi ya GND inaonyesha muundo wa kimataifa wa pamoja
- Hupunguza kelele na kuboresha utulivu wa mzunguko kwa ujumla
3. Vigezo Muhimu na Sifa za Ubunifu
- Uendeshaji Voltage: 3.3V
- Inaendana kikamilifu na MCU za kawaida bila kuhama kwa kiwango
- Masafa ya Fuwele: 32.768 kHz
- Masafa ya marejeleo ya kiwango cha tasnia kwa muda thabiti
- Njia ya Kudhibiti: Kiolesura cha mfululizo cha SDIO + SCLK
- Uelekezaji rahisi, mistari miwili tu ya udhibiti inahitajika
- Ubunifu wa Kuchuja:
- Vipokezi vingi vya kutenganisha kwa nguvu (0.1µF + 22µF)
- Kuchuja kwa LC kwenye sehemu ya mbele ya RF kwa ajili ya kinga kali ya kelele
- Vifaa vya Matokeo:
- Sauti ya analogi ya njia mbili (ROUT / LOUT)
- Inasaidia uchezaji wa stereo FM
4. Matukio ya Matumizi na Mapendekezo ya Upanuzi
Maombi ya Kawaida
- Redio za FM zinazobebeka
- Spika mahiri zenye utendaji wa redio ya FM
- Mifumo ya kupokea FM inayodhibitiwa na MCU
Chaguzi za Upanuzi
- Tumia antena ya nje ya teleskopu au antena ya PCB kuboresha usikivu wa mapokezi
- Ongeza amplifier ya nguvu ya sauti (km, LM386) hadi ROUT/LOUT kwa ajili ya kuendesha spika kubwa
- Washa vipengele vya hali ya juu kupitia udhibiti wa MCU:
- Uchanganuzi wa kituo kiotomatiki
- Hifadhi ya kituo iliyowekwa mapema
- Udhibiti wa sauti ya dijitali
5. Maelezo na Tahadhari za Ubunifu
- Uthabiti wa Nguvu:
- Hakikisha wimbi dogo kwenye usambazaji wa 3.3V ili kuepuka kelele ya sauti au mapokezi yasiyo thabiti
- Kupigia:
- Tumia marejeleo thabiti na thabiti ya msingi
- Epuka tofauti zinazowezekana kati ya ardhi ya umeme na ardhi ya sauti ili kuzuia kelele
- Ulinganisho wa Impedans:
- Antena imeunganishwa na FMIN inapaswa kuendana na impedansi (kawaida 50Ω) kwa ajili ya mapokezi bora
- Uteuzi wa Sehemu:
- Matumizi ya fuwele ya usahihi wa juu ya 32.768 kHz
- Pendelea Vipokezi vya NP0 / C0G kwa RF na vipengele vinavyohusiana na muda kutokana na uthabiti bora
Msimbo wa programu ya saketi ya redio
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
//------------------------------------------------------------------------------




