diff --git a/firmware/inc/sercom/i2c.h b/firmware/inc/sercom/i2c.h index 93b08c4..4643233 100644 --- a/firmware/inc/sercom/i2c.h +++ b/firmware/inc/sercom/i2c.h @@ -89,22 +89,22 @@ static void i2c_master_read(uint8_t address, uint8_t* data, uint16_t data_length /** * I2C bus master. */ -static void i2c_init(void) +static void i2c_init(SercomI2cm* sercom, uint32_t pad0_pinmux, uint32_t pad1_pinmux) { struct i2c_master_config config_i2c_master; i2c_master_get_config_defaults(&config_i2c_master); /* Config */ config_i2c_master.buffer_timeout = 10000; - config_i2c_master.baud_rate = 10; + config_i2c_master.baud_rate = 100; /* 100 kBaud */ /* Pinmux */ - config_i2c_master.pinmux_pad0 = PINMUX_PA04D_SERCOM0_PAD0; - config_i2c_master.pinmux_pad1 = PINMUX_PA05D_SERCOM0_PAD1; + config_i2c_master.pinmux_pad0 = pad0_pinmux; + config_i2c_master.pinmux_pad1 = pad1_pinmux; /* Initialize and enable device with config. */ - i2c_master_init(&i2c_master_instance, SERCOM0, &config_i2c_master); - i2c_master_enable(&i2c_master_instance); + i2c_master_init(&i2c_master_instance, sercom, &config_i2c_master); + i2c_master_enable(&i2c_master_instance); } #endif /* I2C_H */ diff --git a/firmware/src/init.c b/firmware/src/init.c index 60a93c7..efdefa7 100644 --- a/firmware/src/init.c +++ b/firmware/src/init.c @@ -120,7 +120,7 @@ void init(timepulse_callback_t callback, enum init_type init_t) xosc_init(); /* i2c */ - i2c_init(); + i2c_init(I2C_SERCOM, I2C_SERCOM_SDA_PINMUX, I2C_SERCOM_SCL_PINMUX); /* barometer */ bmp180_init();