为自定义 arduino 更改 Wire 库的硬件 I2C 引脚

Changing Wire library's Hardware I2C pins for custom arduino

我正在尝试将线 i2c 引脚更改为 11,12(SDA、SCL)。我构建了自己的 PCB,但在同一位置没有 i2c 线。我使用了 adafruits feather52 引导加载程序。

我在网上发现更改 variant.h 文件会更改 i2c 行,但我的计算机 (PC) 上没有该文件,尽管我的 mac 有。

我已经尝试了 Wire.begin(SDA, SCL) 虽然那是针对 esps

我还尝试在 C/programs/Arduino 下的默认线路和 user/AppData/Arduino/adafruit 下的默认线路中编辑 wire.h 文件,但我还没有找到设置引脚的位置。

您无法更改硬件 I2C 引脚。它们是硬件。这意味着它们在芯片内部物理连接到驱动 I2C 的部分。您可以使用软件 I2C 来 "bit-bang" 您的通信。但这不会使用常规的电线库。

不过你有解决办法。两年前我遇到了同样的问题,最后我做的是使用软件 I2C。它 "Bit Bangs" Arduino 任何数字引脚上的 I2C 协议。有几个图书馆。例如,检查这个: https://github.com/Testato/SoftwareWire

开始阅读 I2C 协议并尝试了解库在做什么。然后可以在您硬连线的 GPIO 引脚上模拟 I2C 协议

硬件包安装在Arduino15文件夹中。 Windows 上的文件夹位置在 C:\Users\\AppData\Local\Arduino15\packages.

中的用户主目录中

变体文件在variants/feather_nrf52832/variant.h

The nRF52 MCU can use any pair of pins for I2C.

所以尝试改变 variant.h

#define PIN_WIRE_SDA         (25u)
#define PIN_WIRE_SCL         (26u)

到你需要的别针。

如果可行,请考虑定义 your own hardware definition 而不是修补 variant.h。