示例#1
0
/*******************************************************************************
**函    数: IIC_ReadDataN
**功    能: IIC在指定地址连续读N个数据
**参    数: Addr    --地址   
**           pData   --接收数据指针
**           len     --接收数据长度
**返    回: void
*******************************************************************************/
void IIC_ReadDataN(u8 Addr,u8 *pData,u8 len)         
{      
    u8 i,*pTemp= pData;
    IIC_Start();
    IIC_SendByte(DEVICE_ADDR);
    IIC_WaitAck();  
    IIC_SendByte(Addr);
    IIC_WaitAck();  
    IIC_Start();
    IIC_SendByte(DEVICE_ADDR+1);
    IIC_WaitAck();
    for(i=0;i<len-1;i++)  
    {    
        *(pTemp++) = IIC_GetByte();
        IIC_ACK();  
    }
    *(pTemp++) = IIC_GetByte();
    IIC_NACK();
    IIC_Stop();
}
/*data types needs to be change*/
alt_8 IIC_ReadNRegs(alt_u8 waddr, alt_u8 raddr, alt_u8 reg, alt_u16 *data, alt_u8 N)
{
	IIC_Start();
	IIC_PutByte(waddr);
	IIC_NAKRTN;
	IIC_PutByte(reg);
	IIC_NAKRTN;
	IIC_PutByte(0xff);
	IIC_NAKRTN;
	IIC_Start();
	IIC_PutByte(raddr);
	IIC_NAKRTN;
	*(alt_u8 *)data = IIC_GetByte();
	alt_u8 i;
	for(i = 0; i < N; i++){
		IIC_Acknowledge(1);
		*(i + (alt_u8 *)data) = IIC_GetByte();
	}
	IIC_Acknowledge(0);
	IIC_Stop();
	return 1;
}
示例#3
0
/*******************************************************************************
**函    数: IIC_ReadByte
**功    能: IIC读指定地址字节数据
**参    数: Addr    --地址    
**返    回: 接收的数据
*******************************************************************************/
u8 IIC_ReadByte(u8 Addr)         
{      
    u8 data;
    IIC_Start();
    IIC_SendByte(DEVICE_ADDR);
    IIC_WaitAck();
    IIC_SendByte(Addr); 
    IIC_WaitAck();  
    IIC_Start();
    IIC_SendByte(DEVICE_ADDR+1);    //ReadDeviceAddr
    IIC_WaitAck();
    data=IIC_GetByte();
    IIC_NACK();
    IIC_Stop();
    return data;  
}
alt_8 IIC_ReadReg(alt_u8 waddr, alt_u8 raddr, alt_u8 reg, alt_u8 *data)
{
	IIC_Start();
	IIC_PutByte(waddr);
	IIC_NAKRTN;
	IIC_PutByte(reg);
	IIC_NAKRTN;
	IIC_PutByte(0xff);
	IIC_NAKRTN;
	IIC_Start();
	IIC_PutByte(raddr);
	IIC_NAKRTN;
	*data = IIC_GetByte();
	IIC_Acknowledge(0);
	IIC_Stop();
	return 1;
}