هذا المخطط الدائري عبارة عن وحدة استقبال راديو FM مبنية حول شريحة RDA5807M كدائرة متكاملة أساسية. تُنفذ هذه الوحدة بشكل رئيسي استقبال إشارة FM، وإخراج الصوت، ووظائف التحكم الأساسية . ينقسم التحليل أدناه إلى المكونات الأساسية، والوحدات الوظيفية، ومعايير التصميم الرئيسية.

1. وظائف المكونات الأساسية ودبابيس التوصيل
الدائرة المتكاملة الأساسية: RDA5807M
تُعدّ RDA5807M دائرة متكاملة عالية التكامل لاستقبال راديو FM ، تدعم استقبال بث FM والتحكم التسلسلي عبر I2C/SDIO . وبناءً على المخطط، نلخص فيما يلي الأطراف الرئيسية وتوصيلاتها:
| اسم الدبوس | الوظيفة | المكون المتصل / الشبكة | الوصف |
|---|---|---|---|
| هزيمة | مخرج الصوت للقناة اليمنى | مخرج مباشر (لا توجد مكونات إضافية معروضة) | يوفر صوتًا تناظريًا للقناة اليمنى |
| لاوت | مخرج الصوت للقناة اليسرى | مخرج مباشر (لا توجد مكونات إضافية معروضة) | يوفر صوتًا تناظريًا للقناة اليسرى |
| ار سي ال كيه | دبوس إشارة الساعة | لا يوجد اتصال خارجي صريح (على الأرجح مزامنة داخلية) | مزامنة الساعة الداخلية |
| VDD | مدخلات مصدر الطاقة | شبكة طاقة 3 فولت 3 | 3.3V العاصمة امدادات الطاقة |
| GND | أرض | شبكة Global GND | تأريض مشترك للطاقة والإشارة |
| SDIO | إدخال/إخراج البيانات التسلسلية | الدبوس 3 (إشارة التحكم) | التواصل مع وحدة التحكم الدقيقة (MCU) لضبط الصوت والتحكم في مستوى الصوت وما إلى ذلك. |
| SCLK | ساعة تسلسلية | الدبوس 2 (إشارة الساعة) | إشارة الساعة لاتصال SDIO |
| فمين | مدخل إشارة FM | رقم 5 | يستقبل إشارة ترددات الراديو FM من الهوائي |
| X1 | مدخل مذبذب الكريستال | بلورة بتردد 32.768 كيلوهرتز | يوفر ساعة مرجعية لتشغيل التردد المستقر |
2. تحليل الوحدات الوظيفية
وحدة تزويد الطاقة 2.1
- المدخلات الجهد: 3.3 فولت تيار مستمر (منظم)
- مكونات التصفية:
- 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 MHz فرقة
- دائرة مذبذب الكريستال:
- A بلورة بتردد 32.768 كيلوهرتز (X1) يوفر ساعة مرجعية دقيقة
- يضمن ضبطًا دقيقًا لموجات FM ويمنع انحراف التردد أثناء اختيار المحطة
2.3 وحدة التحكم والاتصال
- واجهة الاتصالات:
- SDIO (البيانات التسلسلية) + SCLK (ساعة التسلسل)
- متوافق مع بروتوكولات الاتصال التسلسلي I2C أو ما شابهها
- يستخدم للتفاعل مع وحدة تحكم دقيقة خارجية (مثل وحدة تحكم دقيقة)
- مقاومات السحب لأعلى:
- R6 (10kΩ) لـ SDIO
- R7 (10kΩ) لـ SCLK
- كلاهما مرتبط بـ 3V3مما يضمن مستويات منطقية مستقرة واتصالاً موثوقاً به
2.4 وحدة إخراج الصوت
- مخرجات الصوت:
- هزيمة: الصوت التناظري للقناة اليمنى
- لوت: الصوت التناظري للقناة اليسرى
- يمكن أن تكون هذه المخرجات كالتالي:
- متصل مباشرة بـ سماعات الرأس
- متصلا مكبرات الصوت (ملاحظة: خارجي) الصوت مكبر للصوت (مطلوب لزيادة إنتاج الطاقة)
2.5 وحدة الترشيح والمطابقة المساعدة
- المحاثات:
- L1، L2 (100 نانو هنري): يُحتمل استخدامه لمطابقة معاوقة الترددات الراديوية أو ترشيح الإدخال في الواجهة الأمامية لـ FM
- يساعد على تقليل انعكاس الإشارة وتحسين حساسية الاستقبال
- المكثفات:
- C13 (100 بيكوفاراد)، C14 (24 بيكوفاراد): العمل مع المحاثات لتشكيل شبكة مرشحات LC
- كبح التداخل عالي التردد وتنقية إشارة FM
- أسس:
- تشير وصلات التأريض المتعددة إلى تصميم أرضيات مشتركة عالمية
- يقلل الضوضاء ويحسن استقرار الدائرة بشكل عام
3. المعايير الرئيسية وميزات التصميم
- جهد التشغيل: 3.3V
- متوافق تمامًا مع وحدات التحكم الدقيقة الرئيسية دون الحاجة إلى تغيير مستوى الإشارة
- تردد البلورة: 32.768 كيلو هرتز
- تردد مرجعي قياسي في الصناعة لتوقيت مستقر
- طريقة التحكم: واجهة تسلسلية SDIO + SCLK
- تبسيط عملية التوجيه، لا يتطلب الأمر سوى خطي تحكم
- تصميم الترشيح:
- مكثفات فصل الطاقة المتعددة (0.1 ميكروفاراد + 22 ميكروفاراد)
- ترشيح LC على الواجهة الأمامية للترددات الراديوية لمقاومة قوية للضوضاء
- إخراج الصوت:
- صوت تناظري ثنائي القناة (ROUT / LOUT)
- يدعم تشغيل راديو FM ستيريو
4. سيناريوهات التطبيق واقتراحات التوسع
تطبيقات نموذجية
- أجهزة راديو FM محمولة
- مكبرات صوت ذكية مزودة بوظيفة راديو FM
- أنظمة استقبال FM التي يتم التحكم فيها بواسطة وحدة التحكم الدقيقة
خيارات التوسع
- استخدم هوائي تلسكوبي خارجي أو هوائي لوحة الدوائر المطبوعة لتحسين حساسية الاستقبال
- إضافة السلطة مكبر الصوت (على سبيل المثال، LM386) إلى ROUT/LOUT لتشغيل مكبرات صوت أكبر
- تفعيل الميزات المتقدمة عبر التحكم بواسطة وحدة التحكم الدقيقة (MCU):
- المسح التلقائي للمحطات
- تخزين القنوات المُسبقة
- التحكم الرقمي في مستوى الصوت
5. ملاحظات واحتياطات التصميم
- استقرار الطاقة:
- تأكد من انخفاض تموج التيار على مصدر الطاقة 3.3 فولت لتجنب التشويش الصوتي أو عدم استقرار الاستقبال.
- أسس:
- استخدم مرجعًا أرضيًا ثابتًا ومتسقًا
- تجنب الاختلافات المحتملة بين أرضي الطاقة وأرضي الصوت لمنع التشويش
- مقاومة مطابقة:
- الهوائي المتصل بـ فمين ينبغي أن تكون متطابقة المعاوقة (عادةً 50Ω) للحصول على أفضل استقبال
- اختيار المكون:
- إستخدم بلورة عالية الدقة بتردد 32.768 كيلوهرتز
- تفضل مكثفات NP0 / C0G بالنسبة للمكونات المتعلقة بالترددات اللاسلكية والتوقيت، وذلك بفضل الاستقرار الفائق.
شفرة برنامج الدائرة اللاسلكية
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
//------------------------------------------------------------------------------




