一. 简介

  这是一个购自于淘宝网店的RDA5807调频接收模块,价格只有3块钱人民币。

  RDA5807是一颗调频广播单芯片接收调谐芯片。只需要外部非常少的元器件,便可以组成一个完整的调频广播接收机。这款芯片工作电压范围2.7~3.3V。

  这个模块最早是在2018年3月份购买,一直没有能够进行实验。最早是为了能够用于智能车竞赛现场无线信标检测使用的模块。

DA5807收音芯片:
在百度文库中的说明连接PDF地址:
https://wenku.baidu.com/view/8913ec07a31614791711cc7931b765ce05087a12.html

  RDA5807 参考设计电路图如下。这是在RDA5807数据手册中给出的参考设计原理图。

二. 制作转接模块

  为了便于制作测试转接口,能够在面包板上进行实验。测试该模块的基本尺寸参数。

  如下是制作接口转接板,这样可以通过间距100mil(2.54mm)的排针放置在面包实验板上,方便使用单片机接口模块完成接口控制。

  针对芯片模块,转接板从左到右的定义分别是:

管脚 符号 定义
1 VDD 3.3V
2 NULL
3 NULL
4 SCLK I2C SCLK
5 SDIO I2C SDIO
6 GND GND
7 LOUT 左声道音频输出
8 ROUT 右声道音频输出
9 NULL
10 FMIN FMRF输入

  上述表格定义也是购置的RDA5807模块小板外部引脚的定义。

三、建立实验平台

1.搭建系统

  在面包板上,分别加上3.3V电源模块;RDA5807模块,STM32F030单片机模块。将它们按照功能连接起来。
  1. 通过3.3V模块将面板板上的5V电源转换成3.3V,提供给3RDA5807;
  2. F030模块本身带有AS11173.3V模块,可以直接连接面包板上的5V电源;
  3. 将F030的I2C总线的SCL, SDA 分别连接到RDA5807MdeSCLK,SDIO;

2. 实验软件

1. STM32F030实验电路板硬件

  AltiumDesign\Test\2020\GenretCntF103\SPIF030K8

2. STM32F030软件

  软件所在的目录:
  D:\zhuoqing\window\ARM\IAR\STM32\Application\Test\2020\GeneralFSPIF030
  该软件是一个通用软件测试平台。其中包括有多个项目所遗留下来的代码片段。

3. RDA5807 I2C总线

  RDA5807 I2C总线地址: 001000b + R/W bit。

  在RDA5807读写过程中,只需要使用I2C起始位,然后跟着读和写,然后在通过结束位停止即可。不需要输入读和写的寄存器的地址。因为在RDA5807芯片在读写过程中有着固定的起始地址:

  写寄存器起始地址:开始于0x2
  读寄存器起始地址:开始于0xA.

  RDA5807内部有地址递增寄存器,会自动在读和写的过程中将访问寄存器的地址指针增加。

  RDA5807内部寄存器是16bit,每次读或者写都是先高位字节,然后地位字节依次进行访问。

  下面是网络CircuitDigest上别人给出的使用Arduino搭建的基于RDA5807的调频收音机。
使用Arduino搭建的FM收音机实验模型

(4) STM32F030 工作代码

  下面的代码经过测试,可以工作。
  直接调用RDA5807SetChannel(float freq)设置相应的FM频率。

  RDA5807.H

/*
**==============================================================================
** RDA5807.H:            -- by Dr. ZhuoQing, 2020-01-30
**
**  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:C 文件。

/*
**==============================================================================
** RDA5807.C:             -- by Dr. ZhuoQing, 2020-01-30
**
**==============================================================================
*///------------------------------------------------------------------------------
#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 0x20x00, 0x00,                             // Register 0x30x0a, 0x00,                             // Register 0x40x88, 0x0f,                             // Register 0x50x00, 0x00,                             // Register 0x60x42, 0x02,                             // Register 0x7
};//------------------------------------------------------------------------------
#define RDA5807_TUNE_CONFIG_LENGTH  4uint8_t RDA5807_tune_config[] = {0xc0, 0x01,                             // Register 20x00, 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
//------------------------------------------------------------------------------

