资讯详情

【杰理AC696X】外挂收音IC RDA5807的频段设置

外挂收音IC RDA5807的频段设置

测试SDK版本:《ac608n_soundbox_sdk_v1.2.2》


文章目录

  • 外挂收音IC RDA5807的频段设置
  • 前言
  • 一、RDA5807M 基本特征
  • 二、频段设置
    • 1.设置频段 76–108 MHz
    • 2.设置频段65 –76 MHz
  • 总结


前言

世界各国收音频段:

接收地区OIRT: AM:531-1602(9kHz步进)、FM 64.5-73MHz(50kHz步进)俄罗斯、蒙古和北朝鲜 接收地区EU :AM:531-1602(9kHz步进)、FM 87.5-108 MHz(50kHz步进)欧洲、中国、韩国和菲律宾 接收地区JP :AM:531-1629(9kHz步进)、FM 76-90MHz(100kHz步进)日本 接收地区US : AM:530-1710kHz(10kHz步进)、FM 87.5-108.1MHz(200kHz步进)美国


一、RDA5807M 基本特征

在这里插入图片描述 完整手册可在立创商城下载查阅

可见,这个收音机IC几个特点: 支持全球频段 50~115MHz 2、支持 100KHz、200KHz、50KHz、25KHz 的步进 3、支持外挂32.768KHz晶振 4、支持32.768 KHz 12M,24M,13M,26M,19.2M,38.4MHz的参考时钟 5、支持 切换单声道和立体声 6.软件可以控制音量和静音 工作电压:2.7~3.3V 8、只支持I2C通讯

本案使用的电路:

二、频段设置

1.蓝牙方案,如杰理和蓝讯SDK基本都是自带的RDA由于5807的驱动,RDA5807M广泛应用于消费电子,网上驱动等数据也比较齐全,这里不贴完整驱动。

2.寄存器说明书也在数据手册中。完整的手册可立创商城下载查阅

杰理SDK中RDA使用默认频段的5807寄存器初始化表 87~108MHz:

/*--------------RDA5807MP Initial Table----------------*/ static const u8 rda5807mp[] = { 
         //#if defined(_SHARE_CRYSTAL_24MHz_) // 0xC4,0x51, //02H: //#elif defined(_SHARE_CRYSTAL_12MHz_) // 0xC4,0x11, //02H: //#elif defined(_SHARE_CRYSTAL_32KHz_) // 0xC4,0x01, //02H: //#else     0xC0,     0x05,//02H: //#endif     0x00,     0x10,//03H:          0x04,     0x00,//04H:     RDA5807_RSSI | 0xC0,     0xBF, //05h     0x60,     0x00,     0x42,     0x1A,//11     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,  //0x0ah     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,
    0x00,
    0x00,
    0x00,
    0x00,
    0x00,  //0x10h
    0x00,
    0x19,
    0x2a,
    0x11,
    0xB0,//0x80; 20110804
    0x42,//0x53;
    0x2a,//0x22; 20110804
    0x11,//加大音量0x31 wengyidong
    0xb8,//0xf8; 20110804
    0x31,//0x30; //0x15h
    0xc0,
    0x00,
    0x2a,
    0x91,
    0x94,
    0x00,
    0x00,
    0xa8,
    0xc4,
    0x00,  //0x1ah
    0xf7,//0xe0; 20110804
    0x0f,//0x00;
    0x2a,//0x3a;20110804
    0xdc,//0x14; //0x1ch
    0x80,//0x81;20110804
    0x6f,//0x6a;
    0x46,
    0x08,
    0x00,
    0x86,
    0x06,
    0x61,  //0x20h
    0x00,
    0x00,
    0x10,
    0x9e,
    0x23,//0x22; 20110804
    0xc8,//0x44;
    0x04,
	0x06,//0x08; //0x24h 20110804
	0x0e,//0x0d;
	0x1c,//0x18; //0x25h
};

