【已解决】求助:ESP32C3 I2C发送数据错误

TuringQin
Posts: 4
Joined: Sun Feb 20, 2022 7:43 am

【已解决】求助:ESP32C3 I2C发送数据错误

Postby TuringQin » Sun Feb 20, 2022 8:06 am

  1. void app_main(void)
  2. {
  3.     I2C_Init();
  4.     i2c_cmd_handle_t cmd = i2c_cmd_link_create();
  5.     i2c_master_start(cmd);
  6.     // i2c_master_start(cmd);
  7.     i2c_master_write_byte(cmd, ((0x06) << 1) | WRITE_BIT, ACK_CHECK_EN);
  8.     i2c_master_write_byte(cmd, 0x09, ACK_CHECK_EN);
  9.     i2c_master_write_byte(cmd, 0xB3, ACK_CHECK_DIS);
  10.     i2c_master_write_byte(cmd, 0x0A, ACK_CHECK_DIS);
  11.     i2c_master_write_byte(cmd, 0x05, ACK_CHECK_DIS);
  12.     i2c_master_write_byte(cmd, 0x3c, ACK_CHECK_DIS);
  13.     i2c_master_write_byte(cmd, 0x08, ACK_CHECK_DIS);
  14.  
  15.     i2c_master_stop(cmd);
  16.     esp_err_t ret = i2c_master_cmd_begin(i2c_master_port, cmd, 1000 / portTICK_RATE_MS);
  17.     i2c_cmd_link_delete(cmd);
  18.     if (ret == ESP_OK)
  19.     {
  20.         ESP_LOGI(TAG, "Write OK");
  21.     }
  22.     else if (ret == ESP_ERR_TIMEOUT)
  23.     {
  24.         ESP_LOGW(TAG, "Bus is busy");
  25.     }
  26.     else
  27.     {
  28.         ESP_LOGW(TAG, "Write Failed");
  29.     }
  30.     // vTaskDelay(1000 / portTICK_PERIOD_MS);
  31.     // I2C_Write(i2c_master_port,0x06,0x09,0xB3);
  32.     // vTaskDelay(50 / portTICK_PERIOD_MS);
  33.     // I2C_Write(i2c_master_port,0x06,0x09,0xB3);
  34.  
  35.     // printf("key\n");
  36.  
  37.     // I2C_Write(i2c_master_port,0x06,0x0A,0x05);
  38.     // printf("programe\n");
  39.     // // I2C_Write(i2c_master_port,6,0x3C,0x07);
  40.     // //
  41. }
  1. 我使用ESP-IDF4.4 开发SP32C3的I2C,代码如上,我发现逻辑分析仪读出的数据和程序不符,想知道是为什么
Image
  1. 我尝试使用官方的I2C程序后调试发现是自己的传感器寄存器操作的有问题
Attachments
2022-02-20 16-02-28 的屏幕截图.png
这个是逻辑分析仪读出的,地址和数据都和程序不一样
2022-02-20 16-02-28 的屏幕截图.png (36.56 KiB) Viewed 3044 times
Last edited by TuringQin on Sun Mar 27, 2022 7:50 am, edited 1 time in total.

ESP_WangYX
Posts: 97
Joined: Mon Jun 28, 2021 12:48 pm

Re: 【未解决】求助:ESP32C3 I2C发送数据错误

Postby ESP_WangYX » Thu Mar 03, 2022 6:15 am

Hi,这里有一个用于测试 i2c 通信的官方示例,可以使用这个测试一下从机接收数据的情况,然后再排查逻辑分析仪上的数据是否正常:https://github.com/espressif/esp-idf/tr ... _self_test

Who is online

Users browsing this forum: Google [Bot] and 138 guests