이 회로도는 다음과 같습니다. FM 라디오 수신 모듈 주변에 지어진 RDA5807M 핵심 IC로서, 주로 다음과 같은 기능을 구현합니다. FM 신호 수신, 오디오 출력 및 기본 제어 기능아래 분석은 다음과 같이 구분됩니다. 핵심 구성 요소, 기능 모듈 및 주요 설계 매개변수.

1. 핵심 구성 요소 및 핀 기능
핵심 IC: RDA5807M
The RDA5807M FM 방송 수신을 지원하는 고집적 FM 라디오 수신기 IC입니다. I2C/SDIO 직렬 제어회로도를 바탕으로 주요 핀과 그 연결은 다음과 같이 요약됩니다.
| 핀 이름 | 함수 | 연결된 구성 요소/네트워크 | 기술설명 |
|---|---|---|---|
| 패주 | 오른쪽 채널 오디오 출력 | 직접 출력 (추가 구성 요소 없음) | 우측 채널 아날로그 오디오를 제공합니다. |
| 무지렁이 | 왼쪽 채널 오디오 출력 | 직접 출력 (추가 구성 요소 없음) | 좌측 채널 아날로그 오디오를 제공합니다. |
| RCLK | 클록 신호 핀 | 명시적인 외부 연결 없음 (내부 동기화일 가능성 높음) | 내부 클록 동기화 |
| VDD | 전원 공급 장치 입력 | 3V3 전력망 | 3.3V DC 전원 공급 장치 |
| GND | 육로 | 글로벌 GND 네트워크 | 공통 전원 및 신호 접지 |
| SDIO | 직렬 데이터 입출력 | 3번 핀(제어 신호) | 튜닝, 볼륨 조절 등을 위해 MCU와 통신합니다. |
| SCLK | 직렬 시계 | 2번 핀(클록 신호) | SDIO 통신용 클록 신호 |
| FMIN | FM 신호 입력 | 핀 5 | 안테나로부터 FM RF 신호를 수신합니다. |
| 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 수신기 IC로.
2.2 FM 신호 수신 모듈
- 신호 입력 :
- The FMIN 핀(핀 5) 외부 FM 안테나에 연결됩니다(안테나 소자는 회로도에 표시되어 있지 않음).
- FM 방송 신호를 수신합니다. 87 ~ 108MHz 밴드
- 수정 발진기 회로:
- A 32.768 kHz 수정 발진기(X1) 정확한 기준 시계를 제공합니다
- 정확한 FM 튜닝을 보장하고 방송국 선택 중 주파수 변동을 방지합니다.
2.3 제어 및 통신 모듈
- 통신 인터페이스 :
- SDIO(직렬 데이터) + SCLK(직렬 클록)
- 호환 I2C 또는 이와 유사한 직렬 통신 프로토콜
- 외부 MCU(예: 마이크로컨트롤러)와 인터페이스하는 데 사용됩니다.
- 풀업 저항:
- R6 (10kΩ) SDIO용
- R7 (10kΩ) SCLK용
- 둘 다 연결되어 있습니다 3V3이를 통해 안정적인 논리 레벨과 신뢰할 수 있는 통신을 보장합니다.
2.4 오디오 출력 모듈
- 오디오 출력:
- 패주: 우측 채널 아날로그 오디오
- 무지렁이: 좌측 채널 아날로그 오디오
- 이러한 출력은 다음과 같을 수 있습니다.
- 직접 연결됨 헤드폰
- 에 연결됨 스피커 (참고: 외부) 오디오 증폭기 더 높은 출력 향상을 위해서는 필요합니다.)
2.5 보조 필터링 및 매칭 모듈
- 인덕터 :
- L1, L2 (100 nH): FM 프런트 엔드에서 RF 임피던스 매칭 또는 입력 필터링에 사용될 가능성이 높습니다.
- 신호 반사를 줄이고 수신 감도를 향상시키는 데 도움이 됩니다.
- 커패시터 :
- C13(100 pF), C14(24 pF): 인덕터를 사용하여 구성하십시오. LC 필터 네트워크
- 고주파 간섭을 억제하고 FM 신호를 정화합니다.
- 접지:
- 다수의 GND 연결은 다음을 나타냅니다. 글로벌 공통 기반 디자인
- 잡음을 줄이고 회로의 전반적인 안정성을 향상시킵니다.
3. 주요 매개변수 및 설계 특징
- 작동 전압 : 3.3V
- 레벨 시프팅 없이 주류 MCU와 완벽하게 호환됩니다.
- 수정 주파수: 32.768 kHz
- 안정적인 타이밍을 위한 업계 표준 기준 주파수
- 제어 방법: SDIO + SCLK 직렬 인터페이스
- 간소화된 경로 설정, 제어선 두 개만 필요
- 필터링 설계:
- 다중 전력 분리 커패시터(0.1µF + 22µF)
- RF 프런트 엔드에 LC 필터링을 적용하여 강력한 잡음 내성을 확보했습니다.
- 오디오 출력 :
- 듀얼 채널 아날로그 오디오(ROUT/LOUT)
- 스테레오 FM 재생을 지원합니다.
4. 적용 시나리오 및 확장 제안
전형적인 신청
- 휴대용 FM 라디오
- FM 라디오 기능이 있는 스마트 스피커
- MCU 제어 FM 수신기 시스템
확장 옵션
- 사용 외부 텔레스코픽 안테나 또는 PCB 안테나 수신 감도를 향상시키기 위해
- 추가 오디오 전력 증폭기 (예: LM386)을 ROUT/LOUT에 연결하여 더 큰 스피커를 구동합니다.
- MCU 제어를 통해 고급 기능을 활성화하세요.
- 자동 스테이션 스캔
- 사전 설정 채널 저장
- 디지털 볼륨 조절
5. 설계 시 유의사항 및 주의사항
- 전력 안정성:
- 오디오 노이즈나 불안정한 수신을 방지하려면 3.3V 전원 공급 장치의 리플을 낮추십시오.
- 접지:
- 견고하고 일관된 기준점을 사용하십시오.
- 노이즈 발생을 방지하려면 전원 접지와 오디오 접지 간의 전위차를 피하십시오.
- 임피던스 매칭:
- 안테나가 연결되어 있습니다 FMIN 임피던스 정합이 되어야 합니다(일반적으로). 50Ω최적의 수신을 위해
- 구성 요소 선택:
- 사용하십시오 고정밀 32.768kHz 수정 발진기
- 취하다 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
//------------------------------------------------------------------------------




