本文整理汇总了C++中IIC_Stop函数的典型用法代码示例。如果您正苦于以下问题:C++ IIC_Stop函数的具体用法?C++ IIC_Stop怎么用?C++ IIC_Stop使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了IIC_Stop函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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;
}
示例2: 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;
}
示例3: IIC1_MultWrite
u8 IIC1_MultWrite(u8 slaveAddr, u8* pBuffer, u8 wrtieAddr, u16 NumByteToWrite)
{
IIC_Start(); //起始信号
IIC_Send_Byte(slaveAddr); //发送设备地址+写信号
if(FALSE==IIC_Wait_Ack())
{
IIC_Stop(); //发送停止信号
return 1;
}
IIC_Send_Byte(wrtieAddr); //内部寄存器地址
IIC_Wait_Ack();
while(NumByteToWrite)
{
IIC_Send_Byte(*pBuffer); //内部寄存器数据
if(FALSE==IIC_Wait_Ack())
{
IIC_Stop(); //发送停止信号
return 1;
}
pBuffer++;
NumByteToWrite--;
}
IIC_Stop(); //发送停止信号
return 0;
}
示例4: main
void main(void) {
int i=0;
EnableInterrupts; /* enable interrupts */
/* include your code here */
InitClock();
IIC1_Init();
configIIC();
/*
IIC_Start();
IIC_write_byte(0x3D);
IIC_write_byte(0x03);
IIC_Stop(); */
//iic1=IIC_read_byte();
for(;;) {
IIC_Start();
IIC_write_byte(0x3C);
IIC_write_byte(0x03);
IIC_Stop(FALSE);
IIC_write_byte(0x3D);
while(i<6){
iic1=IIC_read_byte();
i++;
}
i=0;
IIC_Stop(FALSE);
//__RESET_WATCHDOG(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}
示例5: 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;
}
示例6: 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;
}
示例7: IIC_WriteData
//写数据,成功返回0,失败返回0xff
int IIC_WriteData(u8 dev_addr,u8 reg_addr,u8 data)
{
IIC_Start();
IIC_WriteBit(dev_addr);
if(IIC_WaitAck() == 0xff)
{
printf("error 2B\r\n");
return 0xff;
}
IIC_WriteBit(reg_addr);
if(IIC_WaitAck() == 0xff)
{
printf("error 2C\r\n");
return 0xff;
}
IIC_WriteBit(data);
if(IIC_WaitAck() == 0xff)
{
printf("error 2D\r\n");
return 0xff;
}
IIC_Stop();
return 0;
}
示例8: IIC_Wait_Ack
uint8_t IIC_Wait_Ack(void)
{
uint8_t ucErrTime = 0;
SDA_IN();
IIC_SDA(1);
delay_us(1);
IIC_SCL(1);
delay_us(1);
while(READ_SDA)
{
ucErrTime++;
if(ucErrTime>250)
{
IIC_Stop();
return 1;
}
}
IIC_SCL(0);
return 0;
}
示例9: 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");
}
示例10: IIC_Wait_Ack
//等待应答信号到来
//返回值:1,接收应答失败
// 0,接收应答成功
u8 IIC_Wait_Ack(void)
{
u8 ucErrTime=0;
//SDA_IN(); //SDA设置为输入
GPIO_InitTypeDef GPIO_InitStructure;
// RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOB, &GPIO_InitStructure);
IIC_SDA_1;delay_us(1);
IIC_SCL_1;delay_us(1);
while(READ_SDA)
{
ucErrTime++;
if(ucErrTime>250)
{
IIC_Stop();
return 1;
}
}
IIC_SCL_0;//时钟输出0
return 0;
}
示例11: SetUpADS1110
void SetUpADS1110(unsigned char x)
{
IIC_Start();
IIC_Send_Byte(ADS1110_ADDR & 0xFE);
IIC_Send_Byte(x);
IIC_Stop();
}
示例12: 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;
}
示例13: 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;
}
示例14: 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;
}
示例15: I2C_WriteByte
/****** 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(); //发送停止信号
}