打印

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

[复制链接]
663|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

粉丝