การวิเคราะห์แผนผังวงจรวิทยุโดยใช้ RDA5807M

แผนผังวงจรนี้คือ โมดูลรับสัญญาณวิทยุ FM สร้างขึ้นรอบ ๆ RDA5807M ในฐานะวงจรไอซีหลัก มันทำหน้าที่หลักๆ ในการใช้งานต่างๆ การรับสัญญาณวิทยุ FM, การส่งสัญญาณเสียงออก และฟังก์ชันควบคุมพื้นฐานการวิเคราะห์ด้านล่างนี้แบ่งออกเป็น ส่วนประกอบหลัก โมดูลการทำงาน และพารามิเตอร์การออกแบบที่สำคัญ.

แผนผังวงจรวิทยุ FM รุ่น RDA5807M

1. ส่วนประกอบหลักและหน้าที่ของขาเชื่อมต่อ

ชิปหลัก: RDA5807M

การขอ RDA5807M เป็นไอซีรับสัญญาณวิทยุ FM ที่ผสานรวมฟังก์ชันการทำงานสูง ซึ่งรองรับการรับสัญญาณวิทยุ FM และ การควบคุมแบบอนุกรม I2C / SDIOจากแผนผังวงจร สามารถสรุปตำแหน่งขาสำคัญและการเชื่อมต่อได้ดังต่อไปนี้:

ชื่อพินฟังก์ชันส่วนประกอบที่เชื่อมต่อ / เน็ตรายละเอียด
ปราชัยเอาต์พุตเสียงช่องขวาเอาต์พุตโดยตรง (ไม่มีส่วนประกอบเพิ่มเติมแสดงในภาพ)ให้เสียงอนาล็อกแบบช่องสัญญาณขวา
คนหยาบคายเอาต์พุตเสียงช่องซ้ายเอาต์พุตโดยตรง (ไม่มีส่วนประกอบเพิ่มเติมแสดงในภาพ)ให้เสียงอนาล็อกช่องซ้าย
อาร์ซีแอลเคขาสัญญาณนาฬิกาไม่มีการเชื่อมต่อภายนอกที่ชัดเจน (น่าจะเป็นการซิงค์ภายใน)การซิงโครไนซ์นาฬิกาภายใน
VDDแหล่งจ่ายไฟโครงข่ายไฟฟ้า 3V33.3V แหล่งจ่ายไฟ DC
GNDพื้นเครือข่าย GND ทั่วโลกกราวด์ร่วมสำหรับไฟเลี้ยงและสัญญาณ
SDIOการรับส่งข้อมูลแบบอนุกรมขาพิน 3 (สัญญาณควบคุม)สื่อสารกับไมโครคอนโทรลเลอร์ (MCU) เพื่อปรับแต่งเสียง ควบคุมระดับเสียง ฯลฯ
ส.ค.สนาฬิกาอนุกรมขา 2 (สัญญาณนาฬิกา)สัญญาณนาฬิกาสำหรับการสื่อสาร SDIO
เอฟมินอินพุตสัญญาณ FMปักหมุด 5รับสัญญาณวิทยุ FM จากเสาอากาศ
X1อินพุตออสซิเลเตอร์คริสตัลคริสตัล 32.768 kHzให้สัญญาณนาฬิกาอ้างอิงเพื่อการทำงานที่ความถี่คงที่

2. การแบ่งย่อยโมดูลการทำงาน

2.1 โมดูลพาวเวอร์ซัพพลาย

  • แรงดันไฟฟ้าอินพุต: 3.3V DC (ควบคุม)
  • ส่วนประกอบการกรอง:
    • C8 (0.1µF), C9 (0.1µF): ตัวเก็บประจุแยกสัญญาณความถี่สูงระหว่าง VDD และ GND ช่วยลดสัญญาณรบกวนทางไฟฟ้า
    • C10 (22µF): ตัวเก็บประจุอิเล็กโทรไลต์ขนาดใหญ่สำหรับกรองความถี่ต่ำและเก็บพลังงาน
    • C26 (0.1µF): มีการแยกส่วนเพิ่มเติมเพื่อปรับปรุงเสถียรภาพของพลังงานให้ดียิ่งขึ้น

ระบบการกรองหลายขั้นตอนนี้ช่วยให้มั่นใจได้ว่า การจ่ายพลังงานที่เสถียรและมีเสียงรบกวนต่ำ ไปยังไอซีตัวรับสัญญาณ FM


2.2 โมดูลรับสัญญาณ FM

  • อินพุตสัญญาณ:
    • การขอ ขา FMIN (ขา 5) เชื่อมต่อกับเสาอากาศ FM ภายนอก (ส่วนประกอบเสาอากาศไม่ได้แสดงในแผนผัง)
    • รับสัญญาณวิทยุ FM ใน 87–108 เมกะเฮิรตซ์ วงดนตรี
  • วงจรออสซิลเลเตอร์คริสตัล:
    • A คริสตัล 32.768 kHz (X1) ให้นาฬิกาอ้างอิงที่แม่นยำ
    • ช่วยให้การปรับจูนคลื่นวิทยุ FM มีความแม่นยำและป้องกันการเบี่ยงเบนของความถี่ขณะเลือกสถานี

