From 56440df6b9810dbbc4b33171030970fa2fbe1ca1 Mon Sep 17 00:00:00 2001 From: ThomasintAnker Date: Sat, 18 May 2024 20:48:50 +0200 Subject: Base i2c master functions --- main/i2c.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 main/i2c.c (limited to 'main/i2c.c') diff --git a/main/i2c.c b/main/i2c.c new file mode 100644 index 0000000..7ab1d14 --- /dev/null +++ b/main/i2c.c @@ -0,0 +1,29 @@ +#include "i2c.h" + +#include +#include +#include +#include +#include + +void init_i2c() { + stdio_init_all(); + i2c_init(i2c_default, 100 * 1000); + + // Initialize I2C pins - sda(16), scl(17) + gpio_set_function(SDA_PIN, GPIO_FUNC_I2C); + gpio_set_function(SCL_PIN, GPIO_FUNC_I2C); + + gpio_pull_up(SDA_PIN); + gpio_pull_up(SCL_PIN); +} + +int read_i2c(uint8_t addr, uint8_t *output, size_t len) { + // false - finished with bus + return i2c_read_blocking (i2c_default, addr, output, len, false); +} + +int write_i2c(uint8_t addr, uint8_t *input, size_t len) { + // true to keep master control of bus + return i2c_write_blocking (i2c_default, addr, input, len, true); +} -- cgit v1.2.3