测试RDA5807收音机模块相关推荐

  1. 44、RDA5807收音机实验

    文章目录 1.特点 2.控制接口 3.状态转换 4.实验目的 5.原理图 6.代码实现 1.特点   RDA5807 芯片研发而成的新一代数字调频收音机模块,主要应用于 MP3/MP4 媒体播放机,具 ...

  2. DCMTK:测试图像像素模块功能

    DCMTK:测试图像像素模块功能 测试图像像素模块功能 测试图像像素模块功能 #include "dcmtk/config/osconfig.h" #include "d ...

  3. 光模块兼容性介绍,如何测试兼容光模块的兼容性?

    经常买光模块的人都知道,光纤模块通常需要确认兼容码,因为目前市面上存在2种,一种是高性能的兼容模块,一种是原交换机品牌光模块,两者之间的价格差距较大.接下来就由飞畅科技的小编来为大家介绍下光模块的兼容 ...

  4. Jmeter之测试片段和模块控制器应用

    一.测试片段是什么? 应用在控制器上的一个特殊线程组,与线程组处于同一层级,必须与Include Controller或模块控制器一起使用才被执行. 被引用的逻辑控制器.测试片段可以为禁用状态,被引用 ...

  5. metasploit mysql_Metasploit渗透测试:选择模块

    原标题:Metasploit渗透测试:选择模块 当用户准备 攻击 时,首先需要选择针对目标 漏洞的模块.在MSF终端,提供了多个命令,可以帮助用户完成模块选择工作,如搜索模块.加载模块和编辑模块等. ...

  6. ESP32设备驱动-TEA5767收音机模块驱动

    TEA5767收音机模块驱动 1.TEA5767介绍 TEA5767HN 是一款用于低压应用的单芯片电子调谐 FM 立体声收音机,具有完全集成的中频 (IF) 选择性和解调功能,频率范围从76-108 ...

  7. 【花雕体验】14 行空板pinpong库测试外接传感器模块

    1.pinpong库是一套控制开源硬件主控板的Python库,基于Firmata协议并兼容MicroPython语法,5分钟即可让你上手使用Python控制开源硬件.借助于pinpong库,直接用Py ...

  8. FM收音机模块单片机实现

    FM收音机模块例程说明 设计思路和方法: TEA5767集成电路芯片是Philips公司推出的针对低电压应用的数字调谐FM立体声收音机芯片.它采用创新的收音机架构和小尺寸封装,外围电路简单,功能强大, ...

  9. 【Ansible】测试ansible ping模块

    在DevOps时代,使用自动化运维工具来完成一些日常简单.重复的工作,是运维人员必须要掌握的一门技能.今天,我带大家来简单入门超级强大的Ansible的一个ping模块的使用.         [场景 ...

最新文章

  1. mysql数据库核对_Mysql数据库操作总结
  2. python 类-python类定义的讲解
  3. 【PP操作手册】生产订单的查询
  4. 举例详解PHP归并排序的实现
  5. PrimeFaces 5.0 DataTable列切换器
  6. 企业是否应该实现对客户需求的快速响应_如何做好企业服务?
  7. ubuntu navicat删除目录破解如何保留配置信息
  8. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第15篇]RSA-OAEP和ECIES的密钥生成,加密和解密
  9. AX2009 的EP开发要点
  10. php.ini添加的变量读取,PHP5 在扩展里使用 INI 指令(直接添加和配合全局变量两种方式)...
  11. 汇编指令大全及标志位
  12. 中标麒麟linux界面设置ftp,中标麒麟下sambat和vsftp配置
  13. 机器学习——K均值算法(K-means)
  14. CGB2202-DAY02-IO低级流与高级流
  15. 正/负相比例放大中压摆率对电路带宽的影响分析
  16. 炒伦敦金哪个平台正规?2021香港排名前10伦敦金交易平台一览
  17. 教你根据情况快速导入单号查询快递单号物流
  18. 如何教机器学会原研哉(小米新LOGO)的设计理念
  19. 图钉能按到墙上吗_像图钉一样把纸按在墙上的东西叫什么
  20. cocos2dx入门1:关于Cocos Creator

热门文章

  1. 【Linux+Mono+Asp.net公开课】视频下载
  2. 五月记事 2005-05-03
  3. 昨晚今天的记忆 Need for SpeedCarbon Demo
  4. Gradle 的使用
  5. leetcode - 150. Evaluate Reverse Polish Notation
  6. Ruby测试框架Rspec初探
  7. AtCoder Regular Contest 071 D - 井井井 / ###
  8. 求抛物线和直线交点_直线与抛物线唯一公共点的深入理解
  9. BigInteger类实例的构造过程——JDK源码解析
  10. 浅谈JavaScript中按键事件的e.keyCode || e.which || e.charCode