[技术讨论] 求助:ESP32S3 CMOS应用 用错了引脚导致I2C工作不正常

[复制链接]
1711|1
lyae 发表于 2025-10-20 21:10 | 显示全部楼层 |阅读模式
, I2c, 引脚, ,
第一次用ESP32 S3R8做产品,一个摄像头应用,用的是OV2640。样板出来之后发现程序一跑到摄像初始化时就芯片就重启,各种方式查了三天,才发现是用了PSRAM的引脚。GPIO33-37应该是给PSRAM用的,不应该把它们用在CMOS的data pin上。然后我disable了PSRAM,这下不会重启了,但是发现初始化时识别不到OV2640,应该是I2C没有正常工作,我查了cmos的驱动,是I2C没有读出OV2640的地址来。我排查了硬件的连接和OV2640的好坏(在另外一个demo板上可以正常初始化及显示)。

现在是怀疑还是用了什么不应该用的引脚,我把所有用到的引脚都列在了下面,请有经验的前辈帮忙我看一下还有哪些引脚用错了,帮忙给一下建议。

我使用的芯片是ESP32 S3R8 + 8MB flash,SDK是 V5.5.1, I2C使用了SDK的新驱动,Disable了PSRAM。

////////////////////////////////////////////////////////////////////////////

#define DRV_GPIO_IIC_SDA_PIN             GPIO_NUM_4       // SDA
#define DRV_GPIO_IIC_SCL_PIN             GPIO_NUM_5       // SCL

// CMOS GPIO
#define DRV_GPIO_CMOS_PIN_PWDN        GPIO_NUM_46       // -1, physically 46 (not connected)
#define DRV_GPIO_CMOS_PIN_RESET       GPIO_NUM_NC       // -1, not connected
#define DRV_GPIO_CMOS_PIN_XCLK        GPIO_NUM_14       // was 15
#define DRV_GPIO_CMOS_PIN_SSCB_SDA    DRV_GPIO_IIC_SDA_PIN        // SIOD
#define DRV_GPIO_CMOS_PIN_SSCB_SCL    DRV_GPIO_IIC_SCL_PIN        // SIOC
#define DRV_GPIO_CMOS_PIN_Y2          GPIO_NUM_37       // Y2
#define DRV_GPIO_CMOS_PIN_Y3          GPIO_NUM_36       // Y3
#define DRV_GPIO_CMOS_PIN_Y4          GPIO_NUM_35       // Y4
#define DRV_GPIO_CMOS_PIN_Y5          GPIO_NUM_34       // Y5
#define DRV_GPIO_CMOS_PIN_Y6          GPIO_NUM_33       // Y6
#define DRV_GPIO_CMOS_PIN_Y7          GPIO_NUM_18       // Y7
#define DRV_GPIO_CMOS_PIN_Y8          GPIO_NUM_17       // Y8
#define DRV_GPIO_CMOS_PIN_Y9          GPIO_NUM_45       // Y9
#define DRV_GPIO_CMOS_PIN_VSYNC       GPIO_NUM_42       // VSYNC
#define DRV_GPIO_CMOS_PIN_HREF        GPIO_NUM_41       // HREF
#define DRV_GPIO_CMOS_PIN_PCLK        GPIO_NUM_13       // PCLK

#define DRV_GPIO_BUTTON_ADC_PIN        GPIO_NUM_1       // up/down/enter/return
#define DRV_GPIO_LED_1_PIN             GPIO_NUM_48       // high is on
#define DRV_GPIO_BUZZER_PIN            GPIO_NUM_47       // high is on
#define DRV_GPIO_4G_INT_PIN            GPIO_NUM_21       // high is on
#define DRV_GPIO_4G_PWR_PIN            GPIO_NUM_26       // high is on
#define DRV_GPIO_UART_4G_COM_TXD_PIN   GPIO_NUM_20       // TX
#define DRV_GPIO_UART_4G_COM_RXD_PIN   GPIO_NUM_19       // RX
#define DRV_GPIO_CDS_1_ADC_PIN         GPIO_NUM_8       // adc input
#define DRV_GPIO_CDS_2_ADC_PIN         GPIO_NUM_9       // adc input
#define DRV_GPIO_CDS_EN_PIN            GPIO_NUM_10       // high for enable
#define DRV_GPIO_940nm_LED_PWR_PIN     GPIO_NUM_7       // high for on
#define DRV_GPIO_INNER_TAMPER_INT_PIN  GPIO_NUM_2       // pull none, default high, low for trigger
#define DRV_GPIO_OUTER_TAMPER_INT_PIN  GPIO_NUM_3       // pull none, default high, low for trigger
#define DRV_GPIO_BATTERY_READ_PIN      GPIO_NUM_6       // a ADC input, read voltage
#define DRV_GPIO_MAIN_PWR_EN_PIN       GPIO_NUM_0       // weak pull up, default high
#define DRV_GPIO_UART_DEBUG_TXD_PIN    GPIO_NUM_43       // TX
#define DRV_GPIO_UART_DEBUG_RXD_PIN    GPIO_NUM_44       // RX
#define DRV_GPIO_LCD_RESET_PIN         GPIO_NUM_11       // high for on
#define DRV_GPIO_433M_DAT_PIN          GPIO_NUM_12       // high for on

 楼主| lyae 发表于 2025-10-21 21:47 | 显示全部楼层
事情已经完美解决!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:nothing...

21

主题

63

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部