打印

IIC通讯

[复制链接]
1430|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tianli1980|  楼主 | 2014-5-7 10:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
采用DISCOVERYF0调试IIC接口,对应24C02芯片。

在发送地址时,加了一个超时循环判断

//第一步发送START信号和器件固定地址
I2C_TransferHandling(I2C1,AT24C02_AD,1,I2C_Reload_Mode, I2C_Generate_Start_Write); //设置24C02地址,启动start信号传输
IIC_Timeout=AT24C02_DELAY_TIME;
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_TXIS) == RESET)                  //等待TXIS标志位
  {
    if((IIC_Timeout--) == 0) return IIC_TIMEOUT_UserCallback();           //超出时间门限,仍未发送完毕,则进入回调函数
  }

在发送地址后,I2C_GetFlagStatus(I2C1, I2C_FLAG_TXIS)返回值始终为RESET,进入内部看I2Cx->ISR等于0x00008001,

其中BUSY和TXE位为1,而TXIS始终为0,

求助!
沙发
金融小数| | 2014-6-11 12:26 | 只看该作者
在I2C_GetFlagStatus(I2C1, I2C_FLAG_TXIS)之前,加一段延时代码

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

482

主题

2214

帖子

11

粉丝