
我用的是 esp32 S3 的芯片,使用下方展示的代码,扫不到任何 i2c 设备,而且会卡在 Wire.begin(31,30),然后无限 setup 。不传引脚则正常运行,提示"No I2C devices foundn"。
#include <Wire.h> void setup() { Wire.begin(31,30); Serial.begin(115200); Serial.println("nI2C Scanner"); byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for(address = 1; address < 127; address++ ) { Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address<16) { Serial.print("0"); } Serial.println(address,HEX); nDevices++; } else if (error==4) { Serial.print("Unknown error at address 0x"); if (address<16) { Serial.print("0"); } Serial.println(address,HEX); } } if (nDevices == 0) { Serial.println("No I2C devices foundn"); } else { Serial.println("donen"); } delay(5000); Serial.print("i2c devices found:"); Serial.println(nDevices); } void loop() { } 因为电路图是外包公司画的(我再也不找外包了),现在做了几个样板,用起来有一些问题,电路图我看不太懂,现在在找靠谱的大神,付费请教一些问题。有相关经验的可以V:Taxze2019
1 chopin1998519 2024-08-29 09:18:16 +08:00 上拉电阻? 用示波器看看波形呗 |
2 taxze OP @chopin1998519 不太懂呀,我只能写软件层功能,碰到电路真拉闸了 |
3 UIXX 2024-08-29 12:15:13 +08:00 看了代码,逻辑没有问题。猜想有两个: 1. 电源,这个没有原理图跟实物测试,不好说。 2. 引脚配置。esp32s3 系列的大部分芯片的 GPIO30 和 GPIO31 用作 SPI 的时钟线和输出线,官方是不推荐使用这些引脚另作他用的。 |
4 56rssd 2024-08-29 18:14:24 +08:00 先 Wire.pins(31,30)再 Wire.begain()试试 |
5 skyyan2000 2024-08-29 18:32:53 +08:00 这是啥,怎么感觉向线束测试得模块上得 |
6 maja 2024-08-30 11:33:18 +08:00 i2c 调不通永远先检查有没有上拉... |