upd
This commit is contained in:
+17
-41
@@ -1,4 +1,5 @@
|
||||
#include "i2c.h"
|
||||
#include "driver/i2c_types.h"
|
||||
#include "esp_err.h"
|
||||
#include <string.h>
|
||||
|
||||
@@ -17,71 +18,46 @@ void i2c_init(int sda, int scl) {
|
||||
i2c_new_master_bus(&cfg, &bus);
|
||||
}
|
||||
|
||||
esp_err_t i2c_write_reg(uint8_t addr, uint8_t reg, uint8_t val) {
|
||||
esp_err_t i2c_write_reg(i2c_master_dev_handle_t dev, uint8_t reg, uint8_t val) {
|
||||
uint8_t data[2] = {reg, val};
|
||||
|
||||
i2c_master_dev_handle_t dev;
|
||||
i2c_device_config_t dev_cfg = {
|
||||
.device_address = addr,
|
||||
.scl_speed_hz = 400000,
|
||||
};
|
||||
|
||||
i2c_master_bus_add_device(bus, &dev_cfg, &dev);
|
||||
|
||||
esp_err_t r = i2c_master_transmit(dev, data, 2, -1);
|
||||
|
||||
i2c_master_bus_rm_device(dev);
|
||||
return r;
|
||||
}
|
||||
|
||||
esp_err_t i2c_read_reg(uint8_t addr, uint8_t reg, uint8_t *val) {
|
||||
i2c_master_dev_handle_t dev;
|
||||
i2c_device_config_t dev_cfg = {
|
||||
.device_address = addr,
|
||||
.scl_speed_hz = 400000,
|
||||
};
|
||||
esp_err_t i2c_write_reg_multi(i2c_master_dev_handle_t dev, uint8_t reg, const uint8_t *data,
|
||||
size_t len) {
|
||||
|
||||
i2c_master_bus_add_device(bus, &dev_cfg, &dev);
|
||||
esp_err_t err;
|
||||
// reg + payload
|
||||
uint8_t buf[len + 1];
|
||||
buf[0] = reg;
|
||||
memcpy(&buf[1], data, len);
|
||||
|
||||
err = i2c_master_transmit(dev, buf, len + 1, -1);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
esp_err_t i2c_read_reg(i2c_master_dev_handle_t dev, uint8_t reg, uint8_t *val) {
|
||||
i2c_master_transmit_receive(dev, ®, 1, val, 1, -1);
|
||||
|
||||
i2c_master_bus_rm_device(dev);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t i2c_read_multi(uint8_t addr, uint8_t reg, uint8_t *buf, int len) {
|
||||
i2c_master_dev_handle_t dev;
|
||||
i2c_device_config_t dev_cfg = {
|
||||
.device_address = addr,
|
||||
.scl_speed_hz = 400000,
|
||||
};
|
||||
|
||||
i2c_master_bus_add_device(bus, &dev_cfg, &dev);
|
||||
esp_err_t i2c_read_multi(i2c_master_dev_handle_t dev, uint8_t reg, uint8_t *buf, int len) {
|
||||
|
||||
i2c_master_transmit_receive(dev, ®, 1, buf, len, -1);
|
||||
|
||||
i2c_master_bus_rm_device(dev);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t i2c_read_reg_multi(uint8_t addr, uint8_t reg, uint8_t *buf,
|
||||
esp_err_t i2c_read_reg_multi(i2c_master_dev_handle_t dev, uint8_t reg, uint8_t *buf,
|
||||
size_t len) {
|
||||
i2c_master_dev_handle_t dev;
|
||||
|
||||
i2c_device_config_t cfg = {
|
||||
.device_address = addr,
|
||||
.scl_speed_hz = 400000,
|
||||
};
|
||||
|
||||
esp_err_t err;
|
||||
|
||||
err = i2c_master_bus_add_device(bus, &cfg, &dev);
|
||||
if (err != ESP_OK)
|
||||
return err;
|
||||
|
||||
err = i2c_master_transmit_receive(dev, ®, 1, buf, len, -1);
|
||||
|
||||
i2c_master_bus_rm_device(dev);
|
||||
|
||||
return err;
|
||||
}
|
||||
Reference in New Issue
Block a user