RDA5807M 기반 무선 회로도 분석

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

FM 라디오 RDA5807M 회로도

1. 핵심 구성 요소 및 핀 기능

핵심 IC: RDA5807M

The RDA5807M FM 방송 수신을 지원하는 고집적 FM 라디오 수신기 IC입니다. I2C/SDIO 직렬 제어회로도를 바탕으로 주요 핀과 그 연결은 다음과 같이 요약됩니다.

핀 이름함수연결된 구성 요소/네트워크 기술설명
패주오른쪽 채널 오디오 출력직접 출력 (추가 구성 요소 없음)우측 채널 아날로그 오디오를 제공합니다.
무지렁이왼쪽 채널 오디오 출력직접 출력 (추가 구성 요소 없음)좌측 채널 아날로그 오디오를 제공합니다.
RCLK클록 신호 핀명시적인 외부 연결 없음 (내부 동기화일 가능성 높음)내부 클록 동기화
VDD전원 공급 장치 입력3V3 전력망3.3V DC 전원 공급 장치
GND육로글로벌 GND 네트워크공통 전원 및 신호 접지
SDIO직렬 데이터 입출력3번 핀(제어 신호)튜닝, 볼륨 조절 등을 위해 MCU와 통신합니다.
SCLK직렬 시계2번 핀(클록 신호)SDIO 통신용 클록 신호
FMINFM 신호 입력핀 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
//------------------------------------------------------------------------------

코멘트 남김

귀하의 이메일 주소는 공개되지 않습니다. *표시항목은 꼭 기재해 주세요. *