📄 hw_fm5767.c
字号:
/******************************************************************/
/* Copyright (C) 2007 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*******************************************************************
File : hw_fm5767.c
Desc : fm接口函数的实现
Author : huangxinyu
Date : 2007-08-21
Notes : 移植Rock26上的FM driver,修改I2C调用
$Log: hw_fm5767.c,v $
Revision 1.4 2008/06/19 04:43:30 Administrator
代码整理!
Revision 1.3 2008/05/22 07:17:17 XXX
更新流程
Revision 1.2 2008/05/20 14:26:19 XXX
fm新流程
Revision 1.1.1.1 2008/05/07 04:15:08 Administrator
no message
Revision 1.1.1.1 2008/03/06 13:29:05 Lingzhaojun
no message
Revision 1.7 2008/01/06 13:05:02 Xiexiuxin
添加Fm芯片选自开关
Revision 1.6 2007/11/10 04:24:29 Huangxinyu
调试修改
Revision 1.5 2007/10/15 09:06:15 Huangxinyu
根据RK27提交修改driver
Revision 1.4 2007/10/11 04:09:20 Huangshilin
System 其他目录。
Revision 1.3 2007/10/08 02:38:41 Lingzhaojun
添加版本自动注释脚本
*********************************************************************/
#include "hw_include.h"
#if (FM_TYPE==FM5767_TYPE||FM_TYPE==FM5807_TYPE)
#include "hw_fm5767.h"
INT8U TEA5767ControlData[5];
/**************************************************************************************
* 函数名称:Tuner_ReadData
* 功 能:从FM chip(TEA5767)读取数据
* 输入参数:pdata -- 要读的数据指针
* size -- 要读的数据个数
* 输出参数:无
* 返 回 值: TRUE -- 读取成功
* FALSE -- 读取失败
* 说 明:
**************************************************************************************/
BOOL Tuner_ReadData(UINT8 *pdata, UINT8 size)
{
BOOL ret;
I2C_Init(FM5767, 200);
ret = I2C_Read(0, pdata, size, DirectMode);
I2C_Deinit();
return ret;
}
/**************************************************************************************
* 函数名称:Tuner_SendCommand
* 功 能:往FM chip(TEA5767)发送数据
* 输入参数:pdata -- 要发送的数据指针
* size -- 要发送的数据个数
* 输出参数:无
* 返 回 值: TRUE -- 发送成功
* FALSE -- 发送失败
* 说 明:
**************************************************************************************/
BOOL Tuner_SendCommand(UINT8 *pdata, UINT8 size)
{
BOOL ret;
I2C_Init(FM5767, 200);
ret = I2C_Write(0, pdata, size, DirectMode);
I2C_Deinit();
return ret;
}
/**************************************************************************************
* 函数名称:Tuner_Enable
* 功 能:使能 FM chip(TEA5767)
* 输入参数:无
* 输出参数:无
* 返 回 值: 无
* 说 明:
**************************************************************************************/
void Tuner_Enable(INT8U area)
{
TEA5767ControlData[0] = 0x24;
TEA5767ControlData[1] = 0x22;
TEA5767ControlData[2] = 0x20;
TEA5767ControlData[3] = 0x37;
TEA5767ControlData[4] = 0x00;
Tuner_SendCommand(TEA5767ControlData, 5);
}
/**************************************************************************************
* 函数名称:Tuner_Disable
* 功 能:禁止 FM chip(TEA5767)
* 输入参数:无
* 输出参数:无
* 返 回 值: 无
* 说 明:
**************************************************************************************/
void Tuner_Disable(void)
{
TEA5767ControlData[0] = 0xa4;
TEA5767ControlData[1] = 0x22;
TEA5767ControlData[2] = 0x20;
TEA5767ControlData[3] = 0x77;
TEA5767ControlData[4] = 0x00;
Tuner_SendCommand(TEA5767ControlData, 5);
}
/**************************************************************************************
* 函数名称:Tuner_PowerOnInit
* 功 能:FM chip(TEA5767)上电初始化
* 输入参数:无
* 输出参数:无
* 返 回 值: 无
* 说 明:上电时先关闭FM chip(TEA5767)
**************************************************************************************/
void Tuner_PowerOnInit(void)
{
Tuner_Disable();
}
/**************************************************************************************
* 函数名称:Tuner_SetStereo
* 功 能:Fm Radio Stereo Setting
* 输入参数:无
* 输出参数:无
* 返 回 值: 无
* 说 明:
**************************************************************************************/
void Tuner_SetStereo(BOOL bStereo)
{
TEA5767ControlData[2] &= 0xF7; //~TUNER_MS 0x08
TEA5767ControlData[3] = 0x00 | TUNER_XTAL | TUNER_HCC ;//| TUNER_SNC;
if (bStereo)
{
TEA5767ControlData[2] |= TUNER_MS;
}
else
{
TEA5767ControlData[3] |= TUNER_SNC;
}
Tuner_SendCommand(TEA5767ControlData, 5);
}
/**************************************************************************************
* 函数名称:GetStereoStatus
* 功 能:得到立体声状态
* 输入参数:无
* 输出参数:无
* 返 回 值: TRUE -- 为立体声状态
* FALSE -- 不是立体声
* 说 明:
**************************************************************************************/
BOOLEAN GetStereoStatus(void)
{
UINT8 TempBuffer[3];
Tuner_ReadData(TempBuffer, 3);
return (TempBuffer[2] & 0x80) ? TRUE : FALSE;
}
/**************************************************************************************
* 函数名称:Tuner_PowerOffDeinit
* 功 能:Fm Radio Power Off Deinit
* 输入参数:无
* 输出参数:无
* 返 回 值: 无
* 说 明:
**************************************************************************************/
void Tuner_PowerOffDeinit(void)
{
TEA5767ControlData[3] |= TUNER_STBY;
Tuner_SendCommand(TEA5767ControlData, 5);
}
/**************************************************************************************
* 函数名称:Tuner_SetFrequency
* 功 能:设置FM chip(TEA5767)频率
* 输入参数:n10KHz -- 频率(单位10KHz)
* HILO -- 1(偏高设置) 0(偏低设置)
* ForceMono -- 是否强制为单声道
* 输出参数:无
* 返 回 值: 无
* 说 明:
**************************************************************************************/
void Tuner_SetFrequency(UINT32 n10KHz, UINT8 HILO, BOOL ForceMono)
{
if (HILO)
{
n10KHz = (n10KHz * 10000 + 225000 + (1 << 12)) >> 13;
HILO = 0x30;
}
else
{
n10KHz = (n10KHz * 10000 - 225000 + (1 << 12)) >> 13;
HILO = 0x20;
}
if (ForceMono)
HILO |= 0x08;
TEA5767ControlData[0] = n10KHz >> 8;
TEA5767ControlData[1] = n10KHz;
TEA5767ControlData[2] = HILO;
TEA5767ControlData[3] = 0x00 | TUNER_XTAL | TUNER_HCC ;
Tuner_SendCommand(TEA5767ControlData, 4);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -