/********************************************************************* File : i2c.h Purpose : **********************************************************************/ #ifndef __I2C_H__ #define __I2C_H__ /****************************** Includes *****************************/ /****************************** Defines *******************************/ #define SENSORS_I2C I2C2 #define I2C_SPEED 400000 #define I2C_OWN_ADDRESS 0x00 #define I2C_Config() I2cMaster_Init(); /***************************** Prototypes *****************************/ void I2cMaster_Init(void); unsigned long Sensors_I2C_WriteRegister(unsigned char Address, unsigned char RegisterAddr, unsigned short RegisterLen, const unsigned char *RegisterValue); unsigned long Sensors_I2C_ReadRegister(unsigned char Address, unsigned char RegisterAddr, unsigned short RegisterLen, unsigned char *RegisterValue); int Sensors_I2C_WriteRegister_swap(unsigned char slave_addr,unsigned char reg_addr,unsigned char len, unsigned char *data_ptr); int Sensors_I2C_ReadRegister_swap(unsigned char slave_addr,unsigned char reg_addr,unsigned char len, unsigned char *data_ptr); int I2C_Reset_User(); #endif // __I2C_H__ /******************************************************************************* File : i2c.c Purpose : I2c 3 to communicate with the sensors Author : ********************************** Includes ***********************************/ #include #include "stm32l1xx.h" #include "i2c.h" #include "gpio.h" #include "log.h" #include "discover_board.h" #include "main.h" /********************************* Defines ************************************/ #define I2Cx_FLAG_TIMEOUT ((uint32_t) 900) #define I2Cx_LONG_TIMEOUT ((uint32_t)(300 * I2Cx_FLAG_TIMEOUT)) #define SENSORS_I2C_SCL_GPIO_PORT GPIOB #define SENSORS_I2C_SCL_GPIO_CLK RCC_AHBPeriph_GPIOB #define SENSORS_I2C_SCL_GPIO_PIN GP...