STM32
直播中

徐磊

7年用户 939经验值
私信 关注
[问答]

使用STM8L051硬件I2C时,用示波器探头接触I2C任意端口后,两个端口始终保持高电平状态为什么?

  如题,使用STM8L051硬件I2C时,用示波器探头接触I2C任意端口后,两个端口始终保持高电平状态。其他LED控制端口依然正常。工作电压稍微高一点,3.8V。程序网上找到的,读SHT20没问题。求解决方法!!

源码如下:

  • void SHT20_init(void)
  • {
  •     CLK_PeripheralClockConfig(CLK_Peripheral_I2C1, ENABLE);

  •     I2C_DeInit(I2C1);

  •     I2C_Init(I2C1, 10000, 0x38, I2C_Mode_SMBusHost,
  •              I2C_DutyCycle_2, I2C_Ack_Enable, I2C_AcknowledgedAddress_7bit);

  •     /* I2C_ITConfig(I2C1, I2C_IT_ERR, ENABLE); */

  •     I2C_Cmd(I2C1, ENABLE);
  • }


回帖(1)

孙成红

2024-5-14 17:04:25
在使用STM8L051硬件I2C时,当用示波器探头接触I2C任意端口后,两个端口始终保持高电平状态,这可能是由以下几个原因导致的:

1. 示波器探头的输入阻抗较低:示波器探头的输入阻抗通常较低,这可能导致I2C总线上的电压降低,从而使得I2C端口保持高电平状态。为了解决这个问题,你可以尝试使用具有较高输入阻抗的示波器探头。

2. 示波器探头的接地问题:如果示波器探头的接地不良,可能会导致I2C总线上的电压不稳定,从而影响I2C端口的状态。请确保示波器探头的接地良好。

3. I2C总线上的拉高电阻:I2C总线上通常需要连接拉高电阻,以确保在没有设备驱动时,总线保持高电平状态。如果拉高电阻的阻值过大或损坏,可能会导致I2C端口保持高电平状态。请检查I2C总线上的拉高电阻是否正常。

4. 程序问题:虽然你提供的源码看起来没有问题,但仍然有可能存在其他部分的程序问题,导致I2C端口保持高电平状态。请仔细检查你的程序,确保I2C通信正常。

5. 硬件问题:如果以上方法都无法解决问题,可能是STM8L051硬件本身存在问题。你可以尝试更换一块STM8L051芯片,看是否能够解决问题。

6. 工作电压问题:你提到工作电压稍微高一点,为3.8V。虽然STM8L051的工作电压范围是2.4V至3.6V,但在某些情况下,稍微超出这个范围可能不会对芯片造成太大影响。然而,如果电压过高,可能会导致I2C端口保持高电平状态。请尝试将工作电压降低到推荐范围内,看是否能够解决问题。

总之,要解决这个问题,你需要从多个方面进行排查,包括示波器探头、I2C总线上的拉高电阻、程序以及硬件本身。希望以上建议对你有所帮助。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分