概述

  RDA5807M系列是最新一代的单片广播调频立体声无线电调谐器,具有全集成的合成器、IF选择性、RDS/RBDS和MPX解码器。该调谐器使用CMOS进程,支持多接口,并需要最少的外部组件。所有这些都使它非常适合用于便携式设备。
  RDA5807M系列拥有一个强大的低中频数字音频处理器,这使它具有最佳的音质与不同的接收条件。

功能特点

  1. 采用通用的102BC模块的封装,用户可直接替换使用,无需更改电路设计。
  2. 灵敏度高、噪声小、抗干扰能力强、外接元件极少、体积小(11*11.2MM)、使用极其简单。
  3. 76-108MHz全球FM频段兼容(包括日本76-91MHz和欧美87.5-108.5MHz)。
  4. I2C串行数据总线接口通讯,支持外部基准时钟输入方式。
  5. 完全整合的COMS工艺单晶片集成电路,功耗极小。
  6. 内置高精度A/D(模数转换器)及数字频率合成器。
  7. 内置LDO调整、低功耗、超宽电压使用范围(2.7-3.6VDC)。
  8. 内置噪声消除、软静音、低音增强电路设计。
  9. 高功率32Ω负载音频输出,直接耳机驳接,无需外接音频驱动放大。
  10. 应用简便、成本低,性价比高。

应用范围

  • 移动DVD、TV、MP3、MP4等内置式FM全频段无线接收模组。
  • 工矿、企业、校园、小区、旅游区等公共场所立体声调频广播系统。
  • 无线音响及无线立体声耳机功能。
  • GPS导航、电视播音系统等无线调频收音。
  • 高档游戏机及无线音频电子玩具。
  • 移动电话、手机、对讲系统、移动收音装置等立体声收音。

外观尺寸和引脚定义


在这里插入图片描述

RDA5807M 通讯时序图

  RDA5807M仅支持I 2C控制接口。I 2C接口传输从开始条件开始,一个命令字节和数据字节,每个字节都有一个跟随的ACK(或NACK)位,并以STOP条件结束。该命令字节包括一个7位芯片地址(0010000b)和一个R/W位。ACK(或NACK)总是由接收器发出的。在写入传输时,数据字节从MCU写出,而在读取传输时,数据字节从RDA5807M读出。在I2C接口传输中没有可见的寄存器地址。
  I2C接口有一个固定的起始寄存器地址(0x02h用于写传输,0x0Ah用于读传输),和一个内部增量地址计数器。如果寄存器地址满足寄存器文件的末尾,0x3Ah,寄存器地址将包装回0x00h。对于写传输,MCU程序从寄存器0x02h高字节开始寄存器,然后寄存器0x02h低字节,然后寄存器0x03h高字节,直到最后一个寄存器。
  RDA5807M总是在每个字节后给出ACK,MCU在寄存器编程完成时给出STOP条件。对于读取传输,在从单片机发出命令字节后,RDA5807M发送寄存器0x0Ah高字节,然后寄存器0x0Ah低字节,然后寄存器0x0Bh高字节,直到从单片机接收到NACK。MCU给出除最后一个数据字节之外的数据字节的ACK。MCU给出最后一个数据字节的NACK,然后RDA5807M将总线返回到MCU,MCU将给出停止条件。

RDA5807M调试

准备工作

  一个Arduino UNO开发板、RDA5807M FM收音机模块、两个1K上拉电阻、1uF滤波电容和一个PAM8403 双声道功放模块, 以及两个喇叭。

电路搭建

硬件连接

RDA5807MArduino UNO
VDD3.3V
GNDGND
DATAA4
CLOCKA5
FM接FM天线
R-out接PAM8403的INR
L-out接PAM8403的INL

测试程序

(参考: https://www.basemu.com/the-arduino-fm-radio-build.html)

/*
   - Arduino FM Radio with RDA5807M
   - Sketch for Initial Tryout
   - Based on a Library created by Matthias Hertel
*/
#include <Arduino.h>
#include <Wire.h>
#include <radio.h>
#include <RDA5807M.h>

#define FIX_BAND RADIO_BAND_FM  //无线电波段 - FM
#define FIX_STATION 10430       //频率设置 - 104.3 MHz
#define FIX_VOLUME   4          //音量 - 4

RDA5807M radio; 

void setup() {
  // 打开串口
  Serial.begin(115200);
  Serial.println("My FM Radio");
  delay(200);
  radio.init();
  radio.debugEnable();
  radio.setBandFrequency(FIX_BAND, FIX_STATION);
  radio.setVolume(FIX_VOLUME);
  radio.setMono(false);
  radio.setMute(false);
}

void loop() {
  char s[12];
  radio.formatFrequency(s, sizeof(s));
  Serial.print("Station:");
  Serial.println(s);
  Serial.print("Radio:");
  radio.debugRadioInfo();
  Serial.print("Audio:");
  radio.debugAudioInfo();
  delay(3000);
}

测试结果


Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