打印

GD32F103CBT6 IIC写数据后IIC不能STOP的问题咨询

[复制链接]
1466|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lyyun|  楼主 | 2022-3-6 16:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用GD的硬件IIC通讯,代码用STM32的,能读但不能写,表现为写8个字节(一页)数据后时钟没办法恢复到高电平状态,咨询一下大家有没有比较通用的方法:


定位到应该是以上代码中不能使GD的IIC正常STOP,STM32和HK32都正常:
void I2C_EE_WaitEepromStandbyState2(void)
{
    I2C_GenerateSTOP(EEPROM_I2Cx, ENABLE);
    return;
    vu16 SR1_Tmp = 0;

    do {
        /* 发送起始信号 */
        I2C_GenerateSTART(EEPROM_I2Cx, ENABLE);

        /* 读 I2C1 SR1 寄存器 */
        SR1_Tmp = I2C_ReadRegister(EEPROM_I2Cx, I2C_Register_SR1);

        /* 发送 EEPROM 地址 + 写方向 */
        I2C_Send7bitAddress(EEPROM_I2Cx, EEPROM_ADDRESS,
                I2C_Direction_Transmitter);
    }
    // SR1 位 1 ADDR:1 表示地址发送成功,0 表示地址发送没有结束
    // 等待地址发送成功
    while (!(I2C_ReadRegister(EEPROM_I2Cx, I2C_Register_SR1) & 0x0002));

    /* 清除 AF 位 */
    I2C_ClearFlag(EEPROM_I2Cx, I2C_FLAG_AF);
    /* 发送停止信号 */
    I2C_GenerateSTOP(EEPROM_I2Cx, ENABLE);
}

使用特权

评论回复

相关帖子

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

本版积分规则

4

主题

5

帖子

0

粉丝