野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21579|回复: 1

FM收音机

[复制链接]
发表于 2015-3-26 13:01:54 | 显示全部楼层 |阅读模式
// RDA5807 ¼Ä′æÆ÷  D′
static uint8_t RDA_reg_data[8] =
{
   0xd0,0x00,  // 02H
   0x00,0x00,  // 03H
   0x00,0x40,  // 04H
   0x90,0x88,  // 05H
};

/**
  * @brief  RDA5807_write_reg á¬DøD′¼Ä′æÆ÷
  * @param  ÎT  
  * @retval ÎT
  */
static void RDA5807_write_reg(void)
{
        uint8_t i;
        uint8_t ucAck;
        
        i2c_Start();
        

        i2c_SendByte(RDA5807M_SLAVE_ADDRESS | I2C_WR);
        

    ucAck = i2c_WaitAck();
        if (ucAck == 1)
        {
                goto err_quit;
        }
        

        for(i=0; i<8; i++)
        {
                i2c_SendByte(RDA_reg_data);
               

                ucAck = i2c_WaitAck();
                if (ucAck == 1)
                {
                        goto err_quit;
                }
        }        
err_quit:
        i2c_Stop();
}

/**
  * @brief  RDA5807_read_reg á&#172;D&#248;&#182;á&#188;&#196;′&#230;&#198;÷
  * @param  &#206;T  
  * @retval &#206;T
  */
void RDA5807_read_reg(uint8_t *reg_buf)
{
        uint8_t i;
        uint8_t ucAck;

        i2c_Start();


        i2c_SendByte(RDA5807M_SLAVE_ADDRESS | I2C_RD);

        /* &#188;ì2aACK */
        ucAck = i2c_WaitAck();
        if (ucAck == 1)
        {
                goto err_quit;
        }

        for (i = 0; i < 4; i++)
        {
                reg_buf = i2c_ReadByte();
                if (i == 3)
                {
                        i2c_NAck();
                }
                else
                {                        
                        i2c_Ack();
                }
        }

err_quit:
        i2c_Stop();
}

/**
  * @brief  RDA5807_power ê&#213;ò&#244;&#196;£&#191;éé&#207;μ&#231;£&#172;&#184;′&#206;&#187;
  * @param  &#206;T  
  * @retval &#206;T
  */
static void RDA5807_power(void)
{
         Delay_ms(50);
        

   RDA_reg_data[0] = 0x00;
   RDA_reg_data[1] = 0x02;
   RDA5807_write_reg();

   Delay_ms(10);

   // ê&#213;ò&#244;&#196;£&#191;é&#196;&#172;è&#207;2&#206;êy
   RDA_reg_data[0] = 0xd0;
   RDA_reg_data[1] = 0x01;
   RDA5807_write_reg();
}

/**
  * @brief  RDA5807_FM_seek ×&#212;&#182;ˉ&#209;°ì¨
  * @param  &#206;T  
  * @retval &#206;T
  */
static void RDA5807_FM_seek(void)
{
   
   uint8_t  reg_data[4] = {0x00, 0x00, 0x00, 0x00};

   RDA_reg_data[3] &= ~(1 << 4);      


   RDA_reg_data[0] |=  (1 << 0);      
   RDA5807_write_reg();


   while(0 == (reg_data[0] & 0x40))
   {
     Delay_ms(40);

     RDA5807_read_reg(reg_data);
         
   }

   chan = reg_data[0] & 0x03;
   chan = reg_data[1] | (chan << 8);
   chan = chan << 6;
   
   printf("\r\n &#209;°ì¨3é1| \r\n");
   printf("μ±&#199;°1¤×÷&#198;μμ&#227;&#206;a£o%d" , chan);


   RDA_reg_data[2] = (chan >> 8) & 0xff;
   RDA_reg_data[3] = (chan & 0xff);
}

/**
  * @brief  RDA5807_FM_Test ê&#213;ò&#244;&#187;ú&#196;£&#191;é2aê&#212;
  * @param  &#206;T  
  * @retval &#206;T
  */
void RDA5807_FM_Test(void)
{

        LED1_ON;
        LED2_ON;        

        printf("\r\n rda5807m 2aê&#212;êμ&#209;é \r\n");
        
        if ( i2c_CheckDevice(RDA5807M_SLAVE_ADDRESS) == 0 )
        {
                printf("\r\n rda5807m &#188;ì2a3é1| \r\n");
        }
        else
        {
                printf("\r\n rda5807m &#188;ì2a2&#187;3é1| \r\n");
        }
        

        RDA5807_power();
        
        printf("\r\n é&#207;μ&#231;3é1| \r\n");
        

        RDA5807_Volume_Set(5);


        RDA5807_Seek_Next();
        
        while(1)
        {        
                if( Key_Scan(GPIOC,GPIO_Pin_13) == KEY_ON  )     
                {                        
                        touch_even = E_SEEK_NEXT;                                   

                        LED1_TOGGLE;
                }  

                if( Key_Scan(GPIOA,GPIO_Pin_0) == KEY_ON  )
                {                        
                        touch_even = E_SEEK_PREV;                                    
        
                        LED1_TOGGLE;
                }
               
   
                even_process();               
  }
}

我是用野火案例里的FM收音机,写进去的,出现的现象是可以接收到广播,就是不能控制声音,而且KEY1可以使用,KEY2没用.触摸屏测试没问题.
回复

使用道具 举报

发表于 2015-3-26 16:37:56 | 显示全部楼层

MINI:链接: http://pan.baidu.com/s/1pJr6bhD 密码: nwpt
ISO:链接: http://pan.baidu.com/s/1bbAxC 密码: 6vmf

重新下载例程,再测试看看
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-12-7 00:38 , Processed in 0.034313 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表