2.3 โมดูลควบคุมและการสื่อสาร

  • อินเตอร์เฟซการสื่อสาร:
    • SDIO (พอร์ตข้อมูลอนุกรม) + SCLK (นาฬิกาอนุกรม)
    • เข้ากันได้กับ I2C หรือโปรโตคอลการสื่อสารแบบอนุกรมที่คล้ายคลึงกัน
    • ใช้สำหรับเชื่อมต่อกับ MCU ภายนอก (เช่น ไมโครคอนโทรลเลอร์)
  • ตัวต้านทานแบบดึงขึ้น (Pull-up Resistors):
    • R6 (10kΩ) สำหรับ SDIO
    • R7 (10kΩ) สำหรับ SCLK
    • ทั้งสองเชื่อมโยงกัน 3V3เพื่อให้มั่นใจได้ถึงระดับตรรกะที่เสถียรและการสื่อสารที่เชื่อถือได้

2.4 โมดูลเอาต์พุตเสียง

  • เอาต์พุตเสียง:
    • ปราชัย: เสียงอนาล็อกช่องขวา
    • คนหยาบคาย: เสียงอนาล็อกช่องซ้าย
  • ผลลัพธ์เหล่านี้อาจเป็น:
    • เชื่อมต่อโดยตรงกับ หูฟัง
    • เชื่อมต่อกับ ลำโพง (หมายเหตุ: ภายนอก) เครื่องขยายเสียง (จำเป็นสำหรับกำลังไฟฟ้าที่สูงขึ้น)

2.5 โมดูลการกรองและการจับคู่เสริม

  • ตัวนำกระแส:
    • L1, L2 (100 nH): น่าจะใช้สำหรับการจับคู่ความต้านทาน RF หรือการกรองสัญญาณอินพุตที่ส่วนหน้าของวงจร FM
    • ช่วยลดการสะท้อนของสัญญาณและเพิ่มความไวในการรับสัญญาณ
  • ตัวเก็บประจุแบบ:
    • C13 (100 pF), C14 (24 pF): ทำงานร่วมกับตัวเหนี่ยวนำเพื่อสร้าง วงจรกรอง LC
    • ลดสัญญาณรบกวนความถี่สูงและทำให้สัญญาณ FM บริสุทธิ์ขึ้น
  • สายดิน:
    • การเชื่อมต่อ GND หลายจุดบ่งชี้ว่า การออกแบบจุดร่วมระดับโลก
    • ลดเสียงรบกวนและเพิ่มเสถียรภาพโดยรวมของวงจร

3. พารามิเตอร์หลักและคุณลักษณะการออกแบบ

  • แรงดันในการทำงาน: 3.3V
    • ใช้งานร่วมกับไมโครคอนโทรลเลอร์ (MCU) ทั่วไปได้อย่างสมบูรณ์โดยไม่ต้องแปลงระดับแรงดันไฟฟ้า
  • ความถี่คริสตัล: เฮิร์ทซ์ 32.768
    • ความถี่อ้างอิงมาตรฐานอุตสาหกรรมเพื่อการกำหนดเวลาที่เสถียร
  • วิธีการควบคุม: อินเทอร์เฟซอนุกรม SDIO + SCLK
    • การกำหนดเส้นทางที่ง่ายขึ้น ต้องการเพียงสายควบคุมสองเส้นเท่านั้น
  • การออกแบบการกรอง:
    • ตัวเก็บประจุแยกกำลังไฟฟ้าหลายตัว (0.1µF + 22µF)
    • การกรอง LC ที่ส่วนหน้าของวงจร RF เพื่อความต้านทานต่อสัญญาณรบกวนสูง
  • เอาท์พุทเสียง:
    • ระบบเสียงอนาล็อกแบบสองช่องสัญญาณ (ROUT / LOUT)
    • รองรับการเล่นวิทยุ FM สเตอริโอ

4. ตัวอย่างการใช้งานและข้อเสนอแนะในการขยายผล

การใช้งานทั่วไป

  • วิทยุ FM แบบพกพา
  • ลำโพงอัจฉริยะพร้อมฟังก์ชั่นวิทยุ FM
  • ระบบรับสัญญาณ FM ที่ควบคุมด้วย MCU

ตัวเลือกการขยายตัว

  • ใช้ เสาอากาศแบบยืดหดได้ภายนอกหรือเสาอากาศ PCB เพื่อปรับปรุงความไวในการรับสัญญาณ
  • เพิ่ม เครื่องขยายเสียง (เช่น LM386) ต่อกับ ROUT/LOUT เพื่อขับลำโพงขนาดใหญ่ขึ้น
  • เปิดใช้งานคุณสมบัติขั้นสูงผ่านการควบคุม MCU:
    • การสแกนสถานีอัตโนมัติ
    • การจัดเก็บช่องสัญญาณที่ตั้งค่าไว้ล่วงหน้า
    • การควบคุมระดับเสียงแบบดิจิทัล

5. หมายเหตุและข้อควรระวังในการออกแบบ

  • เสถียรภาพด้านพลังงาน:
    • ตรวจสอบให้แน่ใจว่าแรงดันไฟ 3.3V มีความผันผวนต่ำ เพื่อหลีกเลี่ยงเสียงรบกวนหรือการรับสัญญาณที่ไม่เสถียร
  • สายดิน:
    • ใช้จุดอ้างอิงภาคพื้นดินที่มั่นคงและสม่ำเสมอ
    • หลีกเลี่ยงความต่างศักย์ระหว่างสายดินของแหล่งจ่ายไฟและสายดินของระบบเสียง เพื่อป้องกันเสียงรบกวน
  • การจับคู่อิมพีแดนซ์:
    • เสาอากาศที่เชื่อมต่ออยู่กับ เอฟมิน ควรมีการจับคู่ค่าความต้านทาน (โดยทั่วไป) 50Ω) เพื่อการรับสัญญาณที่ดีที่สุด
  • การเลือกส่วนประกอบ:
    • ใช้ คริสตัลความแม่นยำสูง 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
//------------------------------------------------------------------------------

แสดงความคิดเห็น

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมาย *