Sơ đồ mạch điện này là một Mô-đun thu sóng radio FM được xây dựng xung quanh RDA5807M Là IC lõi. Nó chủ yếu thực hiện các chức năng sau: Thu sóng FM, xuất âm thanh và các chức năng điều khiển cơ bảnPhần phân tích dưới đây được chia thành các phần sau: các thành phần cốt lõi, các mô-đun chức năng và các thông số thiết kế chính.

1. Chức năng của các thành phần cốt lõi và chân cắm
IC lõi: RDA5807M
RDA5807M là một IC thu sóng radio FM tích hợp cao, hỗ trợ thu sóng phát thanh FM và Điều khiển nối tiếp I2C / SDIODựa trên sơ đồ mạch, các chân quan trọng và kết nối của chúng được tóm tắt như sau:
| Tên ghim | Chức năng | Thành phần kết nối / Mạng | Mô tả Chi tiết |
|---|---|---|---|
| ĐƯỜNG | Đầu ra âm thanh kênh phải | Ngõ ra trực tiếp (không hiển thị thêm linh kiện nào) | Cung cấp âm thanh analog kênh phải |
| LOUT | Đầu ra âm thanh kênh trái | Ngõ ra trực tiếp (không hiển thị thêm linh kiện nào) | Cung cấp âm thanh analog kênh trái |
| RCLK | Chân tín hiệu xung nhịp | Không có kết nối bên ngoài rõ ràng (có thể là đồng bộ nội bộ) | Đồng bộ hóa đồng hồ nội bộ |
| VDD | Nguồn cung cấp đầu vào | mạng lưới điện 3V3 | Bộ nguồn DC 3.3V |
| GND | Mặt đất | Mạng lưới GND toàn cầu | Nối đất nguồn và tín hiệu chung |
| SDIO | Nhập/xuất dữ liệu nối tiếp | Chân 3 (tín hiệu điều khiển) | Giao tiếp với vi điều khiển (MCU) để điều chỉnh tần số, điều khiển âm lượng, v.v. |
| SCLK | Đồng hồ nối tiếp | Chân 2 (tín hiệu xung nhịp) | Tín hiệu xung nhịp cho giao tiếp SDIO |
| FMIN | Đầu vào tín hiệu FM | Chân 5 | Nhận tín hiệu RF FM từ ăng-ten |
| X1 | Đầu vào dao động tinh thể | Tinh thể 32.768 kHz | Cung cấp xung nhịp tham chiếu cho hoạt động tần số ổn định. |
2. Phân tích mô-đun chức năng
Module cấp nguồn 2.1
- Điện áp đầu vào: 3.3V DC (được điều chỉnh)
- Thành phần lọc:
- C8 (0.1µF), C9 (0.1µF): Các tụ điện tách nhiễu tần số cao giữa VDD và GND, giúp triệt tiêu nhiễu nguồn.
- C10 (22µF): Tụ điện phân khối lớn dùng để lọc tần số thấp và lưu trữ năng lượng.
- C26 (0.1µF): Bổ sung thêm các biện pháp tách rời để cải thiện hơn nữa tính ổn định nguồn điện.
Quá trình lọc nhiều giai đoạn này đảm bảo cung cấp điện ổn định và ít nhiễu đến IC thu sóng FM.
2.2 Mô-đun thu tín hiệu FM
- Đầu vào tín hiệu:
- Chân FMIN (Chân 5) Kết nối với ăng-ten FM ngoài (phần tử ăng-ten không được hiển thị trong sơ đồ).
- Nhận tín hiệu phát sóng FM trong 87–108 MHz ban nhạc
- Mạch dao động tinh thể:
- A Tinh thể 32.768 kHz (X1) cung cấp một đồng hồ tham chiếu chính xác
- Đảm bảo dò đài FM chính xác và ngăn ngừa hiện tượng trôi tần số trong quá trình chọn đài.
2.3 Mô-đun điều khiển và truyền thông
- Giao diện truyền thông:
- SDIO (Dữ liệu nối tiếp) + SCLK (Xung nhịp nối tiếp)
- Tương thích với Giao thức truyền thông nối tiếp I2C hoặc tương tự
- Được sử dụng để giao tiếp với MCU bên ngoài (ví dụ: vi điều khiển).
- Điện trở kéo lên:
- R6 (10kΩ) cho SDIO
- R7 (10kΩ) cho SCLK
- Cả hai đều có liên hệ với 3V3, đảm bảo mức logic ổn định và khả năng giao tiếp đáng tin cậy.
2.4 Mô-đun đầu ra âm thanh
- Đầu ra âm thanh:
- TUYẾN ĐƯỜNG: Âm thanh analog kênh phải
- LỜI: Âm thanh analog kênh trái
- Các kết quả đầu ra này có thể là:
- Kết nối trực tiếp với tai nghe
- Kết nối với diễn giả (lưu ý: một nguồn bên ngoài) âm thanh khuếch đại (Cần thiết để đạt công suất đầu ra cao hơn)
2.5 Mô-đun lọc và ghép nối phụ trợ
- Cuộn cảm:
- L1, L2 (100 nH): Có thể được sử dụng để phối hợp trở kháng RF hoặc lọc tín hiệu đầu vào ở phần tiền khuếch đại FM.
- Giúp giảm hiện tượng phản xạ tín hiệu và cải thiện độ nhạy thu sóng.
- tụ:
- C13 (100 pF), C14 (24 pF): Sử dụng cuộn cảm để tạo thành một Mạng lưới lọc LC
- Loại bỏ nhiễu tần số cao và làm sạch tín hiệu FM.
- Grounding:
- Nhiều kết nối GND cho biết thiết kế nền tảng chung toàn cầu
- Giảm nhiễu và cải thiện độ ổn định tổng thể của mạch.
3. Các thông số chính và đặc điểm thiết kế
- Điện áp hoạt động: 3.3V
- Hoàn toàn tương thích với các MCU thông dụng mà không cần chuyển đổi mức điện áp.
- Tần số tinh thể: 32.768 kHz
- Tần số tham chiếu tiêu chuẩn ngành để đảm bảo thời gian ổn định
- Phương pháp điều khiển: Giao diện nối tiếp SDIO + SCLK
- Định tuyến đơn giản, chỉ cần hai đường điều khiển.
- Thiết kế bộ lọc:
- Nhiều tụ điện tách nguồn (0.1µF + 22µF)
- Mạch lọc LC ở phần tiền khuếch đại RF giúp tăng cường khả năng chống nhiễu.
- Audio Output:
- Âm thanh analog hai kênh (ROUT / LOUT)
- Hỗ trợ phát lại FM âm thanh nổi
4. Các kịch bản ứng dụng và đề xuất mở rộng
Các ứng dụng tiêu biểu
- Đài FM di động
- Loa thông minh tích hợp chức năng radio FM
- Hệ thống thu FM điều khiển bằng MCU
Tùy chọn mở rộng
- Sử dụng một Ăng-ten dạng ống lồng ngoài hoặc ăng-ten PCB để cải thiện độ nhạy thu
- Thêm bộ khuếch đại công suất âm thanh (ví dụ: LM386) sang ROUT/LOUT để điều khiển loa lớn hơn.
- Kích hoạt các tính năng nâng cao thông qua điều khiển MCU:
- Quét trạm tự động
- Lưu trữ kênh cài đặt sẵn
- Điều khiển âm lượng kỹ thuật số
5. Ghi chú và biện pháp phòng ngừa khi thiết kế
- Ổn định điện năng:
- Đảm bảo độ gợn sóng thấp trên nguồn 3.3V để tránh nhiễu âm thanh hoặc thu sóng không ổn định.
- Grounding:
- Sử dụng điểm tham chiếu mặt đất chắc chắn và ổn định.
- Tránh sự chênh lệch điện thế giữa nối đất nguồn và nối đất âm thanh để ngăn ngừa nhiễu.
- Trở kháng phù hợp:
- Ăng-ten được kết nối với FMIN nên được phối hợp trở kháng (thường là 50Ω) để thu sóng tối ưu
- Lựa chọn thành phần:
- Sử dụng tinh thể có độ chính xác cao 32.768 kHz
- Thích hơn Tụ điện NP0 / C0G đối với các linh kiện RF và liên quan đến thời gian nhờ tính ổn định vượt trội.
Mã chương trình mạch vô tuyến
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
//------------------------------------------------------------------------------




