第一次用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
|
|