乐鑫技术交流
直播中

刘桂英

8年用户 1281经验值
私信 关注
[问答]

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

我在使用esp32-s2对mpu6050进行配置时,通过串口监控发现写入时一直返回-1也就是失败,读取ID时的数据也同mpu6050的id相差极大...串口监控具体如图一所示:
      
                        
                                             

可以看到参数config函数与驱动安装是正常的。但随后的两次读写都失败了...

下面贴出mpu6050读写时序代码
  • esp_err_t MPU6050_WriteReg(u_int8_t reg_add,u_int8_t reg_dat)
  • {
  •     esp_err_t ret;
  •     i2c_cmd_handle_t cmd =  i2c_cmd_link_create();      //新建操作I2C句柄
  •     i2c_master_start(cmd);                              //发出起始信号
  •     i2c_master_write_byte(cmd,(MPU6050_ADDRESS<<1)|I2C_MASTER_WRITE,true);     //写入地址
  •     i2c_master_write_byte(cmd,reg_add,true);                   //写入寄存器地址  
  •     i2c_master_write_byte(cmd,reg_dat,true);                      //写入值                  
  •     i2c_master_stop(cmd);                                      //发出停止信号
  •     ret = i2c_master_cmd_begin(I2C_NUM_1,cmd,10000/porttiCK_RATE_MS);
  •     i2c_cmd_link_delete(cmd);
  •     return  ret;
  • }
  • esp_err_t  MPU6050_ReadData(u_int8_t reg_add,uint8_t *data)
  • {
  •     int ret;
  •     i2c_cmd_handle_t cmd =  i2c_cmd_link_create();      //新建操作I2C句柄
  •     i2c_master_start(cmd);                              //启动I2C
  •     i2c_master_write_byte(cmd,(MPU6050_ADDRESS<<1)|I2C_MASTER_READ,1);        //写入地址,选择写指令
  •     i2c_master_write_byte(cmd,reg_add,1);                                   //写入寄存器地址
  •     i2c_master_start(cmd);
  •     i2c_master_read_byte(cmd,data,1);                                       //写入寄存器地址  
  •     i2c_master_stop(cmd);
  •     ret = i2c_master_cmd_begin(I2C_NUM_1,cmd,1000/portTICK_RATE_MS);
  •     i2c_cmd_link_delete(cmd);
  •     return ret;
  • }

都是从example和别人的轮子里拿的...跟IDF文档中看着也没啥区别

从逻辑分析仪里看的话,也没法解析

第一次用idf进行开发,希望大家可以解答一下,谢谢

更多回帖

发帖
×
20
完善资料,
赚取积分