完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ESP32s3 I2c0 SCL一直高电平,没有时钟输出,SDA也是一直高电平
日志显示初始化成功 I (4197) driver-codec: i2s driver init success I (9197) driver-codec: I2C_MASTER_NUM=0,mode=1,speed=100000 I (9197) driver-codec: I2C initialized successfully I (9207) driver-codec: i2c_read cnt = 0, error = -1 代码如下: #define I2C0_MASTER_SCL_IO 18 /*!< GPIO number used for I2C master clock */ #define I2C0_MASTER_SDA_IO 17 /*!< GPIO number used for I2C master data */ static esp_err_t i2c_master_init(void) { int i2c_master_port = I2C_MASTER_NUM; i2c_config_t conf = { .mode = I2C_MODE_MASTER, .sda_io_num = I2C0_MASTER_SDA_IO, .scl_io_num = I2C0_MASTER_SCL_IO, .sda_pullup_en = GPIO_PULLUP_ENABLE, .scl_pullup_en = GPIO_PULLUP_ENABLE, .master.clk_speed = I2C_MASTER_FREQ_HZ, .clk_flags = 0, }; esp_err_t err = i2c_param_config(i2c_master_port, &conf); if (err != ESP_OK) { return err; } ESP_LOGI(TAG, "I2C_MASTER_NUM=%d,mode=%d,speed=%d",i2c_master_port,conf.mode,conf.master.clk_speed); return i2c_driver_install(i2c_master_port, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0); } uint16_t AW88266A_i2c_read(unsigned char reg_addr) { int ret; uint8_t cnt = 0; uint8_t data_buff[2] = {0}; uint16_t data = 0; while (cnt < I2C_RETRY_TIMES) { ret = i2c_master_write_read_device(I2C_MASTER_NUM, AW88266A_CODEC_ADDR, ®_addr, 1, data_buff, 2, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); if (ret != 0) ESP_LOGI(TAG, "i2c_read cnt = %d, error = %dn", cnt, ret); else break; cnt++; } data = (((data_buff[0] << 8) & 0xff00) | (data_buff[1] & 0x00ff)); ESP_LOGI(TAG, "i2c_read data = %dn", data); return data; } |
|
相关推荐
1个回答
|
|
从您提供的信息来看,ESP32-S3的I2C0 SCL和SDA信号一直为高电平,没有时钟输出。这可能是由以下几个原因导致的:
1. **接线问题**:请检查您的接线是否正确。确保I2C0的SCL和SDA引脚分别连接到了外部设备的SCL和SDA引脚。 2. **引脚配置问题**:您已经定义了I2C0的SCL和SDA引脚为18和17,但请确保这些引脚没有被其他功能占用。您可以使用`gpio_matrix_out`函数将这些引脚配置为I2C功能。 3. **I2C驱动问题**:请确保您使用的I2C驱动库是适用于ESP32-S3的。如果您使用的是第三方库,请检查其兼容性。 4. **外部设备问题**:请检查与ESP32-S3连接的外部设备是否正常工作。如果外部设备有问题,可能会导致I2C通信失败。 5. **软件问题**:请检查您的代码逻辑,确保在初始化I2C驱动后,正确地发送和接收数据。 针对您提供的代码片段,我建议您添加以下代码来配置GPIO18和GPIO17为I2C功能: ```c #include "driver/gpio.h" #include "driver/i2c.h" // ... gpio_config_t io_conf; io_conf.intr_type = GPIO_PIN_INTR_DISABLE; io_conf.mode = GPIO_MODE_OUTPUT; io_conf.pin_bit_mask = (1ULL< io_conf.pull_up_en = 0; gpio_config(&io_conf); i2c_config_t conf; conf.mode = I2C_MODE_MASTER; conf.sda_io_num = I2C0_MASTER_SDA_IO; conf.sda_pullup_en = GPIO_PULLUP_ENABLE; conf.scla_io_num = I2C0_MASTER_SCL_IO; conf.scla_pullup_en = GPIO_PULLUP_ENABLE; conf.master.clk_speed = 100000; i2c_param_config(I2C_NUM_0, &conf); i2c_driver_install(I2C_NUM_0, conf.mode, 0, 0, 0); ``` 这段代码将配置GPIO18和GPIO17为I2C功能,并初始化I2C驱动。如果问题仍然存在,请检查其他可能的原因。 |
|
|
|
只有小组成员才能发言,加入小组>>
255个成员聚集在这个小组
加入小组637 浏览 1 评论
3157 浏览 2 评论
为blufi_device设置自定义名称,但是无法修改,为什么?
582浏览 4评论
请问ESP32-S2-WROOM怎么获得ESP32-S2外接FLASH的唯一序列号?
331浏览 3评论
1305浏览 3评论
ESP-IDF的VScode插件的build按钮点击会报错的原因?
1584浏览 3评论
ESP-Jumpstart例程中第5个工程:5_cloud连接报错是哪里的问题?
341浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-7-7 23:57 , Processed in 0.871863 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191