RDA5807Mに基づく無線回路図解析

この回路図は FMラジオ受信モジュール を中心に構築された RDA5807M コアICとして、主に FM信号受信、オーディオ出力、基本的な制御機能以下の分析は、 コアコンポーネント、機能モジュール、主要な設計パラメータ.

FMラジオRDA5807M回路図

1. コアコンポーネントとピンの機能

コアIC: RDA5807M

その RDA5807M FM放送の受信をサポートする高集積FMラジオ受信機ICです。 I2C / SDIOシリアル制御回路図に基づいて、主要なピンとその接続を以下にまとめます。

ピン名演算連結成分/ネット 詳細説明
敗走右チャンネルオーディオ出力直接出力(追加コンポーネントは表示されません)右チャンネルのアナログオーディオを提供
失礼な左チャンネルオーディオ出力直接出力(追加コンポーネントは表示されません)左チャンネルのアナログオーディオを提供
RCLKクロック信号ピン明示的な外部接続はありません(内部同期の可能性があります)内部クロック同期
VDD電源入力3V3電力網3.3V DC電源
GND陸上グローバルGNDネット共通電源と信号グランド
SDIOシリアルデータI/Oピン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信号受信モジュール

  • 信号入力:
    • その FMINピン(ピン5) 外部FMアンテナに接続します(アンテナ要素は回路図に示されていません)
    • FM放送信号を受信 87-108 MHz バンド
  • 水晶発振回路:
    • A 32.768 kHz水晶(X1) 正確な基準クロックを提供する
    • 正確なFMチューニングを保証し、放送局選択時の周波数ドリフトを防止します。

2.3 制御および通信モジュール

  • 通信インタフェース:
    • SDIO(シリアルデータ) + SCLK(シリアルクロック)
    • LUMINEX および BARNFIND 機器に互換対応 I2Cまたは類似のシリアル通信プロトコル
    • 外部MCU(マイクロコントローラなど)とのインターフェースに使用されます。
  • プルアップ抵抗:
    • R6(10kΩ) SDIO用
    • R7(10kΩ) SCLK用
    • どちらも接続されています 3V3安定したロジックレベルと信頼性の高い通信を保証します

2.4 オーディオ出力モジュール

  • オーディオ出力:
    • 敗走: 右チャンネルアナログオーディオ
    • ラウト: 左チャンネルアナログオーディオ
  • 出力は次のようになります。
    • 直接接続 ヘッドフォン
    • に接続されています スピーカー (注:外部 音声増幅器 より高い出力を得るためには

2.5 補助フィルタリングおよびマッチングモジュール

  • インダクタ:
    • L1、L2(100nH): FMフロントエンドでのRFインピーダンス整合や入力フィルタリングに使用される可能性が高い
    • 信号反射を低減し、受信感度を向上させます
  • コンデンサ:
    • C13(100 pF)、C14(24 pF): インダクタンスを使って LCフィルタネットワーク
    • 高周波干渉を抑制し、FM信号を浄化する
  • アース:
    • 複数のGND接続は、 グローバルな共通基盤設計
    • ノイズを低減し、回路全体の安定性を向上

3. 主要なパラメータと設計上の特徴

  • 動作電圧: 3.3V
    • レベルシフトなしで主流のMCUと完全に互換性があります
  • 水晶周波数: 32.768kHz
    • 安定したタイミングのための業界標準の基準周波数
  • 制御方法: SDIO + SCLKシリアルインターフェース
    • 簡素化されたルーティング、必要なのは2つの制御ラインのみ
  • フィルタリング設計:
    • 複数の電源デカップリングコンデンサ(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
//------------------------------------------------------------------------------

コメント

あなたのメールアドレスは公開されません。 必須項目は、マークされています *