IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 自制数字收音机RDA5807+STM32F405 -> 正文阅读

[嵌入式]自制数字收音机RDA5807+STM32F405

最新萌生想听收音机的想法,早上跑步的时候想听一下广播,就想着自己做一个,上班路上也比较近,基本都是电动车上下班,在路上也可以听一下。交通广播有很多实时信息,不一样的体验。

制作数字收音机,支持全球频段。自动搜台功能,耳机收听效果更好。

方案:主控+收音机芯片+功放芯片实现外放功能+电池+充放电管理。

于是先网上找了一遍,有没有适合我的模块,方便开发集成。

图片

这货要77块钱,显示有库存是假的,至少要一个月的订货周期,要一个?我都不好意思给卖家说,算了吧。

某宝找了一下,有分散的模块,能凑合用;这几根线折腾了一两个小时,RDA5807绿色的模块边上的焊盘容易扯掉,用的时候要很小心。

图片

RDA5807M是一款IIC通讯的芯片,实现的功能有自动搜台、音量加减、切台、屏保、时钟、电量显示、及低功耗管理等。

验证完之后自己做了一个小模块

RDA5807M+PAM8403+耳机+喇叭接口

参考:

https://oshwhub.com/yiplay/mu-kuai-rda5807-pam8403-1-01

下图为设计好的原型:

在这里插入图片描述
在这里插入图片描述

左侧为输入接口:

3.3V供电,GND,SCL,SDA,SHND(功放静音低电平有效)

右侧为输出接口:

左声道,右声道,和耳机接口,当耳机插入后外音自动停止,FM的天线并在耳机的MIC上面,所以插入耳机的音效质量会更好。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

/**
 * @brief Initialize RDA5807P
 * @author 
 * @date 
 * @param void
 * @return bool:if true,the operation is successful;otherwise is failed
 * @retval
 */
bool  RDA5807P_Intialization(void)
{
 uint8 error_ind = 0;
 uint8 RDA5807P_REGR[10]={0x0};
    uint8 i = 0;

    RDA5807P_REGW[0] = 0x00;
    RDA5807P_REGW[1] = 0x02;

 error_ind = OperationRDAFM_2w(WRITE, (uint8 *)&RDA5807P_REGW[0], 2);
 delayms(50);

 error_ind = OperationRDAFM_2w(READ, (uint8 *)&RDA5807P_REGR[0], 10);
 delayms(50);

    gChipID = RDA5807P_REGR[8];
    gChipID = ((gChipID<<8) | RDA5807P_REGR[9]);

    if (gChipID == 0x5808)  //RDA5807N
    {
        for (i=0;i<8;i++)
            RDA5807P_REGW[i] = RDA5807N_initialization_reg[i];
     
        error_ind = OperationRDAFM_2w(WRITE, (uint8 *)&RDA5807N_initialization_reg[0], 2);
        delayms(600); 
     error_ind = OperationRDAFM_2w(WRITE, (uint8 *)&RDA5807N_initialization_reg[0], sizeof(RDA5807N_initialization_reg));
    }
    else if (gChipID == 0x5804)     //RDA5807PE,RDA5807SP
    {
        for (i=0;i<8;i++)
            RDA5807P_REGW[i] = RDA5807PE_initialization_reg[i];
     
        error_ind = OperationRDAFM_2w(WRITE, (uint8 *)&RDA5807PE_initialization_reg[0], 2);
        delayms(600); 
     error_ind = OperationRDAFM_2w(WRITE, (uint8 *)&RDA5807PE_initialization_reg[0], sizeof(RDA5807PE_initialization_reg));
    }
    else if (gChipID == 0x5801)     //RDA5807H,RDA5807HP
    {
        for (i=0;i<8;i++)
            RDA5807P_REGW[i] = RDA5807PH_initialization_reg[i];
     
        error_ind = OperationRDAFM_2w(WRITE, (uint8 *)&RDA5807PH_initialization_reg[0], 2);
        delayms(600); 
     error_ind = OperationRDAFM_2w(WRITE, (uint8 *)&RDA5807PH_initialization_reg[0], sizeof(RDA5807PH_initialization_reg));
        delayms(100);

  do
  {
   i++;
   if(i>10) 
    return 0; 
   
  RDA5807P_SetFreq(8750);

  delayms(10);    

  //read REG0A&0B 
  OperationRDAFM_2w(READ,&(RDA5807P_REGR[0]), 4);
  if((RDA5807P_REGR[3]&0x80)==0)
   {
    RDA5807_REGW[1] &= 0xFE; 
    error_ind = OperationRDAFM_2w(WRITE, (uint8 *)&RDA5807_REGW[0], 2);
    delayms(50); 
    RDA5807_REGW[1] |= 0x01;
    error_ind = OperationRDAFM_2w(WRITE, (uint8 *)&RDA5807_REGW[0], 2);
    delayms(50);

  }
  }while((RDA5807P_REGR[3]&0x80)==0);
    }
    else
    {
        gChipID = RDA5807P_REGR[4];
        gChipID = ((gChipID<<8) | RDA5807P_REGR[5]);
    }
    
    if ((gChipID == 0x5802) || (gChipID == 0x5803))
    {
        gChipID = 0x5802;

        for (i=0;i<8;i++)
            RDA5807P_REGW[i] = RDA5807P_initialization_reg[i];


        error_ind = OperationRDAFM_2w(WRITE, (uint8 *)&RDA5807P_initialization_reg[0], 2);
        delayms(600); 
        error_ind = OperationRDAFM_2w(WRITE, (uint8 *)&RDA5807P_initialization_reg[0], sizeof(RDA5807P_initialization_reg));

    }

 delayms(50);         //Dealy 50 ms
 
 
 if (error_ind )
    return 0;
 else
    return 1;
}
/**
 * @brief Set FM volume
 * @It has better use the system volume operation to replace this function
 * @author 
 * @date 
 * @param uint8 level: volume value
 * @return void
 * @retval
 */
void RDA5807P_SetVolumeLevel(uint8 level)
{
    uint8 RDA5807P_reg_data[8];
    uint8 i = 0;

    for (i=0;i<8;i++)
        RDA5807P_reg_data[i] = RDA5807P_REGW[i];

    RDA5807P_reg_data[7]=(( RDA5807P_REG[7] & 0xf0 ) | (level & 0x0f)); 
    
    RDA5807P_reg_data[3] &= (~(0x10));

 OperationRDAFM_2w(WRITE, &(RDA5807P_reg_data[0]), 8);
    delayms(50);    //Dealy 50 ms
}
/**
 * @brief Set frequency function
 * @author 
 * @date 
 * @param int16 curFreq:frequency value
 * @return void
 * @retval
 */
void RDA5807P_SetFreq( int16 curFreq )
{   
 uint16 curChan;
 
 curChan=RDA5807P_FreqToChan(curFreq);
 
 //SetNoMute
 RDA5807P_REGW[0] |= 1<<7;
 RDA5807P_REGW[2]=curChan>>2;
 RDA5807P_REGW[3]=(((curChan&0x0003)<<6)|0x10) | (RDA5807P_REGW[3]&0x0f); //set tune bit
 
 OperationRDAFM_2w(WRITE, &(RDA5807P_REGW[0]), 4);
 delayms(50);     //Delay five ms
}

更多linux知识点推荐:

【Linux文件系统】NFS文件系统如何生效

[Linux文件系统]文件系统的反解压操作镜像生产原始目录

[Linux字符驱动] DIDO 74HC595实现遥控遥信功能

[linux字符驱动]Watchdog如何躲过linux的启动时间

[Linux字符驱动] LED点灯试验

[Linux 驱动]模块加载RTX8025驱动

[linux kernel] 内核下RX8025对接系统时钟

[linux kernel]内核启动阶段控制IO口时序输出

[职场吐槽]如何缓解焦虑

[linux kernel] 内核下ksz8081驱动调试

[linux kernel] 内核下ksz9031驱动调试

[linux kernel]内核图形化裁剪配置

[linux kernel]内核移植过程记录

[linux kernel] 内核启动流程梳理

[linux 底层]u-boot EMMC驱动

[linux 底层]u-boot图形化裁剪配置

[Linux 底层]U-boot ksz9031网络驱动调试

[Linux 底层]U-boot调试命令使用技巧

[Linux 底层]U-boot编译移植

[Linux 底层]U-boot烧录脚本介绍SecureCRT

[Linux 底层]bootstrap移植裁剪及编译

[Linux 底层] 平台软件分层介绍

[Linux 驱动] RS485测试程序编写

[Linux 驱动] CAN测试程序编写

推荐阅读:

芯片手册解读 | Linux底层 | 职场吐槽 | C语言视频

关注微信公众号,回复“收音机模块”,下载数据手册及参考程序。

在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:35:35  更:2022-05-12 16:36:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 1:00:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码