问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于Arduino UNO的RDA5807M FM收音机调频教程

创作时间:
作者:
@小白创作中心

基于Arduino UNO的RDA5807M FM收音机调频教程

引用
CSDN
1.
https://m.blog.csdn.net/qq_42250136/article/details/139099443

本文将介绍如何使用Arduino UNO开发板和RDA5807M模块制作一个简单的FM收音机。文章详细介绍了RDA5807M的功能特点、应用范围、外观尺寸和引脚定义,并提供了具体的电路连接和测试程序。

概述

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仅支持I2C控制接口。I2C接口传输从开始条件开始,一个命令字节和数据字节,每个字节都有一个跟随的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

测试程序

/*
- 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);
}

测试结果

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号