本文整理汇总了C++中IIC_Start函数的典型用法代码示例。如果您正苦于以下问题:C++ IIC_Start函数的具体用法?C++ IIC_Start怎么用?C++ IIC_Start使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了IIC_Start函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: IIC_Read_Bytes
uint8_t IIC_Read_Bytes(uint8_t dev, uint8_t reg, uint8_t length, uint8_t *data)
{
uint8_t count = 0;
uint8_t temp;
IIC_Start();
IIC_Send_Byte(dev);
IIC_Wait_Ack();
IIC_Send_Byte(reg);
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte(dev + 1);
IIC_Wait_Ack();
for(count = 0; count < length; count++)
{
if(count != (length - 1) )
temp = IIC_Receive_Byte(1);
else
temp = IIC_Receive_Byte(0);
data[count] = temp;
}
IIC_Stop();
return count;
}
示例2: IIC1_MultRead
u8 IIC1_MultRead(u8 slaveAddr, u8* pBuffer, u8 readAddr, u16 NumByteToRead)
{
IIC_Start(); //起始信号
IIC_Send_Byte(slaveAddr); //发送写器件指令
if(FALSE==IIC_Wait_Ack())
{
IIC_Stop(); //发送停止信号
return 1;
} IIC_Send_Byte(readAddr); //发送寄存器地址
IIC_Wait_Ack();
IIC_Start(); //重新启动
IIC_Send_Byte(slaveAddr+1); //发送读器件指令
IIC_Wait_Ack();
/* While there is data to be read */
while(NumByteToRead)
{
if(NumByteToRead == 1)
{
*pBuffer=IIC_Read_Byte(0); //读出寄存器数据不继续再读,发送NACK
}
else
{
*pBuffer=IIC_Read_Byte(1); //读出寄存器数据继续读,发送ACK
pBuffer++; /* Point to the next location where the byte read will be saved */
}
/* Decrement the read bytes counter */
NumByteToRead--;
}
IIC_Stop(); //停止信号
return 0;
}
示例3: IIC_Single_Read
/******************************************************************************
函数(模块)名称:unsigned char IIC_Single_Read(unsigned int R_addr,unsigned char *R_word)
功能: 单次读/随机读
输入参数: 要读的数据地址,输出数据保存的字节指针
输出参数: 1 读成功 0 读失败
其它说明:
*******************************************************************************/
unsigned char IIC_Single_Read(unsigned char R_addr,unsigned char *R_word)
{
unsigned char try_time=define_try_time; //用来定义出现通讯错误时尝试的错误
while(1)
{
if(!try_time--) //用来防止因硬件错误或其它原因程序进入死循环
{
return 0;
}
IIC_Start(); //步骤1:产生一个启动信号
IIC_Send_Byte(Slave_Addres&(~BIT0)); //步骤2:发送控制命令
if(ReadAck())
continue; //没有应答,忽略下面语句,重新开始
//应答,则开始发送地址
IIC_Send_Byte(R_addr);
if(ReadAck())
continue; //没有应答,忽略下面语句,重新开始
//应答,则开始发送启动信号
IIC_Start(); //启动信号
IIC_Send_Byte(Slave_Addres|BIT0); //发送控制命令
if(ReadAck())
continue; //没有应答,忽略下面语句,重新开始
break; //应答,则跳出循环,开始接收数据
}
*R_word=IIC_Receive_Byte(); //从总线上接收一个字节数据
WriteAck(1); //发送 非应答信号
IIC_Stop(); //发送停止信号
return 1;
}
示例4: i2cRead
/**************************实现函数********************************************
*函数原型: bool i2cWrite(uint8_t addr, uint8_t reg, uint8_t data)
*功 能:
*******************************************************************************/
int i2cRead(uint8_t addr, uint8_t reg, uint8_t len, uint8_t *buf)
{
if (!IIC_Start())
return 1;
IIC_Send_Byte(addr << 1);
if (!IIC_Wait_Ack()) {
IIC_Stop();
return 1;
}
IIC_Send_Byte(reg);
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte((addr << 1)+1);
IIC_Wait_Ack();
while (len) {
if (len == 1)
*buf = IIC_Read_Byte(0);
else
*buf = IIC_Read_Byte(1);
buf++;
len--;
}
IIC_Stop();
return 0;
}
示例5: MPU_Read_Byte
//IIC读一个字节
//reg:寄存器地址
//返回值:读到的数据
uint8_t MPU_Read_Byte(uint8_t reg)
{
uint8_t res;
IIC_Start();
IIC_Send_Byte((MPU_ADDR<<1)|0);//发送器件地址+写命令
IIC_Wait_Ack(); //等待应答
IIC_Send_Byte(reg); //写寄存器地址
IIC_Wait_Ack(); //等待应答
IIC_Start();
IIC_Send_Byte((MPU_ADDR<<1)|1);//发送器件地址+读命令
IIC_Wait_Ack(); //等待应答
res=IIC_Read_Byte(0);//读取数据,发送nACK
IIC_Stop(); //产生一个停止条件
return res;
}
示例6: Single_Read_IIC
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;
}
示例7: I2C_ReadByte
/********单字节读取*****************************************/
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;
}
示例8: IIC1_ReadByte
u8 IIC1_ReadByte(u8 slaveAddr, u8 readAddr)
{
u8 REG_data;
IIC_Start(); //起始信号
IIC_Send_Byte(slaveAddr); //发送设备地址+写信号
IIC_Wait_Ack();
IIC_Send_Byte(readAddr); //发送存储单元地址,从0开始
IIC_Wait_Ack(); //必须要有
IIC_Start(); //起始信号
IIC_Send_Byte(slaveAddr+1); //发送设备地址+读信号
IIC_Wait_Ack();
REG_data=IIC_Read_Byte(0); //读出寄存器数据不继续再读,发送NACK
return REG_data;
}
示例9: MPU6050_ReadByte
/***********************************
函数名:u8 MPU6050_ReadByte(u8 reg)
说明:MPU6050单次读字节
入口:u8 reg 寄存器地址
出口:u8 读取到的字节
备注:无
************************************/
u8 MPU6050_ReadByte(u8 reg)
{
u8 tmp;
IIC_Start();
IIC_Send_Byte(MPU6050_DEVICE); // 发送器件地址+写信号
IIC_Send_Byte(reg); // 需要读取的寄存器地址
IIC_Start();
IIC_Send_Byte(MPU6050_DEVICE + 1); // 发送器件地址+读信号
tmp = IIC_Read_Byte(0); // 读取数据不产生应答
IIC_Stop();
return tmp;
}
示例10: ADXL345_RD_Reg
//读ADXL345寄存器
//addr:寄存器地址
//返回值:读到的值
u8 ADXL345_RD_Reg(u8 addr)
{
u8 temp=0;
IIC_Start();
IIC_Send_Byte(ADXL_WRITE); //发送写器件指令
temp=IIC_Wait_Ack();
IIC_Send_Byte(addr); //发送寄存器地址
temp=IIC_Wait_Ack();
IIC_Start(); //重新启动
IIC_Send_Byte(ADXL_READ); //发送读器件指令
temp=IIC_Wait_Ack();
temp=IIC_Read_Byte(0); //读取一个字节,不继续再读,发送NAK
IIC_Stop(); //产生一个停止条件
return temp; //返回读到的值
}
示例11: WM8960_WriteData
void WM8960_WriteData(Uint8 channel, Uint8 Register, Uint16 Data)
{
Uint8 HightByte,LowByte;
Uint8 I2C_Status;
HightByte = Data >> 8;
HightByte = HightByte & 0x01;
HightByte |= (Register << 1);
LowByte = Data; //bit 7 - 0
IIC_Start(channel);
IIC_Delay();
if(!(IIC_WriteByte(channel,WM8960_Write_ADD)))
{
I2C_Status = IIC_WriteByte(channel,HightByte);
I2C_Status = IIC_WriteByte(channel,LowByte);
IIC_Delay();
IIC_Stop(channel);
#if DebugVerbosity > 1
if(I2C_Status == 0)
{
UART_TxStr("Channel = ");
UART_TxUint8(channel);
UART_TxStr("Register = ");
UART_TxUint8(Register);
UART_TxStr(" Value = ");
UART_TxUint8(Data>>8);
UART_TxUint8(LowByte);
UART_TxStr("\n\r");
}
示例12: MPU_Write_Byte
//IIC写一个字节
//reg:寄存器地址
//data:数据
//返回值:0,正常
// 其他,错误代码
u8 MPU_Write_Byte(u8 reg,u8 data)
{
IIC_Start();
IIC_Send_Byte((MPU_ADDR<<1)|0);//发送器件地址+写命令
if(IIC_Wait_Ack()) //等待应答
{
printf("in MPU_Write_Byte: failed at 1,reg=%X,data=%X\n",reg,data);
IIC_Stop();
return 1;
}
IIC_Send_Byte(reg); //写寄存器地址
if(IIC_Wait_Ack()){
printf("in MPU_Write_Byte: failed at 2,reg=%X,data=%X\n",reg,data);
IIC_Stop();
return 1;
} //等待应答
IIC_Send_Byte(data);//发送数据
if(IIC_Wait_Ack()) //等待ACK
{
printf("in MPU_Write_Byte: failed at 3,reg=%X,data=%X\n",reg,data);
IIC_Stop();
return 1;
}
IIC_Stop();
return 0;
}
示例13: SetUpADS1110
void SetUpADS1110(unsigned char x)
{
IIC_Start();
IIC_Send_Byte(ADS1110_ADDR & 0xFE);
IIC_Send_Byte(x);
IIC_Stop();
}
示例14: IIC_Page_Write
/******************************************************************************
函数(模块)名称:unsigned char IIC_Page_Write(unsigned char W_addr,
unsigned char *WriteData_Addr,
unsigned char WriteData_Cnt)
功能: IIC页写
输入参数: 要写的地址,要写的数据指针,要写的字节数
输出参数: 1 写成功 0 写失败
其它说明: 要写的字节数,不能大于当前写字节地址到当前页最大地址之差。
*******************************************************************************/
unsigned char IIC_Page_Write(unsigned char W_addr,unsigned char *WriteData_Addr,
unsigned char WriteData_Cnt)
{
unsigned char try_time=define_try_time; //用来定义出现通讯错误时尝试的错误
while(1)
{
if(!try_time--) //用来防止因硬件错误或其它原因程序进入死循环
{
return 0;
}
IIC_Start(); //步骤1:主机产生一个启动信号
IIC_Send_Byte(Slave_Addres&(~BIT0)); //步骤2:主机发送从机地址及读写位
if(ReadAck())
continue; //步骤3:主机接收从机应答;没有应答,忽略下面语句,重新开始
//应答,则开始发送地址
IIC_Send_Byte(W_addr); //步骤4:主机发送读写地址
if(ReadAck())
continue; //步骤5:主机接收从机应答 没有应答,忽略下面语句,重新开始
while(WriteData_Cnt--)
{
IIC_Send_Byte(*(WriteData_Addr++));
if(!ReadAck())
continue; //收到应答(0),则继续发送数据
return 0; //没收到应答,错误返回
}
break;
}
IIC_Stop(); //步骤8:主机发送停止信号,启动写周期
Delay(5000); //需要延时一段时间,等待写周期完成
return 1;
}
示例15: IIC_Single_Write
/******************************************************************************
函数(模块)名称:unsigned char IIC_Single_Write(unsigned char W_addr,unsigned char Date_byte)
功能: IIC总线单字节写
输入参数: 要写的地址,要写的数据
输出参数: 1 写成功 0 写失败
其它说明:
*******************************************************************************/
unsigned char IIC_Single_Write(unsigned char W_addr,unsigned char Date_byte)
{
unsigned char try_time=define_try_time; //用来定义出现通讯错误时尝试的错误
while(1)
{
if(!try_time--) //用来防止因硬件错误或其它原因程序进入死循环
{
return 0;
}
IIC_Start(); //步骤1:主机产生一个启动信号
IIC_Send_Byte(Slave_Addres&(~BIT0)); //步骤2:主机发送从机地址及读写位
if(ReadAck())
continue; //步骤3:主机接收从机应答;没有应答,忽略下面语句,重新开始
//应答,则开始发送地址
IIC_Send_Byte(W_addr); //步骤4:主机发送读写地址
if(ReadAck())
continue; //步骤5:主机接收从机应答 没有应答,忽略下面语句,重新开始
IIC_Send_Byte(Date_byte); //步骤6:主机发送数据 //应答,则开始发送要写入的数据
if(ReadAck()) //步骤7:机接收从机应答
continue; //没有应答,忽略下面语句,重新开始
break; //应答,则跳出循环
}
IIC_Stop(); //步骤8:主机发送停止信号,启动写周期
Delay(5000); //需要延时一段时间,等待写周期完成
return 1;
}