|
|
@ -32,27 +32,17 @@ |
|
|
|
|
|
|
|
|
|
|
|
static uint8_t i2c_address; |
|
|
|
static uint8_t i2c_address; |
|
|
|
|
|
|
|
|
|
|
|
// ChibiOS uses two initialization structure for v1 and v2/v3 i2c APIs.
|
|
|
|
|
|
|
|
// The F1 series uses the v1 api, which have to initialized this way.
|
|
|
|
|
|
|
|
#ifdef STM32F103xB |
|
|
|
|
|
|
|
static const I2CConfig i2cconfig = { |
|
|
|
|
|
|
|
OPMODE_I2C, |
|
|
|
|
|
|
|
400000, |
|
|
|
|
|
|
|
FAST_DUTY_CYCLE_2, |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
#else |
|
|
|
|
|
|
|
// This configures the I2C clock to 400khz assuming a 72Mhz clock
|
|
|
|
|
|
|
|
// For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html
|
|
|
|
|
|
|
|
static const I2CConfig i2cconfig = { |
|
|
|
static const I2CConfig i2cconfig = { |
|
|
|
#ifdef USE_I2CV1 |
|
|
|
#ifdef USE_I2CV1 |
|
|
|
I2C1_OPMODE, |
|
|
|
I2C1_OPMODE, |
|
|
|
I2C1_CLOCK_SPEED, |
|
|
|
I2C1_CLOCK_SPEED, |
|
|
|
I2C1_DUTY_CYCLE, |
|
|
|
I2C1_DUTY_CYCLE, |
|
|
|
#else |
|
|
|
#else |
|
|
|
|
|
|
|
// This configures the I2C clock to 400khz assuming a 72Mhz clock
|
|
|
|
|
|
|
|
// For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html
|
|
|
|
STM32_TIMINGR_PRESC(I2C1_TIMINGR_PRESC) | STM32_TIMINGR_SCLDEL(I2C1_TIMINGR_SCLDEL) | STM32_TIMINGR_SDADEL(I2C1_TIMINGR_SDADEL) | STM32_TIMINGR_SCLH(I2C1_TIMINGR_SCLH) | STM32_TIMINGR_SCLL(I2C1_TIMINGR_SCLL), 0, 0 |
|
|
|
STM32_TIMINGR_PRESC(I2C1_TIMINGR_PRESC) | STM32_TIMINGR_SCLDEL(I2C1_TIMINGR_SCLDEL) | STM32_TIMINGR_SDADEL(I2C1_TIMINGR_SDADEL) | STM32_TIMINGR_SCLH(I2C1_TIMINGR_SCLH) | STM32_TIMINGR_SCLL(I2C1_TIMINGR_SCLL), 0, 0 |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
}; |
|
|
|
}; |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static i2c_status_t chibios_to_qmk(const msg_t* status) { |
|
|
|
static i2c_status_t chibios_to_qmk(const msg_t* status) { |
|
|
|
switch (*status) { |
|
|
|
switch (*status) { |
|
|
|