⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hw_fm5767.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 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 + -