通过RDA5807制作一个收音机

本文介绍了作者基于RDA5807模块和STM32单片机,制作一个简易收音机的过程。在参与2020年智能车竞赛声音信标组后,作者利用RDA5807的数据手册和编程指南,成功实现了通过按键控制频率调节和收听广播的功能。最后,收音机通过耳机输出广播信号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参加2020年智能车竞赛的声音信标组 奋战了一个月 可惜并没有获得奖项,正巧该车的收发Chirp波的模块为RDA5807,闲暇之余,参考了RDA5807的数据手册,制作了一个通过STM32作为主控的RDA5807 收音机
rda5807.c

#include<stdio.h>
#include<sys.h>
#include<delay.h>
#include<RDA5807.h> 
#include<lcd.h>
u16 RXFreq=0;
u8  Vol=0;
u8  RDA_State=0;

//初始化I2C 
void rda5807_i2c_init(void)
{
   
	IIC_Init();
}


void RDA_ReadReg(u8 regAddr)
{
   
	 u16 buf;
    
    IIC_Start();
    IIC_Send_Byte(RDA_WRITE);//发送芯片地址 方向为写
    IIC_Wait_Ack();	
    IIC_Send_Byte(regAddr);//发送寄存器地址
    IIC_Wait_Ack();		
    IIC_Start();
    IIC_Send_Byte(RDA_READ);//发送芯片地址 方向为读
    IIC_Wait_Ack();	
    buf = IIC_Read_Byte(1); 
    buf = buf<<8;
    buf =buf|IIC_Read_Byte(0); 
    IIC_Stop();
    return buf;
}
void RDA_WriteReg(u8 regAddr,u16 val)
{
   
	
    IIC_Start();
    IIC_Send_Byte(RDA_WRITE);	//发送芯片地址 方向为写
    IIC_Wait_Ack();	 
    IIC_Send_Byte(regAddr);	//发送寄存器地址
    IIC_Wait_Ack();	 
    IIC_Send_Byte(val>>8);
    IIC_Wait_Ack();	
    IIC_Send_Byte(val&0xFF);
    IIC_Wait_Ack();	
    IIC_Stop();
}

void RDA_Vol(u8 vol)
{
   
    u16 temp=0;

    if(RDA_State==1)
    {
     
        temp=RDA_ReadReg(RDA_R05);		
        temp&=0xfff0;				   
        RDA_WriteReg(RDA_R05,temp|vol);			
    }
}
//信号强度获取	0~127
u16 RDA_RSSI(void)
{
   
    u16 temp=0;

    if(RDA_State==1)
    {
   
        temp=RDA_ReadReg(RDA_R0B);		
        temp=(temp>>9)&0x7f;    
    }
    
    if(temp<30)
    {
   
        LED0=0;
        LED1=0;
    }
    else if(temp>=30 && temp<50)
    {
   
       LED0=0;
       LED1=1;
    }
    else if(temp>=50 && temp<70)
    {
   
        LED0=1;
        LED1=0;
    }
    else if(temp>=70)
    {
   
        LED0=1;
        LED1=1;
    }
    
    return temp;     
}


//搜台方向 1向上搜索 0向下搜
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值