频段设置的寄存器: 可以看到,要改变频段,需要设置寄存器地址0x03h的bit<3>和bit<2>

1.设置频段 76–108 MHz

将5807初始表中的:

0x00,
0x10,//03H:

改为:

0x00,
0x18,//03H:

搜台设置频点时,会重新写0x03h寄存器,所以,下面函数也要同步修改:

/*----------------------------------------------------------------------------*/
/**@brief 设置一个频点RDA5807 @param fre 频点 875~1080 @return 1:当前频点有台,0:当前频点无台 @note bool set_fre_RDA5807(u16 fre) */
/*----------------------------------------------------------------------------*/
u8 rda5807_set_fre(void *priv, u16 fre)
{ 
        
    u16 pll;
    u8 i;

    i = 0;
    fre /= 10;

    printf("set_5807_frq %d ", fre);

    pll = (fre - 870);
    rda5807_dat[2] = pll >> 2;
    rda5807_dat[3] = ((pll & 0x0003) << 6) | 0x10;

    rda5807_write(4);
    delay_n10ms(5);
    /* os_time_dly(5); */

    do { 
        
        rda5807_read(4);
        i++;
        //delay_n10ms(1);
        if (rda5807_true()) { 
        
            puts(" 1 \n");
            return 1;
        }
    } while (i < 2);

    puts(" 0 \n");
    return 0;
}

修改后:

/*----------------------------------------------------------------------------*/
/**@brief 设置一个频点RDA5807 @param fre 频点 875~1080 @return 1:当前频点有台,0:当前频点无台 @note bool set_fre_RDA5807(u16 fre) */
/*----------------------------------------------------------------------------*/
u8 rda5807_set_fre(void *priv, u16 fre)
{ 
        
    u16 pll;
    u8 i;

    i = 0;
    fre /= 10;

    printf("set_5807_frq %d ", fre);

    pll = (fre - 760);
    rda5807_dat[2] = pll >> 2;
    rda5807_dat[3] = ((pll & 0x0003) << 6) | 0x18;

    rda5807_write(4);
    delay_n10ms(5);
    /* os_time_dly(5); */

    do { 
        
        rda5807_read(4);
        i++;
        //delay_n10ms(1);
        if (rda5807_true()) { 
        
            puts(" 1 \n");
            return 1;
        }
    } while (i < 2);

    puts(" 0 \n");
    return 0;
}

杰理的驱动,要将下图的REAL_FREQ_MIN 改为 7600:

2.设置频段65 –76 MHz

将5807初始表中的0x03h寄存器改为:

    0x00,//03h
    0x1c,

要注意:

0x07h寄存器:

	0x1A,//07h
	0x00,

频点设置函数改为:

u8 rda5807_set_fre(void *priv, u16 fre)
{ 
        
    u16 pll;
    u8 i;

    i = 0;
	fre/=10;

    printf("set_5807_frq %d ", fre);

    pll = (fre - 650);
    rda5807_dat[2] = pll >> 2;
    rda5807_dat[3] = ((pll & 0x0003) << 6) | 0x1c;

    printf("pll: %d 0x%x 0x%x \n", pll,rda5807_dat[2],rda5807_dat[3]);
    rda5807_write(4);
    delay_n10ms(5);
    /* os_time_dly(5); */

    do { 
        
        rda5807_read(4);
        i++;
        //delay_n10ms(1);
        if (rda5807_true()) { 
        
            puts(" 1 \n");
            return 1;
        }
    } while (i < 2);

    puts(" 0 \n");
    return 0;
}

频段范围改为:

#define REAL_FREQ_MIN (6500)
#define REAL_FREQ_MAX (7600)

总结

1、设置的两个频段都用 惠普HP8657A信号发生器 测试过的,能正常接收频段范围内的频点。 2、如果设置后,出现搜不到对应频点的情况,可以查看驱动,除了初始化写了初始数据,在其它地方有无改动到相应寄存器,可以全局搜索或者读寄存器值来排查问题。

标签: 2513n10tc接近传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台