ESP32-S2的iic写入失败,该如何排查?

蓝运放可不吃蓝莓
Posts: 7
Joined: Sun Jul 04, 2021 1:47 am

ESP32-S2的iic写入失败,该如何排查?

Postby 蓝运放可不吃蓝莓 » Sun Jul 04, 2021 2:01 am

我在使用esp32-s2对mpu6050进行配置时,通过串口监控发现写入时一直返回-1也就是失败,读取ID时的数据也同mpu6050的id相差极大...串口监控具体如图一所示:
CZGZUEHYAWI6QW$S0L562%2.png
CZGZUEHYAWI6QW$S0L562%2.png (6.61 KiB) Viewed 4104 times
可以看到参数config函数与驱动安装是正常的。但随后的两次读写都失败了...
下面贴出mpu6050读写时序代码
  1. esp_err_t MPU6050_WriteReg(u_int8_t reg_add,u_int8_t reg_dat)
  2. {
  3.     esp_err_t ret;
  4.  
  5.     i2c_cmd_handle_t cmd =  i2c_cmd_link_create();      //新建操作I2C句柄
  6.     i2c_master_start(cmd);                              //发出起始信号
  7.     i2c_master_write_byte(cmd,(MPU6050_ADDRESS<<1)|I2C_MASTER_WRITE,true);     //写入地址
  8.     i2c_master_write_byte(cmd,reg_add,true);                   //写入寄存器地址  
  9.     i2c_master_write_byte(cmd,reg_dat,true);                      //写入值                  
  10.     i2c_master_stop(cmd);                                      //发出停止信号
  11.     ret = i2c_master_cmd_begin(I2C_NUM_1,cmd,10000/portTICK_RATE_MS);
  12.  
  13.     i2c_cmd_link_delete(cmd);
  14.  
  15.     return  ret;
  16. }
  17.  
  18. esp_err_t  MPU6050_ReadData(u_int8_t reg_add,uint8_t *data)
  19. {
  20.     int ret;
  21.    
  22.     i2c_cmd_handle_t cmd =  i2c_cmd_link_create();      //新建操作I2C句柄
  23.  
  24.     i2c_master_start(cmd);                              //启动I2C
  25.  
  26.     i2c_master_write_byte(cmd,(MPU6050_ADDRESS<<1)|I2C_MASTER_READ,1);        //写入地址,选择写指令
  27.    
  28.     i2c_master_write_byte(cmd,reg_add,1);                                   //写入寄存器地址
  29.     i2c_master_start(cmd);
  30.     i2c_master_read_byte(cmd,data,1);                                       //写入寄存器地址  
  31.                      
  32.  
  33.     i2c_master_stop(cmd);
  34.  
  35.     ret = i2c_master_cmd_begin(I2C_NUM_1,cmd,1000/portTICK_RATE_MS);
  36.     i2c_cmd_link_delete(cmd);
  37.  
  38.     return ret;
  39.    
  40. }
都是从example和别人的轮子里拿的...跟IDF文档中看着也没啥区别
从逻辑分析仪里看的话,也没法解析
第一次用idf进行开发,希望大家可以解答一下,谢谢

蓝运放可不吃蓝莓
Posts: 7
Joined: Sun Jul 04, 2021 1:47 am

Re: ESP32-S2的iic写入失败,该如何排查?

Postby 蓝运放可不吃蓝莓 » Sun Jul 04, 2021 6:50 am

用逻辑分析仪抓了一下...可以看到起始信号是送出去了的...
1F(IEIX@W}MCRG64KKVO2HW.png
1F(IEIX@W}MCRG64KKVO2HW.png (4.41 KiB) Viewed 4091 times
检测到NACK后就没有再发别的信息了,直接发送下一个寄存器写入了,NACK是因为没接进陀螺仪,信号接入了逻辑分析仪

ESP_Gargamel
Posts: 786
Joined: Wed Nov 14, 2018 8:45 am

Re: ESP32-S2的iic写入失败,该如何排查?

Postby ESP_Gargamel » Mon Jul 05, 2021 7:07 am


Who is online

Users browsing this forum: No registered users and 130 guests