9.11. FM电台
概述
本说明介绍了fm功能(需外挂fm功能模块):包括开关fm、暂停/播放、音量调节、频率调节、上下电台和扫描频率调节。
9.11.1. 使用配置说明
//app_config.h:
#define CONFIG_FM_DEV_ENABLE 1 //打开外挂FM模块功能
#define CONFIG_FM_LINEIN_ADC_GAIN 100
#define CONFIG_FM_LINEIN_ADC_CHANNEL 3 //FM音频流回采AD通道
#define TCFG_FM_QN8035_ENABLE 1
#define TCFG_FM_BK1080_ENABLE 0
#define TCFG_FM_RDA5807_ENABLE 0
//board.c 板级iic配置,使用硬件iic0
{ "iic1", &iic_dev_ops, (void *)&sw_iic0_data },
{ "iic0", &iic_dev_ops, (void *)&hw_iic1_data },
//fm消息处理
static void fm_msg_deal(struct fm_info *fm, int msg)
{
switch (msg) {
case FM_DEC_ON: //开启fm播放
fm_dec_onoff(fm, 1);
break;
case FM_DEC_OFF: //关闭fm播放
fm_dec_onoff(fm, 0);
break;
case FM_MUSIC_PP: //静音
fm_volume_pp(fm);
break;
case FM_PREV_FREQ: //上一个频率
fm_prev_freq(fm);
break;
case FM_NEXT_FREQ: //下一个频率
fm_next_freq(fm);
break;
case FM_VOLUME_UP: //调节音量
case FM_VOLUME_DOWN:
fm_volume_set(fm);
break;
case FM_PREV_STATION: //上一个电台
fm_prev_station(fm);
break;
case FM_NEXT_STATION: //下一个电台
fm_next_station(fm);
break;
case FM_SCAN_ALL_DOWN: //扫描搜寻所有以下频率电台
fm_scan_all_down(fm);
break;
case FM_SCAN_ALL_UP: //扫描搜寻所有以下频率电台
fm_scan_all_up(fm);
break;
default:
break;
}
}
9.11.2. 代码流程
1.fm_manage.c:创建和杀死fm线程
2.fm_manage.c:fm处理消息任务
int fm_server_msg_post(int msg)//post消息到fm_task线程
{
return os_taskq_post("fm_task", 1, msg);
}
static void fm_task(void *priv)//fm任务
{
struct fm_info *fm = (struct fm_info *)priv;
int err;
int msg[32];
if (0 != fm_manage_init(fm)) {
return;
}
fm_app_mute(fm, 1);
fm_read_info_init(fm);
os_time_dly(1);
fm_app_mute(fm, 0);
fm_dec_onoff(fm, 1);//开启fm
while (1) {
err = os_taskq_pend("taskq", msg, ARRAY_SIZE(msg));
if (err != OS_TASKQ || msg[0] != Q_USER) {
continue;
}
switch (msg[1]) {
case FM_MSG_EXIT:
fm_manage_close(fm);//关闭fm
return;
default:
fm_msg_deal(fm, msg[1]);//fm消息处理
break;
}
}
}
9.11.3. fm模式按键说明
长按KEY_DOWN进行下一个电台播放 fm_next_station(fm); //下一个电台
长按KEY_UP进行上一个电台播放 fm_prev_station(fm); //上一个电台
长按KEY_CANCELL进行扫描搜寻会自动进行搜台播放(如下图) fm_scan_all_down(fm); //扫描搜寻所有以上频率电台
9.11.4. 常见问题
1.切换到fm模式无响应
答:查看外挂fm功能宏是否打开,查看iic是否对应配置,打开初始时会有底噪声则已打开fm功能
2.fm搜寻到电台但是只播放噪声,未能成功收听到电台声
答:查看外挂fm模块天线是否接收信号良好