esp21 I2C 数据读写问题

esp32 用driver/i2c.h IIC读写功能
调用i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_RATE_MS);返回-1
#include "test.h"
#define I2C_MASTER_SCL_IO GPIO_NUM_22
#define I2C_MASTER_SDA_IO GPIO_NUM_21
#define I2C_MASTER_NUM I2C_NUM_1
#define I2C_MASTER_FREQ_HZ 100000

#define I2C_MASTER_TX_BUF_DISABLE 0             /*!< I2C master doesn't need buffer */
#define I2C_MASTER_RX_BUF_DISABLE 0             /*!< I2C master doesn't need buffer */
#define WRITE_BIT I2C_MASTER_WRITE              /*!< I2C master write */
#define READ_BIT I2C_MASTER_READ                /*!< I2C master read */
#define ACK_CHECK_EN 0x1                        /*!< I2C master will check ack from slave*/
#define ACK_CHECK_DIS 0x0                       /*!< I2C master will not check ack from slave */
#define ACK_VAL 0x0                             /*!< I2C ack value */
#define NACK_VAL 0x1                            /*!< I2C nack value */

#define SLAVE_ADDR   0x6D     // 从机地址

#define READ_SIZE I2C_MASTER_ACK

/**
 @brief I2C初始化函数
 @return 错误码
*/
esp_err_t I2C_Init()
{
    int i2c_master_port = I2C_MASTER_NUM;
    static i2c_config_t conf;
    conf.mode = I2C_MODE_MASTER;
    conf.sda_io_num = I2C_MASTER_SDA_IO;
    conf.sda_pullup_en = GPIO_PULLUP_ENABLE;
    conf.scl_io_num = I2C_MASTER_SCL_IO;
    conf.scl_pullup_en = GPIO_PULLUP_ENABLE;
    conf.master.clk_speed = 100000;
    esp_err_t err = i2c_param_config(I2C_MASTER_NUM,&conf);
    if(err != ESP_OK)
    {
        return err;
    }
    return i2c_driver_install(I2C_MASTER_NUM, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0);
}

/**
 @brief I2C读数据函数
 @param slaveAddr -[in] 从设备地址
 @param regAddr -[in] 寄存器地址
 @param pData -[in] 读出数据
 @param dataLen -[in] 读出数据长度
 @return 错误码
*/
int I2C_ReadData(uint8_t slaveAddr, uint8_t regAddr, uint8_t *pData, uint16_t dataLen)
{
    esp_err_t ret;
    i2c_cmd_handle_t cmd = i2c_cmd_link_create();      //新建操作I2C句柄
    i2c_master_start(cmd);                             //0
    i2c_master_write_byte(cmd, (slaveAddr << 1) | READ_BIT, ACK_CHECK_EN);  //发送地址+写+检查ack    //0
    if(NULL != regAddr)
    {
        i2c_master_write_byte(cmd, regAddr, ACK_CHECK_EN);  //发送寄存器ID     //0
    }
    i2c_master_read(cmd, pData, dataLen, READ_SIZE);       //0
    i2c_master_stop(cmd);     //0
    ret = i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_RATE_MS);     //-1
    i2c_cmd_link_delete(cmd);
    return ret;
}

I2C_ReadData()函数里面我写了备注 后面标注的0都是返回正确的 只有最后返回-1时不正确的 这可能是什么原因呢

######我尝试一句话一句话的打印出来 我取到的寄存器里的值也是0 这明显不对

返回-1可能是什么原因呢?