Ejemplo n.º 1
0
/******	busrt one byte via I2C	*****/
void I2C_WriteByte(uint8_t SlaveAddress,uint8_t REG_Address,uint8_t REG_data)
{
    IIC_Start();                  //起始信号
    IIC_SendByte(SlaveAddress);   //发送设备地址+写信号
    IIC_SendByte(REG_Address);    //内部寄存器地址, //请参考中文pdf22页 
    IIC_SendByte(REG_data);       //内部寄存器数据, //请参考中文pdf22页 
    IIC_Stop();                   //发送停止信号
}
Ejemplo n.º 2
0
void Single_Write_IIC(u8 SlaveAddress,u8 REG_Address,u8 REG_data)
{
    IIC_Start();                 
    IIC_SendByte(SlaveAddress);  
    IIC_SendByte(REG_Address);    
    IIC_SendByte(REG_data);       
    IIC_Stop();                   
}
Ejemplo n.º 3
0
void SetPWM(uint8_t num, uint16_t on, uint16_t off)
{
	IIC_Start();
	IIC_SendByte(LED0_ON_L+num*4);
	IIC_SendByte(on);
	IIC_SendByte(on>>8);
	IIC_SendByte(off);
	IIC_SendByte(off>>8);
	IIC_Stop();
}
Ejemplo n.º 4
0
/*******************************************************************************
**函    数: IIC_WriteByte
**功    能: IIC往指定地址写一字节数据
**参    数: Addr    --地址
**           data    --发送的数据
**返    回: void
*******************************************************************************/
void IIC_WriteByte(u8 Addr,u8 data)   
{
    IIC_Start();
    IIC_SendByte(DEVICE_ADDR);  //WriteDeviceAddr
    IIC_WaitAck();
    IIC_SendByte(Addr);
    IIC_WaitAck();
    IIC_SendByte(data);   
    IIC_WaitAck();  
    IIC_Stop(); 
}
Ejemplo n.º 5
0
/******	busrt write bytes via I2C	*****/
void I2C_WriteBytes(uint8_t SlaveAddress,uint8_t REG_Address,uint8_t *REG_data, uint8_t num)
{
	int i;
    IIC_Start();                  //起始信号
    IIC_SendByte(SlaveAddress);   //发送设备地址+写信号
    IIC_SendByte(REG_Address);    //内部寄存器地址, //请参考中文pdf22页 
          
	for(i = 0; i < num; i++) {
		IIC_SendByte(REG_data[i]);	//内部寄存器数据, //请参考中文pdf22页 
	}
    IIC_Stop();                   //发送停止信号
}
Ejemplo n.º 6
0
/********单字节读取*****************************************/
uint8_t I2C_ReadByte(uint8_t SlaveAddress, uint8_t REG_Address)
{  
	char REG_data;
    IIC_Start();                          //起始信号
    IIC_SendByte(SlaveAddress);           //发送设备地址+写信号
    IIC_SendByte(REG_Address);            //发送存储单元地址,//从0开始	
    IIC_Start();                          //起始信号
    IIC_SendByte(SlaveAddress+1);         //发送设备地址+读信号
    REG_data = IIC_RecvByte();              //读出寄存器数据
	IIC_SendNACK();   
	IIC_Stop();                           //停止信号
    return REG_data; 
}
Ejemplo n.º 7
0
u8 Single_Read_IIC(u8 SlaveAddress, u8 REG_Address)
{  
	u8 REG_data;
    IIC_Start();                         
    IIC_SendByte(SlaveAddress);          
    IIC_SendByte(REG_Address);            
    IIC_Start();                         
    IIC_SendByte(SlaveAddress+1);        
    REG_data = IIC_RecvByte();              
	IIC_SendACK();   
	IIC_Stop();                         
    return REG_data; 
}
Ejemplo n.º 8
0
/*******************************************************************************
**函    数: IIC_WriteDataN
**功    能: IIC往指定地址连续写N个数据
**参    数: Addr    --地址   
**           pData   --发送数据指针
**           len     --发送数据长度
**返    回: void
*******************************************************************************/
void IIC_WriteDataN(u8 Addr , u8 *pData , u8 len)
{
    u8 i,*pTemp= pData;
    IIC_Start();
    IIC_SendByte(DEVICE_ADDR);
    IIC_WaitAck();
    IIC_SendByte(Addr);
    IIC_WaitAck();
    for(i=0;i<len;i++)  
    {
        IIC_SendByte(*pTemp);
        IIC_WaitAck();
        pTemp++ ;
    }
    IIC_Stop(); 
}
Ejemplo n.º 9
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;  
}
Ejemplo n.º 10
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();
}
Ejemplo n.º 11
0
/*
* Function: burst read bytes
*/
void I2C_ReadBytes(uint8_t SlaveAddress, uint8_t REG_Address, uint8_t *buf, uint8_t num)
{  
	int i = num;
    IIC_Start();                          //起始信号
    IIC_SendByte(SlaveAddress);           //发送设备地址+写信号
    IIC_SendByte(REG_Address);            //发送存储单元地址,//从0开始	
    IIC_Start();                          //起始信号
    IIC_SendByte(SlaveAddress+1);         //发送设备地址+读信号
	for(i = 0; i < num; i++) {
		buf[i] = IIC_RecvByte();
		// if it is the last byte to be read, then it should end up with an IIC_SendNACK()
		if (i == num - 1) { 
			IIC_SendNACK();
			break;
		// else it needs an acknowledgement
		} else 
			IIC_SendACK();
	}
	IIC_Stop(); 

    return; 
}