هذا المخطط التخطيطي للدائرة هو وحدة استقبال راديو 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
//------------------------------------------------------------------------------




