乐鑫技术交流
直播中

陈霞

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

是否可以使用GPIO13和GPIO12进行I2C通信?

是否可以使用 GPIO13 和 GPIO12 进行 I2C 通信?我不确定它是否在这些引脚上工作。
我正在使用 ESP12 板和 SDK v1.5.1。

我在 i2c_master.h 文件中将 SDA 引脚更改为 13,将 SCL 更改为 12,但没有收到任何响应。


#define PERIPHS_IO_MUX_GPIO13_U          (PERIPHS_IO_MUX + 0x8)
#define PERIPHS_IO_MUX_GPIO12_U          (PERIPHS_IO_MUX + 0x4)

#define I2C_MASTER_SDA_MUX PERIPHS_IO_MUX_GPIO13_U
#define I2C_MASTER_SCL_MUX PERIPHS_IO_MUX_GPIO12_U
#define I2C_MASTER_SDA_GPIO 13
#define I2C_MASTER_SCL_GPIO 12
#define I2C_MASTER_SDA_FUNC FUNC_GPIO13
#define I2C_MASTER_SCL_FUNC FUNC_GPIO12



i2c 上的传感器读取代码:


i2c_master_start();
  i2c_master_writeByte(_i2caddr);
  uint8 ack = i2c_master_getAck();

  if (ack) {
    char info[50];
    os_sprintf(info, "addr %d not ack for resetrn", _i2caddr);
    uart0_sendStr(info);
    i2c_master_stop();
    return ;
  }

回帖(1)

蒲泛粟

2024-7-12 18:00:41
是的,您可以使用GPIO13和GPIO12进行I2C通信。但是,您需要确保正确配置和初始化这些引脚。以下是一些建议和步骤,以确保您的I2C通信正常工作:

1. 首先,确保您的硬件连接正确。将SDA连接到GPIO13,将SCL连接到GPIO12。

2. 在您的代码中,您已经将SDA和SCL引脚分别设置为GPIO13和GPIO12。这是正确的,但您还需要确保在初始化I2C接口时使用这些设置。

3. 在初始化I2C接口之前,确保已经配置了GPIO13和GPIO12为开漏输出。您可以使用以下代码片段来配置这些引脚:

```c
gpio_output_set(0, 0, 0, (1ULL<<13) | (1ULL<<12));
```

4. 接下来,初始化I2C接口。您可以使用以下代码片段来初始化I2C接口:

```c
i2c_master_gpio_init();
```

5. 在初始化I2C接口之后,您可以使用`i2c_master_start()`、`i2c_master_writeByte()`、`i2c_master_readByte()`等函数来执行I2C通信。

6. 如果您仍然无法接收到任何响应,请检查您的设备是否正常工作,以及是否正确连接了所需的拉上电阻。

7. 另外,请确保您的设备地址和通信速度设置正确。您可以在`i2c_master_init()`函数中设置这些参数。

8. 如果您仍然遇到问题,可以尝试在ESP8266的论坛或社区寻求帮助,或者查看相关的示例代码和文档。

总之,使用GPIO13和GPIO12进行I2C通信是可行的。确保正确配置和初始化这些引脚,然后使用I2C接口函数进行通信。如果问题仍然存在,请检查硬件连接和设备设置。
举报

更多回帖

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