We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
esp_err_t mpu6500_i2c_master_write(uint8_t dev_addr, uint8_t reg_addr, uint8_t data) { // 使用I2C_SLV0写操作,确保写操作标志(最高位为0) mpu6500_write_reg(I2C_SLV0_CTRL, 0x80); mpu6500_write_reg(I2C_SLV0_ADDR, dev_addr & 0x7F); mpu6500_write_reg(I2C_SLV0_REG, reg_addr); mpu6500_write_reg(I2C_SLV0_DO, data);
vTaskDelay(pdMS_TO_TICKS(10)); return ESP_OK;
}
esp_err_t mpu6500_i2c_master_read(uint8_t dev_addr, uint8_t reg_addr, uint8_t *data, size_t len) { // 配置从设备0进行读操作 mpu6500_write_reg(I2C_SLV0_CTRL, 0x80 | len); // 使能读取并设置长度 mpu6500_write_reg(I2C_SLV0_ADDR, dev_addr | 0x80); // 置位最高位表示读操作 mpu6500_write_reg(I2C_SLV0_REG, reg_addr);
// 等待数据就绪 vTaskDelay(pdMS_TO_TICKS(10)); // 读取数据 for (int i = 0; i < len; i++) { data[i] = mpu6500_read_reg(EXT_SENS_DATA_00 + i); } return ESP_OK;
}我是这样写的但不对。 寄存器是这样配置的 // 启用I2C主模式 mpu6500_write_reg(USER_CTRL, 0x20); vTaskDelay(pdMS_TO_TICKS(10));
// 配置I2C主机时钟为400kHz (8MHz/(2*10)=400kHz) mpu6500_write_reg(I2C_MST_CTRL, 0x0D); vTaskDelay(pdMS_TO_TICKS(10));
有没有人知道该怎么做
Originally posted by @laigerousongmianbao in #10767
The text was updated successfully, but these errors were encountered:
No branches or pull requests
esp_err_t mpu6500_i2c_master_write(uint8_t dev_addr, uint8_t reg_addr, uint8_t data)
{
// 使用I2C_SLV0写操作,确保写操作标志(最高位为0)
mpu6500_write_reg(I2C_SLV0_CTRL, 0x80);
mpu6500_write_reg(I2C_SLV0_ADDR, dev_addr & 0x7F);
mpu6500_write_reg(I2C_SLV0_REG, reg_addr);
mpu6500_write_reg(I2C_SLV0_DO, data);
}
esp_err_t mpu6500_i2c_master_read(uint8_t dev_addr, uint8_t reg_addr, uint8_t *data, size_t len)
{
// 配置从设备0进行读操作
mpu6500_write_reg(I2C_SLV0_CTRL, 0x80 | len); // 使能读取并设置长度
mpu6500_write_reg(I2C_SLV0_ADDR, dev_addr | 0x80); // 置位最高位表示读操作
mpu6500_write_reg(I2C_SLV0_REG, reg_addr);
}我是这样写的但不对。
寄存器是这样配置的
// 启用I2C主模式
mpu6500_write_reg(USER_CTRL, 0x20);
vTaskDelay(pdMS_TO_TICKS(10));
有没有人知道该怎么做
Originally posted by @laigerousongmianbao in #10767
The text was updated successfully, but these errors were encountered: