lpc1768的i2c控制器写24c02失败,各位高手帮忙看看。
[复制链接]
void i2c0_wr_byte(uint8_t da,uint8_t add) {
LPC_I2C0->I2CONCLR=0x2c; LPC_I2C0->I2CONSET|=0x60; //使能i2c控制器并发送起始位 while(!(LPC_I2C0->I2STAT==0x08)); //等待发送完起始位 LPC_I2C0->I2DAT=0xa0; //写入24c02从机地址+w位 LPC_I2C0->I2CONCLR|=0x28; //清零起始位和中断标志位 while(!(LPC_I2C0->I2STAT==0x18)); //等待发送完从机地址+w位和接收ack位 LPC_I2C0->I2DAT=add; //写入数据地址到I2DAT LPC_I2C0->I2CONCLR|=0x08; //清零中断标志位 while(!(LPC_I2C0->I2STAT==0x28)); //等待发送完数据地址和接收ack位 LPC_I2C0->I2DAT=da; //写入数据到I2DAT LPC_I2C0->I2CONCLR|=0x08; //清零标志位 while(!(LPC_I2C0->I2STAT==0x28)); //等待发送完数据和接收ack位 LPC_I2C0->I2CONSET|=0x10; //发送sto位 }
写一个数据到24c02的函数,i2c速率设定在100k,调试发现程序停在 (while(!(LPC_I2C0->I2STAT==0x18)); //等待发送完从机地址+w位和接收ack位)这里,状态寄存器i2cstat为0xf8,请高手帮忙看看,本人新手,请勿见笑。
|