本人要用一stm8芯片与cap1203触摸传感器通过I2C通信,I2C已经配置完成,但是debug的时候,一直卡在传送器件地址之后的一句上,那一句是用来清除ADDR地址位。
void Write_CAP1203_1(unsigned char x)
{
unsigned char temp;
while(I2C_SR3&0x02);//确认总线空闲
I2C_CR2 |= 0x01;//产生起始位
while(!(I2C_SR1&0x01));//确认起始位发送完成(通过读取SR1寄存器的SB位是否为1)
I2C_DR = 0xc0;//发送器件地址到DR寄存器,同时SB位会被清除
while(!(I2C_SR1&0x02));//地址已被发送←单步执**在这里
temp = I2C_SR1;
temp = I2C_SR3;//读取SR1和SR3寄存器来清除发送地址后产生ADDR标志位
//I2C_DR = 0x00;//清空数据寄存器DR
//while(!(I2C_SR1&0x84));//检测SR1中字节发送结束位BTF位和 发送寄存器的状态位TxE
I2C_DR = x;//发送数据
while(!(I2C_SR1&0x84));
I2C_CR2 |= 0x02;//产生停止位
}
我直接通过配置I2C读写触摸传感器的寄存器地址,不知道这样做对不对,好像是发送器件地址后,一直没有收到应答的样子,不知道该怎么解决?希望有做过这方面的大神帮帮忙,谢谢了 |