急!求助关于stm8的I2C通信问题

[复制链接]
1060|6
 楼主| 晴天安仔 发表于 2014-12-10 15:42 | 显示全部楼层 |阅读模式
本人要用一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读写触摸传感器的寄存器地址,不知道这样做对不对,好像是发送器件地址后,一直没有收到应答的样子,不知道该怎么解决?希望有做过这方面的大神帮帮忙,谢谢了       
ningling_21 发表于 2014-12-10 16:22 | 显示全部楼层
查查I2C的时序对不对
wangch_sh 发表于 2014-12-10 16:55 | 显示全部楼层
参考STM8的例程。
苏山人家 发表于 2014-12-10 19:29 来自手机 | 显示全部楼层
参考官方例程,或者自己模拟协议,stm32造成的阴影,stm8都是模拟iic(本人)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

9

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部