硬汉嵌入式论坛

 找回密码
 立即注册
查看: 924|回复: 4
收起左侧

[技术讨论] 下面是传说中F1xx和F4xx的I2C硬件问题吗?

[复制链接]

44

主题

242

回帖

374

积分

高级会员

积分
374
发表于 2025-3-11 18:21:48 | 显示全部楼层 |阅读模式
同事发现用软件ok,用硬件有时fail,跟踪有时候芯片没回ACK。最后看HAL库代码是,如果I2C中间出错,软件lock导致一直busy.
另外的两篇文章说的是说单片机I2C寄存器里面的状态已经设置了busy:
STM32F 单片机硬件I2C Busy标志导致的I2C卡死的处理办法_stm32标准库i2c busy-CSDN博客
STM32F103 I2C硬件缺陷详述及解决方案_stm32 i2c硬件缺陷-CSDN博客

[C] 纯文本查看 复制代码
HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)
{
  /* Init tickstart for timeout management*/
  uint32_t tickstart = HAL_GetTick();

    /* Process Locked */
    __HAL_LOCK(hi2c);

    /* Send Slave Address */
    if (I2C_MasterRequestWrite(hi2c, DevAddress, Timeout, tickstart) != HAL_OK)
    {
      [color=#ff8c00]return HAL_ERROR; 这个地方直接退出去了,导致一直是lock的标志[/color]
    }

    /* Process Unlocked */
    __HAL_UNLOCK(hi2c);
    return HAL_OK;

  }
}


回复

使用道具 举报

6

主题

683

回帖

701

积分

金牌会员

积分
701
QQ
发表于 2025-3-11 21:27:56 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

1

主题

27

回帖

30

积分

新手上路

积分
30
发表于 2025-3-11 23:54:12 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2025-3-12 09:03:12 | 显示全部楼层
如果是硬件方面的bug,可以看勘误手册,有些是无法解决的。
回复

使用道具 举报

2

主题

6

回帖

12

积分

新手上路

积分
12
发表于 2025-3-13 11:45:35 | 显示全部楼层
I2C_MasterRequestWrite(),这个函数结束时有ULOCK和STATE处理的,所以不会出现锁死的情况
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 06:35 , Processed in 0.038025 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表