您好!
I2C 无法与以下代码和附图通信,请帮助解决问题,谢谢。
从机地址 OPT3001_SLAVE_ADDR 0x44 //μ s
结果寄存器 OPT3001_Result_ADDR 0x00 //μ s
配置寄存器 OPT3001_CONF_ADDR 0x01 //μ s
下限寄存器 OPT3001_LOW_ADDR 0x02 //μ s
上限寄存器 OPT3001_UPPER ADDR 0x03 //μ s
厂商寄存器 OPT3001_MANU_ADDR 0x7E //μ s
设备寄存器 OPT3001_Devi_ADDR 0x7F //μ s
/**
*@简要通过 I2C 读取寄存器
*@param [in] ZMOD44xx 的 i2c_addr 7位 I2C 从器件地址
要读取的内部寄存器的*@param [in] reg_addr 地址
*@param [out] buf 目的缓冲区;必须至少具有 len 的大小
*@param [in] len 需要读取的字节数
*@返回错误代码
*
int8_t user_i2c_read (uint8_t i2c_addr、uint8_t reg_addr、uint8_t * buf、
uint8_t len)
{
i2C_cmd_handle_t cmd = i2c_cmd_link_create ();
I2C_MASTER_START (cmd);
I2C_MASTER_WRITE_BYTE (cmd、(i2c_addr << 1)| WRITE_BIT、ACK_VAL);
if (NULL!= reg_addr)
{
I2C_MASTER_WRITE_BYTE (cmd、reg_addr、ACK_VAL);
}
I2C_MASTER_WRITE_BYTE (cmd、(i2c_addr << 1)| READ_BIT、ACK_VAL);
I2C_MASTER_READ (cmd、buf、len、ACK_VAL);
I2C_MASTER_STOP (cmd);
esp_err_t ret = i2c_master_cmd_begin (I2C_master_NUM、cmd、1000 / portTIcK_rate_ms);
如果(ret!= ESP_OK)
{
esp_loge (tag、"read_i2c_master_cmd_begin 失败");
回程;
}
I2C_cmd_link_delete (cmd);
回程;
}
/**
*@简短通过 I2C 写入寄存器
*@param [in] ZMOD4xxx 的 i2c_addr 7位 I2C 从器件地址
要写入的内部寄存器的*@param [in] reg_addr 地址
*@param [in] buf 源缓冲区;必须至少具有 len 的大小
*@param [in] len 需要写入的字节数
*@返回错误代码
*
int8_t user_i2c_write (uint8_t i2c_addr、uint8_t reg_addr、uint8_t * buf、
uint8_t len)
{
i2C_cmd_handle_t cmd = i2c_cmd_link_create ();
I2C_MASTER_START (cmd);
I2C_MASTER_WRITE_BYTE (cmd、(i2c_addr << 1)| WRITE_BIT、ACK_VAL);
if (NULL!= reg_addr)
{
I2C_MASTER_WRITE_BYTE (cmd、reg_addr、ACK_VAL);
}
I2C_MASTER_WRITE(命令、命令、长度、ACK VAL);
I2C_MASTER_STOP (cmd);
esp_err_t ret = i2c_master_cmd_begin (I2C_master_NUM、cmd、1000 / portTIcK_rate_ms);
如果(ret!= ESP_OK)
{
esp_loge (TAG、"write_i2c_master_cmd_begin 失败");
回程;
}
I2C_cmd_link_delete (cmd);
回程;
}
/*
功能:读取设备ID μ A
输入:无 μ A
输出:无 μ A
*
空 USER_OPt3001_DEVICE_ID (空)
{
uint8_t data[20]={};
ID = USER_i2c_read (OPT3001_SLAVE_ADDR、OPT3001_Devi_ADDR、DATA、10);
esp Logi (tag、"device_addr data:0x%x、%x"、data[0]、data[1]);
esp Logi (tag、"device_addr data:0x%x、%x"、data[2]、data[3]);
esp Logi (tag、"device_addr data:0x%x、%x"、data[4]、data[5]);
esp Logi (tag、"device_addr data:0x%x、%x"、data[6]、data[7]);
esp Logi (tag、"device_addr data:0x%x、%x"、data[8]、data[9]);
}