121 #include "stm32f4xx.h"
122 #include "stm32f4xx_i2c.h"
123 #include "attributes.h"
125 #include "tm_stm32f4_gpio.h"
136 #ifndef TM_I2C_TIMEOUT
137 #define TM_I2C_TIMEOUT 20000
141 #ifndef TM_I2C1_ACKNOWLEDGED_ADDRESS
142 #define TM_I2C1_ACKNOWLEDGED_ADDRESS I2C_AcknowledgedAddress_7bit
145 #define TM_I2C1_MODE I2C_Mode_I2C
147 #ifndef TM_I2C1_OWN_ADDRESS
148 #define TM_I2C1_OWN_ADDRESS 0x00
151 #define TM_I2C1_ACK I2C_Ack_Disable
153 #ifndef TM_I2C1_DUTY_CYCLE
154 #define TM_I2C1_DUTY_CYCLE I2C_DutyCycle_2
158 #ifndef TM_I2C2_ACKNOWLEDGED_ADDRESS
159 #define TM_I2C2_ACKNOWLEDGED_ADDRESS I2C_AcknowledgedAddress_7bit
162 #define TM_I2C2_MODE I2C_Mode_I2C
164 #ifndef TM_I2C2_OWN_ADDRESS
165 #define TM_I2C2_OWN_ADDRESS 0x00
168 #define TM_I2C2_ACK I2C_Ack_Disable
170 #ifndef TM_I2C2_DUTY_CYCLE
171 #define TM_I2C2_DUTY_CYCLE I2C_DutyCycle_2
175 #ifndef TM_I2C3_ACKNOWLEDGED_ADDRESS
176 #define TM_I2C3_ACKNOWLEDGED_ADDRESS I2C_AcknowledgedAddress_7bit
179 #define TM_I2C3_MODE I2C_Mode_I2C
181 #ifndef TM_I2C3_OWN_ADDRESS
182 #define TM_I2C3_OWN_ADDRESS 0x00
185 #define TM_I2C3_ACK I2C_Ack_Disable
187 #ifndef TM_I2C3_DUTY_CYCLE
188 #define TM_I2C3_DUTY_CYCLE I2C_DutyCycle_2
191 #define TM_I2C_CLOCK_STANDARD 100000
192 #define TM_I2C_CLOCK_FAST_MODE 400000
193 #define TM_I2C_CLOCK_FAST_MODE_PLUS 1000000
194 #define TM_I2C_CLOCK_HIGH_SPEED 3400000
242 uint8_t
TM_I2C_Read(I2C_TypeDef* I2Cx, uint8_t address, uint8_t reg);
253 void TM_I2C_ReadMulti(I2C_TypeDef* I2Cx, uint8_t address, uint8_t reg, uint8_t *data, uint16_t count);
281 void TM_I2C_Write(I2C_TypeDef* I2Cx, uint8_t address, uint8_t reg, uint8_t data);
292 void TM_I2C_WriteMulti(I2C_TypeDef* I2Cx, uint8_t address, uint8_t reg, uint8_t *data, uint16_t count);
339 int16_t
TM_I2C_Start(I2C_TypeDef* I2Cx, uint8_t address, uint8_t direction, uint8_t ack);
void TM_I2C_WriteMulti(I2C_TypeDef *I2Cx, uint8_t address, uint8_t reg, uint8_t *data, uint16_t count)
Writes multi bytes to slave.
Definition: tm_stm32f4_i2c.h:211
void TM_I2C_InitCustomPinsCallback(I2C_TypeDef *I2Cx, uint16_t AlternateFunction)
Callback for custom pins initialization.
int16_t TM_I2C_Start(I2C_TypeDef *I2Cx, uint8_t address, uint8_t direction, uint8_t ack)
I2C Start condition.
void TM_I2C_Init(I2C_TypeDef *I2Cx, TM_I2C_PinsPack_t pinspack, uint32_t clockSpeed)
Initializes I2C.
void TM_I2C_WriteNoRegister(I2C_TypeDef *I2Cx, uint8_t address, uint8_t data)
Writes byte to slave without specify register address.
TM_I2C_PinsPack_t
I2C pinspack enumeration.
Definition: tm_stm32f4_i2c.h:209
void TM_I2C_Write(I2C_TypeDef *I2Cx, uint8_t address, uint8_t reg, uint8_t data)
Writes single byte to slave.
uint8_t TM_I2C_Read(I2C_TypeDef *I2Cx, uint8_t address, uint8_t reg)
Reads single byte from slave.
void TM_I2C_ReadMulti(I2C_TypeDef *I2Cx, uint8_t address, uint8_t reg, uint8_t *data, uint16_t count)
Reads multi bytes from slave.
Definition: tm_stm32f4_i2c.h:212
uint8_t TM_I2C_ReadNoRegister(I2C_TypeDef *I2Cx, uint8_t address)
Reads byte from slave without specify register address.
void TM_I2C_ReadMultiNoRegister(I2C_TypeDef *I2Cx, uint8_t address, uint8_t *data, uint16_t count)
Reads multi bytes from slave without setting register from where to start read.
void TM_I2C_WriteMultiNoRegister(I2C_TypeDef *I2Cx, uint8_t address, uint8_t *data, uint16_t count)
Writes multi bytes to slave without setting register from where to start write.
uint8_t TM_I2C_IsDeviceConnected(I2C_TypeDef *I2Cx, uint8_t address)
Checks if device is connected to I2C bus.
Definition: tm_stm32f4_i2c.h:210
uint8_t TM_I2C_ReadAck(I2C_TypeDef *I2Cx)
Reads byte with ack.
uint8_t TM_I2C_Stop(I2C_TypeDef *I2Cx)
Stop condition on I2C.
Definition: tm_stm32f4_i2c.h:213
uint8_t TM_I2C_ReadNack(I2C_TypeDef *I2Cx)
Reads byte without ack.
void TM_I2C_WriteData(I2C_TypeDef *I2Cx, uint8_t data)
Writes to slave.