基于Arduino UNO的RDA5807M FM收音机调频教程
RDA5807M系列是最新一代的单片广播调频立体声无线电调谐器,具有全集成的合成器、IF选择性、RDS/RBDS和MPX解码器。该调谐器使用CMOS进程,支持多接口,并需要最少的外部组件。所有这些都使它非常适合用于便携式设备。RDA5807M系列拥有一个强大的低中频数字音频处理器,这使它具有最佳的音质与不同的接收条件。RDA5807M仅支持I 2C控制接口。I 2C接口传输从开始条件开始,一个命令
概述
RDA5807M系列是最新一代的单片广播调频立体声无线电调谐器,具有全集成的合成器、IF选择性、RDS/RBDS和MPX解码器。该调谐器使用CMOS进程,支持多接口,并需要最少的外部组件。所有这些都使它非常适合用于便携式设备。
RDA5807M系列拥有一个强大的低中频数字音频处理器,这使它具有最佳的音质与不同的接收条件。
功能特点
- 采用通用的102BC模块的封装,用户可直接替换使用,无需更改电路设计。
- 灵敏度高、噪声小、抗干扰能力强、外接元件极少、体积小(11*11.2MM)、使用极其简单。
- 76-108MHz全球FM频段兼容(包括日本76-91MHz和欧美87.5-108.5MHz)。
- I2C串行数据总线接口通讯,支持外部基准时钟输入方式。
- 完全整合的COMS工艺单晶片集成电路,功耗极小。
- 内置高精度A/D(模数转换器)及数字频率合成器。
- 内置LDO调整、低功耗、超宽电压使用范围(2.7-3.6VDC)。
- 内置噪声消除、软静音、低音增强电路设计。
- 高功率32Ω负载音频输出,直接耳机驳接,无需外接音频驱动放大。
- 应用简便、成本低,性价比高。
应用范围
- 移动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 双声道功放模块, 以及两个喇叭。
电路搭建
硬件连接
RDA5807M | Arduino UNO |
---|---|
VDD | 3.3V |
GND | GND |
DATA | A4 |
CLOCK | A5 |
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);
}
测试结果
更多推荐
所有评论(0)