TM STM32F4xx Libraries  v1.0.0
Libraries for STM32F4xx devices from Tilen Majerle
tm_stm32f4_i2c.h
1 
30 #ifndef TM_I2C_H
31 #define TM_I2C_H 161
32 
121 #include "stm32f4xx.h"
122 #include "stm32f4xx_i2c.h"
123 #include "attributes.h"
124 #include "defines.h"
125 #include "tm_stm32f4_gpio.h"
126 
136 #ifndef TM_I2C_TIMEOUT
137 #define TM_I2C_TIMEOUT 20000
138 #endif
139 
140 /* I2C1 settings, change them in defines.h project file */
141 #ifndef TM_I2C1_ACKNOWLEDGED_ADDRESS
142 #define TM_I2C1_ACKNOWLEDGED_ADDRESS I2C_AcknowledgedAddress_7bit
143 #endif
144 #ifndef TM_I2C1_MODE
145 #define TM_I2C1_MODE I2C_Mode_I2C
146 #endif
147 #ifndef TM_I2C1_OWN_ADDRESS
148 #define TM_I2C1_OWN_ADDRESS 0x00
149 #endif
150 #ifndef TM_I2C1_ACK
151 #define TM_I2C1_ACK I2C_Ack_Disable
152 #endif
153 #ifndef TM_I2C1_DUTY_CYCLE
154 #define TM_I2C1_DUTY_CYCLE I2C_DutyCycle_2
155 #endif
156 
157 /* I2C2 settings, change them in defines.h project file */
158 #ifndef TM_I2C2_ACKNOWLEDGED_ADDRESS
159 #define TM_I2C2_ACKNOWLEDGED_ADDRESS I2C_AcknowledgedAddress_7bit
160 #endif
161 #ifndef TM_I2C2_MODE
162 #define TM_I2C2_MODE I2C_Mode_I2C
163 #endif
164 #ifndef TM_I2C2_OWN_ADDRESS
165 #define TM_I2C2_OWN_ADDRESS 0x00
166 #endif
167 #ifndef TM_I2C2_ACK
168 #define TM_I2C2_ACK I2C_Ack_Disable
169 #endif
170 #ifndef TM_I2C2_DUTY_CYCLE
171 #define TM_I2C2_DUTY_CYCLE I2C_DutyCycle_2
172 #endif
173 
174 /* I2C3 settings, change them in defines.h project file */
175 #ifndef TM_I2C3_ACKNOWLEDGED_ADDRESS
176 #define TM_I2C3_ACKNOWLEDGED_ADDRESS I2C_AcknowledgedAddress_7bit
177 #endif
178 #ifndef TM_I2C3_MODE
179 #define TM_I2C3_MODE I2C_Mode_I2C
180 #endif
181 #ifndef TM_I2C3_OWN_ADDRESS
182 #define TM_I2C3_OWN_ADDRESS 0x00
183 #endif
184 #ifndef TM_I2C3_ACK
185 #define TM_I2C3_ACK I2C_Ack_Disable
186 #endif
187 #ifndef TM_I2C3_DUTY_CYCLE
188 #define TM_I2C3_DUTY_CYCLE I2C_DutyCycle_2
189 #endif
190 
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
209 typedef enum {
215 
233 void TM_I2C_Init(I2C_TypeDef* I2Cx, TM_I2C_PinsPack_t pinspack, uint32_t clockSpeed);
234 
242 uint8_t TM_I2C_Read(I2C_TypeDef* I2Cx, uint8_t address, uint8_t reg);
243 
253 void TM_I2C_ReadMulti(I2C_TypeDef* I2Cx, uint8_t address, uint8_t reg, uint8_t *data, uint16_t count);
254 
261 uint8_t TM_I2C_ReadNoRegister(I2C_TypeDef* I2Cx, uint8_t address);
262 
271 void TM_I2C_ReadMultiNoRegister(I2C_TypeDef* I2Cx, uint8_t address, uint8_t* data, uint16_t count);
272 
281 void TM_I2C_Write(I2C_TypeDef* I2Cx, uint8_t address, uint8_t reg, uint8_t data);
282 
292 void TM_I2C_WriteMulti(I2C_TypeDef* I2Cx, uint8_t address, uint8_t reg, uint8_t *data, uint16_t count);
293 
308 void TM_I2C_WriteNoRegister(I2C_TypeDef* I2Cx, uint8_t address, uint8_t data);
309 
318 void TM_I2C_WriteMultiNoRegister(I2C_TypeDef* I2Cx, uint8_t address, uint8_t* data, uint16_t count);
319 
328 uint8_t TM_I2C_IsDeviceConnected(I2C_TypeDef* I2Cx, uint8_t address);
329 
339 int16_t TM_I2C_Start(I2C_TypeDef* I2Cx, uint8_t address, uint8_t direction, uint8_t ack);
340 
347 uint8_t TM_I2C_Stop(I2C_TypeDef* I2Cx);
348 
355 uint8_t TM_I2C_ReadNack(I2C_TypeDef* I2Cx);
356 
363 uint8_t TM_I2C_ReadAck(I2C_TypeDef* I2Cx);
364 
372 void TM_I2C_WriteData(I2C_TypeDef* I2Cx, uint8_t data);
373 
384 void TM_I2C_InitCustomPinsCallback(I2C_TypeDef* I2Cx, uint16_t AlternateFunction);
385 
398 #endif
399 
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.