测试RDA5807收音机模块
一. 简介
这是一个购自于淘宝网店的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收音机模块相关推荐
- 44、RDA5807收音机实验
文章目录 1.特点 2.控制接口 3.状态转换 4.实验目的 5.原理图 6.代码实现 1.特点 RDA5807 芯片研发而成的新一代数字调频收音机模块,主要应用于 MP3/MP4 媒体播放机,具 ...
- DCMTK:测试图像像素模块功能
DCMTK:测试图像像素模块功能 测试图像像素模块功能 测试图像像素模块功能 #include "dcmtk/config/osconfig.h" #include "d ...
- 光模块兼容性介绍,如何测试兼容光模块的兼容性?
经常买光模块的人都知道,光纤模块通常需要确认兼容码,因为目前市面上存在2种,一种是高性能的兼容模块,一种是原交换机品牌光模块,两者之间的价格差距较大.接下来就由飞畅科技的小编来为大家介绍下光模块的兼容 ...
- Jmeter之测试片段和模块控制器应用
一.测试片段是什么? 应用在控制器上的一个特殊线程组,与线程组处于同一层级,必须与Include Controller或模块控制器一起使用才被执行. 被引用的逻辑控制器.测试片段可以为禁用状态,被引用 ...
- metasploit mysql_Metasploit渗透测试:选择模块
原标题:Metasploit渗透测试:选择模块 当用户准备 攻击 时,首先需要选择针对目标 漏洞的模块.在MSF终端,提供了多个命令,可以帮助用户完成模块选择工作,如搜索模块.加载模块和编辑模块等. ...
- ESP32设备驱动-TEA5767收音机模块驱动
TEA5767收音机模块驱动 1.TEA5767介绍 TEA5767HN 是一款用于低压应用的单芯片电子调谐 FM 立体声收音机,具有完全集成的中频 (IF) 选择性和解调功能,频率范围从76-108 ...
- 【花雕体验】14 行空板pinpong库测试外接传感器模块
1.pinpong库是一套控制开源硬件主控板的Python库,基于Firmata协议并兼容MicroPython语法,5分钟即可让你上手使用Python控制开源硬件.借助于pinpong库,直接用Py ...
- FM收音机模块单片机实现
FM收音机模块例程说明 设计思路和方法: TEA5767集成电路芯片是Philips公司推出的针对低电压应用的数字调谐FM立体声收音机芯片.它采用创新的收音机架构和小尺寸封装,外围电路简单,功能强大, ...
- 【Ansible】测试ansible ping模块
在DevOps时代,使用自动化运维工具来完成一些日常简单.重复的工作,是运维人员必须要掌握的一门技能.今天,我带大家来简单入门超级强大的Ansible的一个ping模块的使用. [场景 ...
最新文章
- mysql数据库核对_Mysql数据库操作总结
- python 类-python类定义的讲解
- 【PP操作手册】生产订单的查询
- 举例详解PHP归并排序的实现
- PrimeFaces 5.0 DataTable列切换器
- 企业是否应该实现对客户需求的快速响应_如何做好企业服务?
- ubuntu navicat删除目录破解如何保留配置信息
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第15篇]RSA-OAEP和ECIES的密钥生成,加密和解密
- AX2009 的EP开发要点
- php.ini添加的变量读取,PHP5 在扩展里使用 INI 指令(直接添加和配合全局变量两种方式)...
- 汇编指令大全及标志位
- 中标麒麟linux界面设置ftp,中标麒麟下sambat和vsftp配置
- 机器学习——K均值算法(K-means)
- CGB2202-DAY02-IO低级流与高级流
- 正/负相比例放大中压摆率对电路带宽的影响分析
- 炒伦敦金哪个平台正规?2021香港排名前10伦敦金交易平台一览
- 教你根据情况快速导入单号查询快递单号物流
- 如何教机器学会原研哉(小米新LOGO)的设计理念
- 图钉能按到墙上吗_像图钉一样把纸按在墙上的东西叫什么
- cocos2dx入门1:关于Cocos Creator
热门文章
- 【Linux+Mono+Asp.net公开课】视频下载
- 五月记事 2005-05-03
- 昨晚今天的记忆 Need for SpeedCarbon Demo
- Gradle 的使用
- leetcode - 150. Evaluate Reverse Polish Notation
- Ruby测试框架Rspec初探
- AtCoder Regular Contest 071 D - 井井井 / ###
- 求抛物线和直线交点_直线与抛物线唯一公共点的深入理解
- BigInteger类实例的构造过程——JDK源码解析
- 浅谈JavaScript中按键事件的e.keyCode || e.which || e.charCode