📄 mxl_user_define.c
字号:
/*
Driver APIs for MxL5007 Tuner
Copyright, Maxlinear, Inc.
All Rights Reserved
File Name: MxL_User_Define.c
*/
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
// //
// I2C Functions (implement by customer) //
// //
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
/******************************************************************************
**
** Name: MxL_I2C_Write
**
** Description: I2C write operations
**
** Parameters:
** DeviceAddr - MxL5007 Device address
** pArray - Write data array pointer
** count - total number of array
**
** Returns: 0 if success
**
** Revision History:
**
** SCR Date Author Description
** -------------------------------------------------------------------------
** N/A 12-16-2007 khuang initial release.
**
******************************************************************************/
#include "MxL5007_Common.h"
#include "nim_config.h"
#include "MxL_User_Define.h"
#include <stdio.h>
UINT32 MxL_I2C_Write(UINT8 DeviceAddr, UINT8* pArray, UINT32 count)
{
u32 u32Handle;
if (CT_NIM_GetBus() == EN_CT_NIM_BUS_0)
{
if( CT_IIC_Open(EN_CT_IIC_BUS_1, DeviceAddr, &u32Handle)!= DRV_OK)
{
printf("\nCT_IIC_Open 0 Error");
return MxL_ERR_SET_REG;
}
}
else
{
if( CT_IIC_Open(EN_CT_IIC_BUS_1, DeviceAddr, &u32Handle)!= DRV_OK)
{
printf("\nCT_IIC_Open 1 Error");
return MxL_ERR_SET_REG;
}
}
#ifdef NIM_SW_IIC
if(CT_SW_IIC_WriteData(u32Handle, pArray, count) != DRV_OK )
#else
//when write register,mast write addr with data as a group
u8 u8MaxNum = (IIC_FIFO_SIZE >>1)<<1;//must be a multiple of 2
if(count >u8MaxNum ) //
{
u32 u32cout = count;
u8 *pbuffer = pArray;
while(u32cout > u8MaxNum)
{
if(CT_IIC_WriteData(u32Handle, pbuffer, u8MaxNum) != DRV_OK)
{
printf("\nCT_IIC_WriteData Error");
CT_IIC_Close(u32Handle);
return(MxL_ERR_SET_REG);
}
u32cout =u32cout -u8MaxNum;
pbuffer = pbuffer + u8MaxNum;
CT_OS_MS_Delay(1);
}
if (u32cout != 0)
if(CT_IIC_WriteData(u32Handle, pbuffer, u32cout) != DRV_OK)
{
printf("\nCT_IIC_WriteData Error");
CT_IIC_Close(u32Handle);
return(MxL_ERR_SET_REG);
}
}
else if( CT_IIC_WriteData(u32Handle, pArray, count)!= DRV_OK )
#endif
{
printf("\nCT_IIC_WriteData Error");
CT_IIC_Close(u32Handle);
return(MxL_ERR_SET_REG);
}
CT_IIC_Close(u32Handle);
return (MxL_OK);
}
/******************************************************************************
**
** Name: MxL_I2C_Read
**
** Description: I2C read operations
**
** Parameters:
** DeviceAddr - MxL5007 Device address
** Addr - register address for read
** *Data - data return
**
** Returns: 0 if success
**
** Revision History:
**
** SCR Date Author Description
** -------------------------------------------------------------------------
** N/A 12-16-2007 khuang initial release.
**
******************************************************************************/
UINT32 MxL_I2C_Read(UINT8 DeviceAddr, UINT8 Addr, UINT8* mData)
{
u32 u32Handle;
u8 u8regbuff[2] = {0xFB,Addr};
if (CT_NIM_GetBus() == EN_CT_NIM_BUS_0)
{
if( CT_IIC_Open(EN_CT_IIC_BUS_0, DeviceAddr, &u32Handle)!= DRV_OK)
{
printf("\nCT_IIC_Open 0 Error");
return MxL_ERR_SET_REG;
}
}
else
{
if( CT_IIC_Open(EN_CT_IIC_BUS_1, DeviceAddr, &u32Handle)!= DRV_OK)
{
printf("\nCT_IIC_Open 1 Error");
return MxL_ERR_SET_REG;
}
}
#ifdef NIM_SW_IIC
if(CT_SW_IIC_WriteData(u32Handle, u8regbuff, 2) != DRV_OK )
#else
if(CT_IIC_WriteData(u32Handle, u8regbuff, 2) != DRV_OK )
#endif
{
printf("\nR CT_IIC_ReadData Error");
CT_IIC_Close(u32Handle);
return (MxL_ERR_GET_REG);
}
#ifdef NIM_SW_IIC
if(CT_SW_IIC_ReadData(u32Handle, mData, 1) != DRV_OK )
#else
if(CT_IIC_ReadData(u32Handle, mData, 1) != DRV_OK )
#endif
{
printf("\nR CT_IIC_ReadData Error");
CT_IIC_Close(u32Handle);
return (MxL_ERR_GET_REG);
}
CT_IIC_Close(u32Handle);
return (MxL_OK); //success
}
/******************************************************************************
**
** Name: MxL_Delay
**
** Description: Delay function in milli-second
**
** Parameters:
** mSec - milli-second to delay
**
** Returns: 0
**
** Revision History:
**
** SCR Date Author Description
** -------------------------------------------------------------------------
** N/A 12-16-2007 khuang initial release.
**
******************************************************************************/
void MxL_Delay(UINT32 mSec)
{
CT_OS_MS_Delay(mSec);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -