高中生
最后登录1970-1-1
在线时间 小时
注册时间2015-3-13
|
// 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 á¬Dø¶á¼Ä′æÆ÷
* @param ÎT
* @retval ÎT
*/
void RDA5807_read_reg(uint8_t *reg_buf)
{
uint8_t i;
uint8_t ucAck;
i2c_Start();
i2c_SendByte(RDA5807M_SLAVE_ADDRESS | I2C_RD);
/* ¼ì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 êÕòôÄ£¿ééÏμ磬¸′λ
* @param ÎT
* @retval Î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);
// êÕòôÄ£¿éĬèÏ2Îêy
RDA_reg_data[0] = 0xd0;
RDA_reg_data[1] = 0x01;
RDA5807_write_reg();
}
/**
* @brief RDA5807_FM_seek ×Ô¶ˉѰì¨
* @param ÎT
* @retval Î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 Ѱì¨3é1| \r\n");
printf("μ±Ç°1¤×÷ÆμμãÎa£o%d" , chan);
RDA_reg_data[2] = (chan >> 8) & 0xff;
RDA_reg_data[3] = (chan & 0xff);
}
/**
* @brief RDA5807_FM_Test êÕòô»úÄ£¿é2aêÔ
* @param ÎT
* @retval ÎT
*/
void RDA5807_FM_Test(void)
{
LED1_ON;
LED2_ON;
printf("\r\n rda5807m 2aêÔêμÑé \r\n");
if ( i2c_CheckDevice(RDA5807M_SLAVE_ADDRESS) == 0 )
{
printf("\r\n rda5807m ¼ì2a3é1| \r\n");
}
else
{
printf("\r\n rda5807m ¼ì2a2»3é1| \r\n");
}
RDA5807_power();
printf("\r\n éÏμç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没用.触摸屏测试没问题.
|
|