STM32F769IDiscovery  1.00
uDANTE Audio Networking with STM32F7 DISCO board
mfxstm32l152.h
Go to the documentation of this file.
1 
39 /* Define to prevent recursive inclusion -------------------------------------*/
40 #ifndef __MFXSTM32L152_H
41 #define __MFXSTM32L152_H
42 
43 #ifdef __cplusplus
44  extern "C" {
45 #endif
46 
47 /* Includes ------------------------------------------------------------------*/
48 #include "../Common/ts.h"
49 #include "../Common/io.h"
50 #include "../Common/idd.h"
51 
64 /* Exported types ------------------------------------------------------------*/
65 
69 typedef struct
70 {
71  uint8_t SYS_CTRL;
72  uint8_t ERROR_SRC;
73  uint8_t ERROR_MSG;
74  uint8_t IRQ_OUT;
75  uint8_t IRQ_SRC_EN;
76  uint8_t IRQ_PENDING;
77  uint8_t IDD_CTRL;
78  uint8_t IDD_PRE_DELAY;
79  uint8_t IDD_SHUNT0_MSB;
80  uint8_t IDD_SHUNT0_LSB;
81  uint8_t IDD_SHUNT1_MSB;
82  uint8_t IDD_SHUNT1_LSB;
83  uint8_t IDD_SHUNT2_MSB;
84  uint8_t IDD_SHUNT2_LSB;
85  uint8_t IDD_SHUNT3_MSB;
86  uint8_t IDD_SHUNT3_LSB;
87  uint8_t IDD_SHUNT4_MSB;
88  uint8_t IDD_SHUNT4_LSB;
89  uint8_t IDD_GAIN_MSB;
90  uint8_t IDD_GAIN_LSB;
91  uint8_t IDD_VDD_MIN_MSB;
92  uint8_t IDD_VDD_MIN_LSB;
93  uint8_t IDD_VALUE_MSB;
94  uint8_t IDD_VALUE_MID;
95  uint8_t IDD_VALUE_LSB;
98  uint8_t IDD_SHUNT_USED;
100 
105 /* Exported constants --------------------------------------------------------*/
106 
118 #define MFXSTM32L152_REG_ADR_ID ((uint8_t)0x00)
119 
122 #define MFXSTM32L152_REG_ADR_FW_VERSION_MSB ((uint8_t)0x01)
123 #define MFXSTM32L152_REG_ADR_FW_VERSION_LSB ((uint8_t)0x00)
124 
127 #define MFXSTM32L152_REG_ADR_SYS_CTRL ((uint8_t)0x40)
128 
131 #define MFXSTM32L152_REG_ADR_VDD_REF_MSB ((uint8_t)0x06)
132 #define MFXSTM32L152_REG_ADR_VDD_REF_LSB ((uint8_t)0x07)
133 
136 #define MFXSTM32L152_REG_ADR_ERROR_SRC ((uint8_t)0x03)
137 
140 #define MFXSTM32L152_REG_ADR_ERROR_MSG ((uint8_t)0x04)
141 
145 #define MFXSTM32L152_REG_ADR_MFX_IRQ_OUT ((uint8_t)0x41)
146 
149 #define MFXSTM32L152_REG_ADR_IRQ_SRC_EN ((uint8_t)0x42)
150 
153 #define MFXSTM32L152_REG_ADR_IRQ_PENDING ((uint8_t)0x08)
154 
157 #define MFXSTM32L152_REG_ADR_IRQ_ACK ((uint8_t)0x44)
158 
162 #define MFXSTM32L152_ID_1 ((uint8_t)0x7B)
163 #define MFXSTM32L152_ID_2 ((uint8_t)0x79)
164 
168 #define MFXSTM32L152_SWRST ((uint8_t)0x80)
169 #define MFXSTM32L152_STANDBY ((uint8_t)0x40)
170 #define MFXSTM32L152_ALTERNATE_GPIO_EN ((uint8_t)0x08) /* by the way if IDD and TS are enabled they take automatically the AF pins*/
171 #define MFXSTM32L152_IDD_EN ((uint8_t)0x04)
172 #define MFXSTM32L152_TS_EN ((uint8_t)0x02)
173 #define MFXSTM32L152_GPIO_EN ((uint8_t)0x01)
174 
178 #define MFXSTM32L152_IDD_ERROR_SRC ((uint8_t)0x04) /* Error raised by Idd */
179 #define MFXSTM32L152_TS_ERROR_SRC ((uint8_t)0x02) /* Error raised by Touch Screen */
180 #define MFXSTM32L152_GPIO_ERROR_SRC ((uint8_t)0x01) /* Error raised by Gpio */
181 
185 #define MFXSTM32L152_OUT_PIN_TYPE_OPENDRAIN ((uint8_t)0x00)
186 #define MFXSTM32L152_OUT_PIN_TYPE_PUSHPULL ((uint8_t)0x01)
187 #define MFXSTM32L152_OUT_PIN_POLARITY_LOW ((uint8_t)0x00)
188 #define MFXSTM32L152_OUT_PIN_POLARITY_HIGH ((uint8_t)0x02)
189 
193 #define MFXSTM32L152_IRQ_TS_OVF ((uint8_t)0x80) /* TouchScreen FIFO Overflow irq*/
194 #define MFXSTM32L152_IRQ_TS_FULL ((uint8_t)0x40) /* TouchScreen FIFO Full irq*/
195 #define MFXSTM32L152_IRQ_TS_TH ((uint8_t)0x20) /* TouchScreen FIFO threshold triggered irq*/
196 #define MFXSTM32L152_IRQ_TS_NE ((uint8_t)0x10) /* TouchScreen FIFO Not Empty irq*/
197 #define MFXSTM32L152_IRQ_TS_DET ((uint8_t)0x08) /* TouchScreen Detect irq*/
198 #define MFXSTM32L152_IRQ_ERROR ((uint8_t)0x04) /* Error message from MFXSTM32L152 firmware irq */
199 #define MFXSTM32L152_IRQ_IDD ((uint8_t)0x02) /* IDD function irq */
200 #define MFXSTM32L152_IRQ_GPIO ((uint8_t)0x01) /* General GPIO irq (only for SRC_EN and PENDING) */
201 #define MFXSTM32L152_IRQ_ALL ((uint8_t)0xFF) /* All global interrupts */
202 #define MFXSTM32L152_IRQ_TS (MFXSTM32L152_IRQ_TS_DET | MFXSTM32L152_IRQ_TS_NE | MFXSTM32L152_IRQ_TS_TH | MFXSTM32L152_IRQ_TS_FULL | MFXSTM32L152_IRQ_TS_OVF )
203 
204 
212 #define MFXSTM32L152_REG_ADR_GPIO_DIR1 ((uint8_t)0x60) /* gpio [0:7] */
213 #define MFXSTM32L152_REG_ADR_GPIO_DIR2 ((uint8_t)0x61) /* gpio [8:15] */
214 #define MFXSTM32L152_REG_ADR_GPIO_DIR3 ((uint8_t)0x62) /* agpio [0:7] */
215 
219 #define MFXSTM32L152_REG_ADR_GPIO_TYPE1 ((uint8_t)0x64) /* gpio [0:7] */
220 #define MFXSTM32L152_REG_ADR_GPIO_TYPE2 ((uint8_t)0x65) /* gpio [8:15] */
221 #define MFXSTM32L152_REG_ADR_GPIO_TYPE3 ((uint8_t)0x66) /* agpio [0:7] */
222 
225 #define MFXSTM32L152_REG_ADR_GPIO_PUPD1 ((uint8_t)0x68) /* gpio [0:7] */
226 #define MFXSTM32L152_REG_ADR_GPIO_PUPD2 ((uint8_t)0x69) /* gpio [8:15] */
227 #define MFXSTM32L152_REG_ADR_GPIO_PUPD3 ((uint8_t)0x6A) /* agpio [0:7] */
228 
231 #define MFXSTM32L152_REG_ADR_GPO_SET1 ((uint8_t)0x6C) /* gpio [0:7] */
232 #define MFXSTM32L152_REG_ADR_GPO_SET2 ((uint8_t)0x6D) /* gpio [8:15] */
233 #define MFXSTM32L152_REG_ADR_GPO_SET3 ((uint8_t)0x6E) /* agpio [0:7] */
234 
237 #define MFXSTM32L152_REG_ADR_GPO_CLR1 ((uint8_t)0x70) /* gpio [0:7] */
238 #define MFXSTM32L152_REG_ADR_GPO_CLR2 ((uint8_t)0x71) /* gpio [8:15] */
239 #define MFXSTM32L152_REG_ADR_GPO_CLR3 ((uint8_t)0x72) /* agpio [0:7] */
240 
243 #define MFXSTM32L152_REG_ADR_GPIO_STATE1 ((uint8_t)0x10) /* gpio [0:7] */
244 #define MFXSTM32L152_REG_ADR_GPIO_STATE2 ((uint8_t)0x11) /* gpio [8:15] */
245 #define MFXSTM32L152_REG_ADR_GPIO_STATE3 ((uint8_t)0x12) /* agpio [0:7] */
246 
250 /* GPIOs can INDIVIDUALLY generate interruption to the Main MCU thanks to the MFXSTM32L152_IRQ_OUT signal */
251 /* the general MFXSTM32L152_IRQ_GPIO_SRC_EN shall be enabled too */
255 #define MFXSTM32L152_REG_ADR_IRQ_GPI_SRC1 ((uint8_t)0x48) /* gpio [0:7] */
256 #define MFXSTM32L152_REG_ADR_IRQ_GPI_SRC2 ((uint8_t)0x49) /* gpio [8:15] */
257 #define MFXSTM32L152_REG_ADR_IRQ_GPI_SRC3 ((uint8_t)0x4A) /* agpio [0:7] */
258 
261 #define MFXSTM32L152_REG_ADR_IRQ_GPI_EVT1 ((uint8_t)0x4C) /* gpio [0:7] */
262 #define MFXSTM32L152_REG_ADR_IRQ_GPI_EVT2 ((uint8_t)0x4D) /* gpio [8:15] */
263 #define MFXSTM32L152_REG_ADR_IRQ_GPI_EVT3 ((uint8_t)0x4E) /* agpio [0:7] */
264 
267 #define MFXSTM32L152_REG_ADR_IRQ_GPI_TYPE1 ((uint8_t)0x50) /* gpio [0:7] */
268 #define MFXSTM32L152_REG_ADR_IRQ_GPI_TYPE2 ((uint8_t)0x51) /* gpio [8:15] */
269 #define MFXSTM32L152_REG_ADR_IRQ_GPI_TYPE3 ((uint8_t)0x52) /* agpio [0:7] */
270 
273 #define MFXSTM32L152_REG_ADR_IRQ_GPI_PENDING1 ((uint8_t)0x0C) /* gpio [0:7] */
274 #define MFXSTM32L152_REG_ADR_IRQ_GPI_PENDING2 ((uint8_t)0x0D) /* gpio [8:15] */
275 #define MFXSTM32L152_REG_ADR_IRQ_GPI_PENDING3 ((uint8_t)0x0E) /* agpio [0:7] */
276 
279 #define MFXSTM32L152_REG_ADR_IRQ_GPI_ACK1 ((uint8_t)0x54) /* gpio [0:7] */
280 #define MFXSTM32L152_REG_ADR_IRQ_GPI_ACK2 ((uint8_t)0x55) /* gpio [8:15] */
281 #define MFXSTM32L152_REG_ADR_IRQ_GPI_ACK3 ((uint8_t)0x56) /* agpio [0:7] */
282 
283 
287 #define MFXSTM32L152_GPIO_PIN_0 ((uint32_t)0x0001)
288 #define MFXSTM32L152_GPIO_PIN_1 ((uint32_t)0x0002)
289 #define MFXSTM32L152_GPIO_PIN_2 ((uint32_t)0x0004)
290 #define MFXSTM32L152_GPIO_PIN_3 ((uint32_t)0x0008)
291 #define MFXSTM32L152_GPIO_PIN_4 ((uint32_t)0x0010)
292 #define MFXSTM32L152_GPIO_PIN_5 ((uint32_t)0x0020)
293 #define MFXSTM32L152_GPIO_PIN_6 ((uint32_t)0x0040)
294 #define MFXSTM32L152_GPIO_PIN_7 ((uint32_t)0x0080)
295 
296 #define MFXSTM32L152_GPIO_PIN_8 ((uint32_t)0x0100)
297 #define MFXSTM32L152_GPIO_PIN_9 ((uint32_t)0x0200)
298 #define MFXSTM32L152_GPIO_PIN_10 ((uint32_t)0x0400)
299 #define MFXSTM32L152_GPIO_PIN_11 ((uint32_t)0x0800)
300 #define MFXSTM32L152_GPIO_PIN_12 ((uint32_t)0x1000)
301 #define MFXSTM32L152_GPIO_PIN_13 ((uint32_t)0x2000)
302 #define MFXSTM32L152_GPIO_PIN_14 ((uint32_t)0x4000)
303 #define MFXSTM32L152_GPIO_PIN_15 ((uint32_t)0x8000)
304 
305 #define MFXSTM32L152_GPIO_PIN_16 ((uint32_t)0x010000)
306 #define MFXSTM32L152_GPIO_PIN_17 ((uint32_t)0x020000)
307 #define MFXSTM32L152_GPIO_PIN_18 ((uint32_t)0x040000)
308 #define MFXSTM32L152_GPIO_PIN_19 ((uint32_t)0x080000)
309 #define MFXSTM32L152_GPIO_PIN_20 ((uint32_t)0x100000)
310 #define MFXSTM32L152_GPIO_PIN_21 ((uint32_t)0x200000)
311 #define MFXSTM32L152_GPIO_PIN_22 ((uint32_t)0x400000)
312 #define MFXSTM32L152_GPIO_PIN_23 ((uint32_t)0x800000)
313 
314 #define MFXSTM32L152_AGPIO_PIN_0 MFXSTM32L152_GPIO_PIN_16
315 #define MFXSTM32L152_AGPIO_PIN_1 MFXSTM32L152_GPIO_PIN_17
316 #define MFXSTM32L152_AGPIO_PIN_2 MFXSTM32L152_GPIO_PIN_18
317 #define MFXSTM32L152_AGPIO_PIN_3 MFXSTM32L152_GPIO_PIN_19
318 #define MFXSTM32L152_AGPIO_PIN_4 MFXSTM32L152_GPIO_PIN_20
319 #define MFXSTM32L152_AGPIO_PIN_5 MFXSTM32L152_GPIO_PIN_21
320 #define MFXSTM32L152_AGPIO_PIN_6 MFXSTM32L152_GPIO_PIN_22
321 #define MFXSTM32L152_AGPIO_PIN_7 MFXSTM32L152_GPIO_PIN_23
322 
323 #define MFXSTM32L152_GPIO_PINS_ALL ((uint32_t)0xFFFFFF)
324 
328 #define MFXSTM32L152_GPIO_DIR_IN ((uint8_t)0x0)
329 #define MFXSTM32L152_GPIO_DIR_OUT ((uint8_t)0x1)
330 #define MFXSTM32L152_IRQ_GPI_EVT_LEVEL ((uint8_t)0x0)
331 #define MFXSTM32L152_IRQ_GPI_EVT_EDGE ((uint8_t)0x1)
332 #define MFXSTM32L152_IRQ_GPI_TYPE_LLFE ((uint8_t)0x0) /* Low Level Falling Edge */
333 #define MFXSTM32L152_IRQ_GPI_TYPE_HLRE ((uint8_t)0x1) /*High Level Raising Edge */
334 #define MFXSTM32L152_GPI_WITHOUT_PULL_RESISTOR ((uint8_t)0x0)
335 #define MFXSTM32L152_GPI_WITH_PULL_RESISTOR ((uint8_t)0x1)
336 #define MFXSTM32L152_GPO_PUSH_PULL ((uint8_t)0x0)
337 #define MFXSTM32L152_GPO_OPEN_DRAIN ((uint8_t)0x1)
338 #define MFXSTM32L152_GPIO_PULL_DOWN ((uint8_t)0x0)
339 #define MFXSTM32L152_GPIO_PULL_UP ((uint8_t)0x1)
340 
341 
349 #define MFXSTM32L152_TS_SETTLING ((uint8_t)0xA0)
350 #define MFXSTM32L152_TS_TOUCH_DET_DELAY ((uint8_t)0xA1)
351 #define MFXSTM32L152_TS_AVE ((uint8_t)0xA2)
352 #define MFXSTM32L152_TS_TRACK ((uint8_t)0xA3)
353 #define MFXSTM32L152_TS_FIFO_TH ((uint8_t)0xA4)
354 #define MFXSTM32L152_TS_FIFO_STA ((uint8_t)0x20)
355 #define MFXSTM32L152_TS_FIFO_LEVEL ((uint8_t)0x21)
356 #define MFXSTM32L152_TS_XY_DATA ((uint8_t)0x24)
357 
361 #define MFXSTM32L152_TS_CTRL_STATUS ((uint8_t)0x08)
362 #define MFXSTM32L152_TS_CLEAR_FIFO ((uint8_t)0x80)
363 
364 
368 #define MFXSTM32L152_REG_ADR_IDD_CTRL ((uint8_t)0x80)
369 
373 #define MFXSTM32L152_REG_ADR_IDD_PRE_DELAY ((uint8_t)0x81)
374 
378 #define MFXSTM32L152_REG_ADR_IDD_SHUNT0_MSB ((uint8_t)0x82)
379 #define MFXSTM32L152_REG_ADR_IDD_SHUNT0_LSB ((uint8_t)0x83)
380 #define MFXSTM32L152_REG_ADR_IDD_SHUNT1_MSB ((uint8_t)0x84)
381 #define MFXSTM32L152_REG_ADR_IDD_SHUNT1_LSB ((uint8_t)0x85)
382 #define MFXSTM32L152_REG_ADR_IDD_SHUNT2_MSB ((uint8_t)0x86)
383 #define MFXSTM32L152_REG_ADR_IDD_SHUNT2_LSB ((uint8_t)0x87)
384 #define MFXSTM32L152_REG_ADR_IDD_SHUNT3_MSB ((uint8_t)0x88)
385 #define MFXSTM32L152_REG_ADR_IDD_SHUNT3_LSB ((uint8_t)0x89)
386 #define MFXSTM32L152_REG_ADR_IDD_SHUNT4_MSB ((uint8_t)0x8A)
387 #define MFXSTM32L152_REG_ADR_IDD_SHUNT4_LSB ((uint8_t)0x8B)
388 
392 #define MFXSTM32L152_REG_ADR_IDD_GAIN_MSB ((uint8_t)0x8C)
393 #define MFXSTM32L152_REG_ADR_IDD_GAIN_LSB ((uint8_t)0x8D)
394 
398 #define MFXSTM32L152_REG_ADR_IDD_VDD_MIN_MSB ((uint8_t)0x8E)
399 #define MFXSTM32L152_REG_ADR_IDD_VDD_MIN_LSB ((uint8_t)0x8F)
400 
404 #define MFXSTM32L152_REG_ADR_IDD_VALUE_MSB ((uint8_t)0x14)
405 #define MFXSTM32L152_REG_ADR_IDD_VALUE_MID ((uint8_t)0x15)
406 #define MFXSTM32L152_REG_ADR_IDD_VALUE_LSB ((uint8_t)0x16)
407 
411 #define MFXSTM32L152_REG_ADR_IDD_CAL_OFFSET_MSB ((uint8_t)0x18)
412 #define MFXSTM32L152_REG_ADR_IDD_CAL_OFFSET_LSB ((uint8_t)0x19)
413 
417 #define MFXSTM32L152_REG_ADR_IDD_SHUNT_USED ((uint8_t)0x1A)
418 
422 #define MFXSTM32L152_REG_ADR_IDD_SH0_STABILIZATION ((uint8_t)0x90)
423 #define MFXSTM32L152_REG_ADR_IDD_SH1_STABILIZATION ((uint8_t)0x91)
424 #define MFXSTM32L152_REG_ADR_IDD_SH2_STABILIZATION ((uint8_t)0x92)
425 #define MFXSTM32L152_REG_ADR_IDD_SH3_STABILIZATION ((uint8_t)0x93)
426 #define MFXSTM32L152_REG_ADR_IDD_SH4_STABILIZATION ((uint8_t)0x94)
427 
431 #define MFXSTM32L152_REG_ADR_IDD_NBR_OF_MEAS ((uint8_t)0x96)
432 
436 #define MFXSTM32L152_REG_ADR_IDD_MEAS_DELTA_DELAY ((uint8_t)0x97)
437 
441 #define MFXSTM32L152_REG_ADR_IDD_SHUNTS_ON_BOARD ((uint8_t)0x98)
442 
443 
444 
451 #define MFXSTM32L152_IDD_CTRL_REQ ((uint8_t)0x01)
452 #define MFXSTM32L152_IDD_CTRL_SHUNT_NB ((uint8_t)0x0E)
453 #define MFXSTM32L152_IDD_CTRL_VREF_DIS ((uint8_t)0x40)
454 #define MFXSTM32L152_IDD_CTRL_CAL_DIS ((uint8_t)0x80)
455 
459 #define MFXSTM32L152_IDD_SHUNT_NB_1 ((uint8_t) 0x01)
460 #define MFXSTM32L152_IDD_SHUNT_NB_2 ((uint8_t) 0x02)
461 #define MFXSTM32L152_IDD_SHUNT_NB_3 ((uint8_t) 0x03)
462 #define MFXSTM32L152_IDD_SHUNT_NB_4 ((uint8_t) 0x04)
463 #define MFXSTM32L152_IDD_SHUNT_NB_5 ((uint8_t) 0x05)
464 
468 #define MFXSTM32L152_IDD_VREF_AUTO_MEASUREMENT_ENABLE ((uint8_t) 0x00)
469 #define MFXSTM32L152_IDD_VREF_AUTO_MEASUREMENT_DISABLE ((uint8_t) 0x70)
470 
474 #define MFXSTM32L152_IDD_AUTO_CALIBRATION_ENABLE ((uint8_t) 0x00)
475 #define MFXSTM32L152_IDD_AUTO_CALIBRATION_DISABLE ((uint8_t) 0x80)
476 
486 #define MFXSTM32L152_IDD_PREDELAY_UNIT ((uint8_t) 0x80)
487 #define MFXSTM32L152_IDD_PREDELAY_VALUE ((uint8_t) 0x7F)
488 
489 
493 #define MFXSTM32L152_IDD_PREDELAY_0_5_MS ((uint8_t) 0x00)
494 #define MFXSTM32L152_IDD_PREDELAY_20_MS ((uint8_t) 0x80)
495 
505 #define MFXSTM32L152_IDD_DELTADELAY_UNIT ((uint8_t) 0x80)
506 #define MFXSTM32L152_IDD_DELTADELAY_VALUE ((uint8_t) 0x7F)
507 
508 
512 #define MFXSTM32L152_IDD_DELTADELAY_0_5_MS ((uint8_t) 0x00)
513 #define MFXSTM32L152_IDD_DELTADELAY_20_MS ((uint8_t) 0x80)
514 
515 
525 /* Exported macro ------------------------------------------------------------*/
526 
535 /* Exported functions --------------------------------------------------------*/
536 
544 void mfxstm32l152_Init(uint16_t DeviceAddr);
545 void mfxstm32l152_DeInit(uint16_t DeviceAddr);
546 void mfxstm32l152_Reset(uint16_t DeviceAddr);
547 uint16_t mfxstm32l152_ReadID(uint16_t DeviceAddr);
548 uint16_t mfxstm32l152_ReadFwVersion(uint16_t DeviceAddr);
549 void mfxstm32l152_LowPower(uint16_t DeviceAddr);
550 void mfxstm32l152_WakeUp(uint16_t DeviceAddr);
551 
552 void mfxstm32l152_EnableITSource(uint16_t DeviceAddr, uint8_t Source);
553 void mfxstm32l152_DisableITSource(uint16_t DeviceAddr, uint8_t Source);
554 uint8_t mfxstm32l152_GlobalITStatus(uint16_t DeviceAddr, uint8_t Source);
555 void mfxstm32l152_ClearGlobalIT(uint16_t DeviceAddr, uint8_t Source);
556 
557 void mfxstm32l152_SetIrqOutPinPolarity(uint16_t DeviceAddr, uint8_t Polarity);
558 void mfxstm32l152_SetIrqOutPinType(uint16_t DeviceAddr, uint8_t Type);
559 
560 
564 void mfxstm32l152_IO_Start(uint16_t DeviceAddr, uint32_t IO_Pin);
565 uint8_t mfxstm32l152_IO_Config(uint16_t DeviceAddr, uint32_t IO_Pin, IO_ModeTypedef IO_Mode);
566 void mfxstm32l152_IO_WritePin(uint16_t DeviceAddr, uint32_t IO_Pin, uint8_t PinState);
567 uint32_t mfxstm32l152_IO_ReadPin(uint16_t DeviceAddr, uint32_t IO_Pin);
568 void mfxstm32l152_IO_EnableIT(uint16_t DeviceAddr);
569 void mfxstm32l152_IO_DisableIT(uint16_t DeviceAddr);
570 uint32_t mfxstm32l152_IO_ITStatus(uint16_t DeviceAddr, uint32_t IO_Pin);
571 void mfxstm32l152_IO_ClearIT(uint16_t DeviceAddr, uint32_t IO_Pin);
572 
573 void mfxstm32l152_IO_InitPin(uint16_t DeviceAddr, uint32_t IO_Pin, uint8_t Direction);
574 void mfxstm32l152_IO_EnableAF(uint16_t DeviceAddr);
575 void mfxstm32l152_IO_DisableAF(uint16_t DeviceAddr);
576 void mfxstm32l152_IO_SetIrqTypeMode(uint16_t DeviceAddr, uint32_t IO_Pin, uint8_t Type);
577 void mfxstm32l152_IO_SetIrqEvtMode(uint16_t DeviceAddr, uint32_t IO_Pin, uint8_t Evt);
578 void mfxstm32l152_IO_EnablePinIT(uint16_t DeviceAddr, uint32_t IO_Pin);
579 void mfxstm32l152_IO_DisablePinIT(uint16_t DeviceAddr, uint32_t IO_Pin);
580 
584 void mfxstm32l152_TS_Start(uint16_t DeviceAddr);
585 uint8_t mfxstm32l152_TS_DetectTouch(uint16_t DeviceAddr);
586 void mfxstm32l152_TS_GetXY(uint16_t DeviceAddr, uint16_t *X, uint16_t *Y);
587 void mfxstm32l152_TS_EnableIT(uint16_t DeviceAddr);
588 void mfxstm32l152_TS_DisableIT(uint16_t DeviceAddr);
589 uint8_t mfxstm32l152_TS_ITStatus (uint16_t DeviceAddr);
590 void mfxstm32l152_TS_ClearIT (uint16_t DeviceAddr);
591 
595 void mfxstm32l152_IDD_Start(uint16_t DeviceAddr);
596 void mfxstm32l152_IDD_Config(uint16_t DeviceAddr, IDD_ConfigTypeDef MfxIddConfig);
597 void mfxstm32l152_IDD_ConfigShuntNbLimit(uint16_t DeviceAddr, uint8_t ShuntNbLimit);
598 void mfxstm32l152_IDD_GetValue(uint16_t DeviceAddr, uint32_t *ReadValue);
599 uint8_t mfxstm32l152_IDD_GetShuntUsed(uint16_t DeviceAddr);
600 void mfxstm32l152_IDD_EnableIT(uint16_t DeviceAddr);
601 void mfxstm32l152_IDD_ClearIT(uint16_t DeviceAddr);
602 uint8_t mfxstm32l152_IDD_GetITStatus(uint16_t DeviceAddr);
603 void mfxstm32l152_IDD_DisableIT(uint16_t DeviceAddr);
604 
608 uint8_t mfxstm32l152_Error_ReadSrc(uint16_t DeviceAddr);
609 uint8_t mfxstm32l152_Error_ReadMsg(uint16_t DeviceAddr);
610 void mfxstm32l152_Error_EnableIT(uint16_t DeviceAddr);
611 void mfxstm32l152_Error_ClearIT(uint16_t DeviceAddr);
612 uint8_t mfxstm32l152_Error_GetITStatus(uint16_t DeviceAddr);
613 void mfxstm32l152_Error_DisableIT(uint16_t DeviceAddr);
614 
615 uint8_t mfxstm32l152_ReadReg(uint16_t DeviceAddr, uint8_t RegAddr);
616 void mfxstm32l152_WriteReg(uint16_t DeviceAddr, uint8_t RegAddr, uint8_t Value);
617 
618 
619 
623 void MFX_IO_Init(void);
624 void MFX_IO_DeInit(void);
625 void MFX_IO_ITConfig (void);
626 void MFX_IO_EnableWakeupPin(void);
627 void MFX_IO_Wakeup(void);
628 void MFX_IO_Delay(uint32_t delay);
629 void MFX_IO_Write(uint16_t addr, uint8_t reg, uint8_t value);
630 uint8_t MFX_IO_Read(uint16_t addr, uint8_t reg);
631 uint16_t MFX_IO_ReadMultiple(uint16_t addr, uint8_t reg, uint8_t *buffer, uint16_t length);
632 
637 /* Touch screen driver structure */
639 
640 /* IO driver structure */
642 
643 /* IDD driver structure */
645 
646 
647 #ifdef __cplusplus
648 }
649 #endif
650 #endif /* __MFXSTM32L152_H */
651 
652 
668 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
void mfxstm32l152_IDD_Config(uint16_t DeviceAddr, IDD_ConfigTypeDef MfxIddConfig)
Configures the IDD current measurement.
uint8_t IDD_GAIN_LSB
Definition: mfxstm32l152.h:90
uint8_t mfxstm32l152_IDD_GetShuntUsed(uint16_t DeviceAddr)
Get Last shunt used for measurement.
uint8_t IDD_PRE_DELAY
Definition: mfxstm32l152.h:78
uint8_t IRQ_PENDING
Definition: mfxstm32l152.h:76
void MFX_IO_Wakeup(void)
void MFX_IO_Delay(uint32_t delay)
uint8_t IDD_SHUNT3_MSB
Definition: mfxstm32l152.h:85
uint8_t IDD_SHUNT3_LSB
Definition: mfxstm32l152.h:86
void mfxstm32l152_DisableITSource(uint16_t DeviceAddr, uint8_t Source)
Disable the interrupt mode for the selected IT source.
Definition: mfxstm32l152.c:345
uint8_t mfxstm32l152_Error_GetITStatus(uint16_t DeviceAddr)
get Error interrupt status
void mfxstm32l152_EnableITSource(uint16_t DeviceAddr, uint8_t Source)
Enable the interrupt mode for the selected IT source.
Definition: mfxstm32l152.c:317
void mfxstm32l152_IDD_EnableIT(uint16_t DeviceAddr)
Configure mfx to enable Idd interrupt.
void MFX_IO_EnableWakeupPin(void)
uint8_t mfxstm32l152_IDD_GetITStatus(uint16_t DeviceAddr)
get Idd interrupt status
uint8_t IDD_SHUNT0_MSB
Definition: mfxstm32l152.h:79
TS_DrvTypeDef mfxstm32l152_ts_drv
Definition: mfxstm32l152.c:80
uint8_t mfxstm32l152_TS_DetectTouch(uint16_t DeviceAddr)
Return if there is touch detected or not.
uint8_t SYS_CTRL
Definition: mfxstm32l152.h:71
void mfxstm32l152_IDD_ClearIT(uint16_t DeviceAddr)
Clear Idd global interrupt.
void mfxstm32l152_TS_EnableIT(uint16_t DeviceAddr)
Configure the selected source to generate a global interrupt or not.
uint16_t mfxstm32l152_ReadID(uint16_t DeviceAddr)
Read the MFXSTM32L152 IO Expander device ID.
Definition: mfxstm32l152.c:272
void mfxstm32l152_IO_DisableIT(uint16_t DeviceAddr)
Disable the global IO interrupt source.
Definition: mfxstm32l152.c:841
IDD_DrvTypeDef mfxstm32l152_idd_drv
Definition: mfxstm32l152.c:115
void mfxstm32l152_TS_Start(uint16_t DeviceAddr)
MFXSTM32L152 Touch screen functionalities functions.
Definition: mfxstm32l152.c:993
IO_ModeTypedef
Definition: io.h:74
void mfxstm32l152_IDD_GetValue(uint16_t DeviceAddr, uint32_t *ReadValue)
Get Idd current value.
uint8_t mfxstm32l152_TS_ITStatus(uint16_t DeviceAddr)
Configure the selected source to generate a global interrupt or not.
uint8_t mfxstm32l152_ReadReg(uint16_t DeviceAddr, uint8_t RegAddr)
FOR DEBUG ONLY.
void mfxstm32l152_SetIrqOutPinType(uint16_t DeviceAddr, uint8_t Type)
Set the global interrupt Type of IRQ_OUT_PIN.
Definition: mfxstm32l152.c:439
void mfxstm32l152_IO_WritePin(uint16_t DeviceAddr, uint32_t IO_Pin, uint8_t PinState)
When GPIO is in output mode, puts the corresponding GPO in High (1) or Low (0) level.
Definition: mfxstm32l152.c:786
uint8_t ERROR_SRC
Definition: mfxstm32l152.h:72
void mfxstm32l152_Init(uint16_t DeviceAddr)
MFXSTM32L152 Control functions.
Definition: mfxstm32l152.c:168
void mfxstm32l152_WakeUp(uint16_t DeviceAddr)
WakeUp mfxstm32l152 from standby mode.
Definition: mfxstm32l152.c:249
uint8_t IDD_SHUNT2_LSB
Definition: mfxstm32l152.h:84
uint8_t ERROR_MSG
Definition: mfxstm32l152.h:73
void mfxstm32l152_IO_DisableAF(uint16_t DeviceAddr)
Disable the AF for aGPIO.
Definition: mfxstm32l152.c:961
void mfxstm32l152_IDD_Start(uint16_t DeviceAddr)
MFXSTM32L152 IDD current measurement functionalities functions.
void mfxstm32l152_SetIrqOutPinPolarity(uint16_t DeviceAddr, uint8_t Polarity)
Set the global interrupt Polarity of IRQ_OUT_PIN.
Definition: mfxstm32l152.c:410
void mfxstm32l152_IO_SetIrqEvtMode(uint16_t DeviceAddr, uint32_t IO_Pin, uint8_t Evt)
Set the global interrupt Type.
Definition: mfxstm32l152.c:753
void mfxstm32l152_TS_ClearIT(uint16_t DeviceAddr)
Configure the selected source to generate a global interrupt or not.
void MFX_IO_Write(uint16_t addr, uint8_t reg, uint8_t value)
void mfxstm32l152_TS_GetXY(uint16_t DeviceAddr, uint16_t *X, uint16_t *Y)
Get the touch screen X and Y positions values.
uint16_t MFX_IO_ReadMultiple(uint16_t addr, uint8_t reg, uint8_t *buffer, uint16_t length)
uint8_t IDD_SHUNT1_LSB
Definition: mfxstm32l152.h:82
void mfxstm32l152_IO_ClearIT(uint16_t DeviceAddr, uint32_t IO_Pin)
Clear the selected IO interrupt pending bit(s). It clear automatically also the general MFXSTM32L152_...
Definition: mfxstm32l152.c:903
uint8_t mfxstm32l152_IO_Config(uint16_t DeviceAddr, uint32_t IO_Pin, IO_ModeTypedef IO_Mode)
Configures the IO pin(s) according to IO mode structure value.
Definition: mfxstm32l152.c:535
uint8_t IDD_CAL_OFFSET_LSB
Definition: mfxstm32l152.h:97
uint8_t MFX_IO_Read(uint16_t addr, uint8_t reg)
uint8_t mfxstm32l152_Error_ReadMsg(uint16_t DeviceAddr)
Read Error Message.
uint8_t IDD_SHUNT2_MSB
Definition: mfxstm32l152.h:83
uint8_t IRQ_SRC_EN
Definition: mfxstm32l152.h:75
uint8_t IRQ_OUT
Definition: mfxstm32l152.h:74
void mfxstm32l152_DeInit(uint16_t DeviceAddr)
DeInitialize the mfxstm32l152 and unconfigure the needed hardware resources.
Definition: mfxstm32l152.c:201
void mfxstm32l152_Error_DisableIT(uint16_t DeviceAddr)
disable Error interrupt
uint8_t mfxstm32l152_GlobalITStatus(uint16_t DeviceAddr, uint8_t Source)
Returns the selected Global interrupt source pending bit value.
Definition: mfxstm32l152.c:374
uint8_t mfxstm32l152_Error_ReadSrc(uint16_t DeviceAddr)
MFXSTM32L152 Error management functions.
void MFX_IO_Init(void)
iobus prototypes (they should be defined in common/stm32_iobus.h)
void mfxstm32l152_IO_SetIrqTypeMode(uint16_t DeviceAddr, uint32_t IO_Pin, uint8_t Type)
Configure the Edge for which a transition is detectable for the selected pin.
Definition: mfxstm32l152.c:771
void mfxstm32l152_Error_EnableIT(uint16_t DeviceAddr)
Enable Error global interrupt.
void mfxstm32l152_WriteReg(uint16_t DeviceAddr, uint8_t RegAddr, uint8_t Value)
void mfxstm32l152_IO_EnablePinIT(uint16_t DeviceAddr, uint32_t IO_Pin)
Enable interrupt mode for the selected IO pin(s).
Definition: mfxstm32l152.c:855
void mfxstm32l152_IO_Start(uint16_t DeviceAddr, uint32_t IO_Pin)
MFXSTM32L152 IO functionalities functions.
Definition: mfxstm32l152.c:472
void mfxstm32l152_IO_EnableIT(uint16_t DeviceAddr)
Enable the global IO interrupt source.
Definition: mfxstm32l152.c:828
void MFX_IO_ITConfig(void)
uint8_t IDD_SHUNT0_LSB
Definition: mfxstm32l152.h:80
uint8_t IDD_VDD_MIN_MSB
Definition: mfxstm32l152.h:91
uint8_t IDD_CAL_OFFSET_MSB
Definition: mfxstm32l152.h:96
void mfxstm32l152_IO_DisablePinIT(uint16_t DeviceAddr, uint32_t IO_Pin)
Disable interrupt mode for the selected IO pin(s).
Definition: mfxstm32l152.c:868
uint8_t IDD_VALUE_MID
Definition: mfxstm32l152.h:94
uint16_t mfxstm32l152_ReadFwVersion(uint16_t DeviceAddr)
Read the MFXSTM32L152 device firmware version.
Definition: mfxstm32l152.c:293
uint8_t IDD_VALUE_LSB
Definition: mfxstm32l152.h:95
void mfxstm32l152_IDD_DisableIT(uint16_t DeviceAddr)
disable Idd interrupt
uint8_t IDD_GAIN_MSB
Definition: mfxstm32l152.h:89
uint8_t IDD_SHUNT1_MSB
Definition: mfxstm32l152.h:81
void mfxstm32l152_IDD_ConfigShuntNbLimit(uint16_t DeviceAddr, uint8_t ShuntNbLimit)
This function allows to modify number of shunt used for a measurement.
void mfxstm32l152_Error_ClearIT(uint16_t DeviceAddr)
Clear Error global interrupt.
void mfxstm32l152_Reset(uint16_t DeviceAddr)
Reset the mfxstm32l152 by Software.
Definition: mfxstm32l152.c:221
uint8_t IDD_VALUE_MSB
Definition: mfxstm32l152.h:93
void mfxstm32l152_IO_EnableAF(uint16_t DeviceAddr)
Enable the AF for aGPIO.
Definition: mfxstm32l152.c:935
void mfxstm32l152_LowPower(uint16_t DeviceAddr)
Put mfxstm32l152 Device in Low Power standby mode.
Definition: mfxstm32l152.c:235
IO_DrvTypeDef mfxstm32l152_io_drv
Definition: mfxstm32l152.c:97
uint32_t mfxstm32l152_IO_ReadPin(uint16_t DeviceAddr, uint32_t IO_Pin)
Return the state of the selected IO pin(s).
Definition: mfxstm32l152.c:809
void mfxstm32l152_ClearGlobalIT(uint16_t DeviceAddr, uint8_t Source)
Clear the selected Global interrupt pending bit(s)
Definition: mfxstm32l152.c:396
uint8_t IDD_SHUNT_USED
Definition: mfxstm32l152.h:98
void mfxstm32l152_IO_InitPin(uint16_t DeviceAddr, uint32_t IO_Pin, uint8_t Direction)
Initialize the selected IO pin direction.
Definition: mfxstm32l152.c:737
void mfxstm32l152_TS_DisableIT(uint16_t DeviceAddr)
Configure the selected source to generate a global interrupt or not.
uint8_t IDD_VDD_MIN_LSB
Definition: mfxstm32l152.h:92
uint32_t mfxstm32l152_IO_ITStatus(uint16_t DeviceAddr, uint32_t IO_Pin)
Check the status of the selected IO interrupt pending bit.
Definition: mfxstm32l152.c:881
void MFX_IO_DeInit(void)
uint8_t IDD_SHUNT4_MSB
Definition: mfxstm32l152.h:87
uint8_t IDD_CTRL
Definition: mfxstm32l152.h:77
uint8_t IDD_SHUNT4_LSB
Definition: mfxstm32l152.h:88