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

📄 mxl_user_define.c

📁 DVB软件,基于CT216软件的开发源程序.
💻 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 + -