mfxstm32l152.h 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853
  1. /**
  2. ******************************************************************************
  3. * @file mfxstm32l152.h
  4. * @author MCD Application Team
  5. * @brief This file contains all the functions prototypes for the
  6. * mfxstm32l152.c IO expander driver.
  7. ******************************************************************************
  8. * @attention
  9. *
  10. * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
  11. *
  12. * Redistribution and use in source and binary forms, with or without modification,
  13. * are permitted provided that the following conditions are met:
  14. * 1. Redistributions of source code must retain the above copyright notice,
  15. * this list of conditions and the following disclaimer.
  16. * 2. Redistributions in binary form must reproduce the above copyright notice,
  17. * this list of conditions and the following disclaimer in the documentation
  18. * and/or other materials provided with the distribution.
  19. * 3. Neither the name of STMicroelectronics nor the names of its contributors
  20. * may be used to endorse or promote products derived from this software
  21. * without specific prior written permission.
  22. *
  23. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  24. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  25. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  26. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  27. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  28. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  29. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  30. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  31. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  32. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  33. *
  34. ******************************************************************************
  35. */
  36. /* Define to prevent recursive inclusion -------------------------------------*/
  37. #ifndef __MFXSTM32L152_H
  38. #define __MFXSTM32L152_H
  39. #include "board.h"
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43. /** @addtogroup BSP
  44. * @{
  45. */
  46. /** @addtogroup Component
  47. * @{
  48. */
  49. /** @defgroup MFXSTM32L152
  50. * @{
  51. */
  52. /**
  53. * @brief GPIO: IO Pins definition
  54. */
  55. #define MFXSTM32L152_GPIO_PIN_0 ((uint32_t)0x0001)
  56. #define MFXSTM32L152_GPIO_PIN_1 ((uint32_t)0x0002)
  57. #define MFXSTM32L152_GPIO_PIN_2 ((uint32_t)0x0004)
  58. #define MFXSTM32L152_GPIO_PIN_3 ((uint32_t)0x0008)
  59. #define MFXSTM32L152_GPIO_PIN_4 ((uint32_t)0x0010)
  60. #define MFXSTM32L152_GPIO_PIN_5 ((uint32_t)0x0020)
  61. #define MFXSTM32L152_GPIO_PIN_6 ((uint32_t)0x0040)
  62. #define MFXSTM32L152_GPIO_PIN_7 ((uint32_t)0x0080)
  63. #define MFXSTM32L152_GPIO_PIN_8 ((uint32_t)0x0100)
  64. #define MFXSTM32L152_GPIO_PIN_9 ((uint32_t)0x0200)
  65. #define MFXSTM32L152_GPIO_PIN_10 ((uint32_t)0x0400)
  66. #define MFXSTM32L152_GPIO_PIN_11 ((uint32_t)0x0800)
  67. #define MFXSTM32L152_GPIO_PIN_12 ((uint32_t)0x1000)
  68. #define MFXSTM32L152_GPIO_PIN_13 ((uint32_t)0x2000)
  69. #define MFXSTM32L152_GPIO_PIN_14 ((uint32_t)0x4000)
  70. #define MFXSTM32L152_GPIO_PIN_15 ((uint32_t)0x8000)
  71. #define MFXSTM32L152_GPIO_PIN_16 ((uint32_t)0x010000)
  72. #define MFXSTM32L152_GPIO_PIN_17 ((uint32_t)0x020000)
  73. #define MFXSTM32L152_GPIO_PIN_18 ((uint32_t)0x040000)
  74. #define MFXSTM32L152_GPIO_PIN_19 ((uint32_t)0x080000)
  75. #define MFXSTM32L152_GPIO_PIN_20 ((uint32_t)0x100000)
  76. #define MFXSTM32L152_GPIO_PIN_21 ((uint32_t)0x200000)
  77. #define MFXSTM32L152_GPIO_PIN_22 ((uint32_t)0x400000)
  78. #define MFXSTM32L152_GPIO_PIN_23 ((uint32_t)0x800000)
  79. #define MFXSTM32L152_AGPIO_PIN_0 MFXSTM32L152_GPIO_PIN_16
  80. #define MFXSTM32L152_AGPIO_PIN_1 MFXSTM32L152_GPIO_PIN_17
  81. #define MFXSTM32L152_AGPIO_PIN_2 MFXSTM32L152_GPIO_PIN_18
  82. #define MFXSTM32L152_AGPIO_PIN_3 MFXSTM32L152_GPIO_PIN_19
  83. #define MFXSTM32L152_AGPIO_PIN_4 MFXSTM32L152_GPIO_PIN_20
  84. #define MFXSTM32L152_AGPIO_PIN_5 MFXSTM32L152_GPIO_PIN_21
  85. #define MFXSTM32L152_AGPIO_PIN_6 MFXSTM32L152_GPIO_PIN_22
  86. #define MFXSTM32L152_AGPIO_PIN_7 MFXSTM32L152_GPIO_PIN_23
  87. #define MFXSTM32L152_GPIO_PINS_ALL ((uint32_t)0xFFFFFF)
  88. #define IO_PIN_ALL MFXSTM32L152_GPIO_PINS_ALL
  89. /**
  90. * @brief IO Bit SET and Bit RESET enumeration
  91. */
  92. typedef enum
  93. {
  94. IO_PIN_RESET = 0,
  95. IO_PIN_SET
  96. }IO_PinState;
  97. typedef enum
  98. {
  99. IO_MODE_INPUT = 0, /* input floating */
  100. IO_MODE_OUTPUT, /* output Push Pull */
  101. IO_MODE_IT_RISING_EDGE, /* float input - irq detect on rising edge */
  102. IO_MODE_IT_FALLING_EDGE, /* float input - irq detect on falling edge */
  103. IO_MODE_IT_LOW_LEVEL, /* float input - irq detect on low level */
  104. IO_MODE_IT_HIGH_LEVEL, /* float input - irq detect on high level */
  105. /* following modes only available on MFX*/
  106. IO_MODE_ANALOG, /* analog mode */
  107. IO_MODE_OFF, /* when pin isn't used*/
  108. IO_MODE_INPUT_PU, /* input with internal pull up resistor */
  109. IO_MODE_INPUT_PD, /* input with internal pull down resistor */
  110. IO_MODE_OUTPUT_OD, /* Open Drain output without internal resistor */
  111. IO_MODE_OUTPUT_OD_PU, /* Open Drain output with internal pullup resistor */
  112. IO_MODE_OUTPUT_OD_PD, /* Open Drain output with internal pulldown resistor */
  113. IO_MODE_OUTPUT_PP, /* PushPull output without internal resistor */
  114. IO_MODE_OUTPUT_PP_PU, /* PushPull output with internal pullup resistor */
  115. IO_MODE_OUTPUT_PP_PD, /* PushPull output with internal pulldown resistor */
  116. IO_MODE_IT_RISING_EDGE_PU, /* push up resistor input - irq on rising edge */
  117. IO_MODE_IT_RISING_EDGE_PD, /* push dw resistor input - irq on rising edge */
  118. IO_MODE_IT_FALLING_EDGE_PU, /* push up resistor input - irq on falling edge */
  119. IO_MODE_IT_FALLING_EDGE_PD, /* push dw resistor input - irq on falling edge */
  120. IO_MODE_IT_LOW_LEVEL_PU, /* push up resistor input - irq detect on low level */
  121. IO_MODE_IT_LOW_LEVEL_PD, /* push dw resistor input - irq detect on low level */
  122. IO_MODE_IT_HIGH_LEVEL_PU, /* push up resistor input - irq detect on high level */
  123. IO_MODE_IT_HIGH_LEVEL_PD, /* push dw resistor input - irq detect on high level */
  124. }IO_ModeTypedef;
  125. /** @defgroup IO_Driver_structure IO Driver structure
  126. * @{
  127. */
  128. typedef struct
  129. {
  130. void (*Init)(uint16_t);
  131. uint16_t (*ReadID)(uint16_t);
  132. void (*Reset)(uint16_t);
  133. void (*Start)(uint16_t, uint32_t);
  134. uint8_t (*Config)(uint16_t, uint32_t, IO_ModeTypedef);
  135. void (*WritePin)(uint16_t, uint32_t, uint8_t);
  136. uint32_t (*ReadPin)(uint16_t, uint32_t);
  137. void (*EnableIT)(uint16_t);
  138. void (*DisableIT)(uint16_t);
  139. uint32_t (*ITStatus)(uint16_t, uint32_t);
  140. void (*ClearIT)(uint16_t, uint32_t);
  141. }IO_DrvTypeDef;
  142. typedef struct
  143. {
  144. uint16_t AmpliGain; /*!< Specifies ampli gain value
  145. */
  146. uint16_t VddMin; /*!< Specifies minimum MCU VDD can reach to protect MCU from reset
  147. */
  148. uint16_t Shunt0Value; /*!< Specifies value of Shunt 0 if existing
  149. */
  150. uint16_t Shunt1Value; /*!< Specifies value of Shunt 1 if existing
  151. */
  152. uint16_t Shunt2Value; /*!< Specifies value of Shunt 2 if existing
  153. */
  154. uint16_t Shunt3Value; /*!< Specifies value of Shunt 3 if existing
  155. */
  156. uint16_t Shunt4Value; /*!< Specifies value of Shunt 4 if existing
  157. */
  158. uint16_t Shunt0StabDelay; /*!< Specifies delay of Shunt 0 stabilization if existing
  159. */
  160. uint16_t Shunt1StabDelay; /*!< Specifies delay of Shunt 1 stabilization if existing
  161. */
  162. uint16_t Shunt2StabDelay; /*!< Specifies delay of Shunt 2 stabilization if existing
  163. */
  164. uint16_t Shunt3StabDelay; /*!< Specifies delay of Shunt 3 stabilization if existing
  165. */
  166. uint16_t Shunt4StabDelay; /*!< Specifies delay of Shunt 4 stabilization if existing
  167. */
  168. uint8_t ShuntNbOnBoard; /*!< Specifies number of shunts that are present on board
  169. This parameter can be a value of @ref IDD_shunt_number */
  170. uint8_t ShuntNbUsed; /*!< Specifies number of shunts used for measurement
  171. This parameter can be a value of @ref IDD_shunt_number */
  172. uint8_t VrefMeasurement; /*!< Specifies if Vref is automatically measured before each Idd measurement
  173. This parameter can be a value of @ref IDD_Vref_Measurement */
  174. uint8_t Calibration; /*!< Specifies if calibration is done before each Idd measurement
  175. */
  176. uint8_t PreDelayUnit; /*!< Specifies Pre delay unit
  177. This parameter can be a value of @ref IDD_PreDelay */
  178. uint8_t PreDelayValue; /*!< Specifies Pre delay value in selected unit
  179. */
  180. uint8_t MeasureNb; /*!< Specifies number of Measure to be performed
  181. This parameter can be a value between 1 and 256 */
  182. uint8_t DeltaDelayUnit; /*!< Specifies Delta delay unit
  183. This parameter can be a value of @ref IDD_DeltaDelay */
  184. uint8_t DeltaDelayValue; /*!< Specifies Delta delay between 2 measures
  185. value can be between 1 and 128 */
  186. }IDD_ConfigTypeDef;
  187. /**
  188. * @}
  189. */
  190. /** @defgroup IDD_Driver_structure IDD Driver structure
  191. * @{
  192. */
  193. typedef struct
  194. {
  195. void (*Init)(uint16_t);
  196. void (*DeInit)(uint16_t);
  197. uint16_t (*ReadID)(uint16_t);
  198. void (*Reset)(uint16_t);
  199. void (*LowPower)(uint16_t);
  200. void (*WakeUp)(uint16_t);
  201. void (*Start)(uint16_t);
  202. void (*Config)(uint16_t,IDD_ConfigTypeDef);
  203. void (*GetValue)(uint16_t, uint32_t *);
  204. void (*EnableIT)(uint16_t);
  205. void (*ClearIT)(uint16_t);
  206. uint8_t (*GetITStatus)(uint16_t);
  207. void (*DisableIT)(uint16_t);
  208. void (*ErrorEnableIT)(uint16_t);
  209. void (*ErrorClearIT)(uint16_t);
  210. uint8_t (*ErrorGetITStatus)(uint16_t);
  211. void (*ErrorDisableIT)(uint16_t);
  212. uint8_t (*ErrorGetSrc)(uint16_t);
  213. uint8_t (*ErrorGetCode)(uint16_t);
  214. }IDD_DrvTypeDef;
  215. typedef struct
  216. {
  217. void (*Init)(uint16_t);
  218. uint16_t (*ReadID)(uint16_t);
  219. void (*Reset)(uint16_t);
  220. void (*Start)(uint16_t);
  221. uint8_t (*DetectTouch)(uint16_t);
  222. void (*GetXY)(uint16_t, uint16_t*, uint16_t*);
  223. void (*EnableIT)(uint16_t);
  224. void (*ClearIT)(uint16_t);
  225. uint8_t (*GetITStatus)(uint16_t);
  226. void (*DisableIT)(uint16_t);
  227. }TS_DrvTypeDef;
  228. /* Exported types ------------------------------------------------------------*/
  229. /** @defgroup MFXSTM32L152_Exported_Types
  230. * @{
  231. */
  232. typedef struct
  233. {
  234. uint8_t SYS_CTRL;
  235. uint8_t ERROR_SRC;
  236. uint8_t ERROR_MSG;
  237. uint8_t IRQ_OUT;
  238. uint8_t IRQ_SRC_EN;
  239. uint8_t IRQ_PENDING;
  240. uint8_t IDD_CTRL;
  241. uint8_t IDD_PRE_DELAY;
  242. uint8_t IDD_SHUNT0_MSB;
  243. uint8_t IDD_SHUNT0_LSB;
  244. uint8_t IDD_SHUNT1_MSB;
  245. uint8_t IDD_SHUNT1_LSB;
  246. uint8_t IDD_SHUNT2_MSB;
  247. uint8_t IDD_SHUNT2_LSB;
  248. uint8_t IDD_SHUNT3_MSB;
  249. uint8_t IDD_SHUNT3_LSB;
  250. uint8_t IDD_SHUNT4_MSB;
  251. uint8_t IDD_SHUNT4_LSB;
  252. uint8_t IDD_GAIN_MSB;
  253. uint8_t IDD_GAIN_LSB;
  254. uint8_t IDD_VDD_MIN_MSB;
  255. uint8_t IDD_VDD_MIN_LSB;
  256. uint8_t IDD_VALUE_MSB;
  257. uint8_t IDD_VALUE_MID;
  258. uint8_t IDD_VALUE_LSB;
  259. uint8_t IDD_CAL_OFFSET_MSB;
  260. uint8_t IDD_CAL_OFFSET_LSB;
  261. uint8_t IDD_SHUNT_USED;
  262. }IDD_dbgTypeDef;
  263. /**
  264. * @}
  265. */
  266. /* Exported constants --------------------------------------------------------*/
  267. /** @defgroup MFXSTM32L152_Exported_Constants
  268. * @{
  269. */
  270. /**
  271. * @brief MFX COMMON defines
  272. */
  273. /**
  274. * @brief Register address: chip IDs (R)
  275. */
  276. #define MFXSTM32L152_REG_ADR_ID ((uint8_t)0x00)
  277. /**
  278. * @brief Register address: chip FW_VERSION (R)
  279. */
  280. #define MFXSTM32L152_REG_ADR_FW_VERSION_MSB ((uint8_t)0x01)
  281. #define MFXSTM32L152_REG_ADR_FW_VERSION_LSB ((uint8_t)0x00)
  282. /**
  283. * @brief Register address: System Control Register (R/W)
  284. */
  285. #define MFXSTM32L152_REG_ADR_SYS_CTRL ((uint8_t)0x40)
  286. /**
  287. * @brief Register address: Vdd monitoring (R)
  288. */
  289. #define MFXSTM32L152_REG_ADR_VDD_REF_MSB ((uint8_t)0x06)
  290. #define MFXSTM32L152_REG_ADR_VDD_REF_LSB ((uint8_t)0x07)
  291. /**
  292. * @brief Register address: Error source
  293. */
  294. #define MFXSTM32L152_REG_ADR_ERROR_SRC ((uint8_t)0x03)
  295. /**
  296. * @brief Register address: Error Message
  297. */
  298. #define MFXSTM32L152_REG_ADR_ERROR_MSG ((uint8_t)0x04)
  299. /**
  300. * @brief Reg Addr IRQs: to config the pin that informs Main MCU that MFX events appear
  301. */
  302. #define MFXSTM32L152_REG_ADR_MFX_IRQ_OUT ((uint8_t)0x41)
  303. /**
  304. * @brief Reg Addr IRQs: to select the events which activate the MFXSTM32L152_IRQ_OUT signal
  305. */
  306. #define MFXSTM32L152_REG_ADR_IRQ_SRC_EN ((uint8_t)0x42)
  307. /**
  308. * @brief Reg Addr IRQs: the Main MCU must read the IRQ_PENDING register to know the interrupt reason
  309. */
  310. #define MFXSTM32L152_REG_ADR_IRQ_PENDING ((uint8_t)0x08)
  311. /**
  312. * @brief Reg Addr IRQs: the Main MCU must acknowledge it thanks to a writing access to the IRQ_ACK register
  313. */
  314. #define MFXSTM32L152_REG_ADR_IRQ_ACK ((uint8_t)0x44)
  315. /**
  316. * @brief MFXSTM32L152_REG_ADR_ID choices
  317. */
  318. #define MFXSTM32L152_ID_1 ((uint8_t)0x7B)
  319. #define MFXSTM32L152_ID_2 ((uint8_t)0x79)
  320. /**
  321. * @brief MFXSTM32L152_REG_ADR_SYS_CTRL choices
  322. */
  323. #define MFXSTM32L152_SWRST ((uint8_t)0x80)
  324. #define MFXSTM32L152_STANDBY ((uint8_t)0x40)
  325. #define MFXSTM32L152_ALTERNATE_GPIO_EN ((uint8_t)0x08) /* by the way if IDD and TS are enabled they take automatically the AF pins*/
  326. #define MFXSTM32L152_IDD_EN ((uint8_t)0x04)
  327. #define MFXSTM32L152_TS_EN ((uint8_t)0x02)
  328. #define MFXSTM32L152_GPIO_EN ((uint8_t)0x01)
  329. /**
  330. * @brief MFXSTM32L152_REG_ADR_ERROR_SRC choices
  331. */
  332. #define MFXSTM32L152_IDD_ERROR_SRC ((uint8_t)0x04) /* Error raised by Idd */
  333. #define MFXSTM32L152_TS_ERROR_SRC ((uint8_t)0x02) /* Error raised by Touch Screen */
  334. #define MFXSTM32L152_GPIO_ERROR_SRC ((uint8_t)0x01) /* Error raised by Gpio */
  335. /**
  336. * @brief MFXSTM32L152_REG_ADR_MFX_IRQ_OUT choices
  337. */
  338. #define MFXSTM32L152_OUT_PIN_TYPE_OPENDRAIN ((uint8_t)0x00)
  339. #define MFXSTM32L152_OUT_PIN_TYPE_PUSHPULL ((uint8_t)0x01)
  340. #define MFXSTM32L152_OUT_PIN_POLARITY_LOW ((uint8_t)0x00)
  341. #define MFXSTM32L152_OUT_PIN_POLARITY_HIGH ((uint8_t)0x02)
  342. /**
  343. * @brief REG_ADR_IRQ_SRC_EN, REG_ADR_IRQ_PENDING & REG_ADR_IRQ_ACK choices
  344. */
  345. #define MFXSTM32L152_IRQ_TS_OVF ((uint8_t)0x80) /* TouchScreen FIFO Overflow irq*/
  346. #define MFXSTM32L152_IRQ_TS_FULL ((uint8_t)0x40) /* TouchScreen FIFO Full irq*/
  347. #define MFXSTM32L152_IRQ_TS_TH ((uint8_t)0x20) /* TouchScreen FIFO threshold triggered irq*/
  348. #define MFXSTM32L152_IRQ_TS_NE ((uint8_t)0x10) /* TouchScreen FIFO Not Empty irq*/
  349. #define MFXSTM32L152_IRQ_TS_DET ((uint8_t)0x08) /* TouchScreen Detect irq*/
  350. #define MFXSTM32L152_IRQ_ERROR ((uint8_t)0x04) /* Error message from MFXSTM32L152 firmware irq */
  351. #define MFXSTM32L152_IRQ_IDD ((uint8_t)0x02) /* IDD function irq */
  352. #define MFXSTM32L152_IRQ_GPIO ((uint8_t)0x01) /* General GPIO irq (only for SRC_EN and PENDING) */
  353. #define MFXSTM32L152_IRQ_ALL ((uint8_t)0xFF) /* All global interrupts */
  354. #define MFXSTM32L152_IRQ_TS (MFXSTM32L152_IRQ_TS_DET | MFXSTM32L152_IRQ_TS_NE | MFXSTM32L152_IRQ_TS_TH | MFXSTM32L152_IRQ_TS_FULL | MFXSTM32L152_IRQ_TS_OVF )
  355. /**
  356. * @brief GPIO: 24 programmable input/output called MFXSTM32L152_GPIO[23:0] are provided
  357. */
  358. /**
  359. * @brief Reg addr: GPIO DIRECTION (R/W): GPIO pins direction: (0) input, (1) output.
  360. */
  361. #define MFXSTM32L152_REG_ADR_GPIO_DIR1 ((uint8_t)0x60) /* gpio [0:7] */
  362. #define MFXSTM32L152_REG_ADR_GPIO_DIR2 ((uint8_t)0x61) /* gpio [8:15] */
  363. #define MFXSTM32L152_REG_ADR_GPIO_DIR3 ((uint8_t)0x62) /* agpio [0:7] */
  364. /**
  365. * @brief Reg addr: GPIO TYPE (R/W): If GPIO in output: (0) output push pull, (1) output open drain.
  366. * If GPIO in input: (0) input without pull resistor, (1) input with pull resistor.
  367. */
  368. #define MFXSTM32L152_REG_ADR_GPIO_TYPE1 ((uint8_t)0x64) /* gpio [0:7] */
  369. #define MFXSTM32L152_REG_ADR_GPIO_TYPE2 ((uint8_t)0x65) /* gpio [8:15] */
  370. #define MFXSTM32L152_REG_ADR_GPIO_TYPE3 ((uint8_t)0x66) /* agpio [0:7] */
  371. /**
  372. * @brief Reg addr: GPIO PULL_UP_PULL_DOWN (R/W): discussion open with Jean Claude
  373. */
  374. #define MFXSTM32L152_REG_ADR_GPIO_PUPD1 ((uint8_t)0x68) /* gpio [0:7] */
  375. #define MFXSTM32L152_REG_ADR_GPIO_PUPD2 ((uint8_t)0x69) /* gpio [8:15] */
  376. #define MFXSTM32L152_REG_ADR_GPIO_PUPD3 ((uint8_t)0x6A) /* agpio [0:7] */
  377. /**
  378. * @brief Reg addr: GPIO SET (W): When GPIO is in output mode, write (1) puts the corresponding GPO in High level.
  379. */
  380. #define MFXSTM32L152_REG_ADR_GPO_SET1 ((uint8_t)0x6C) /* gpio [0:7] */
  381. #define MFXSTM32L152_REG_ADR_GPO_SET2 ((uint8_t)0x6D) /* gpio [8:15] */
  382. #define MFXSTM32L152_REG_ADR_GPO_SET3 ((uint8_t)0x6E) /* agpio [0:7] */
  383. /**
  384. * @brief Reg addr: GPIO CLEAR (W): When GPIO is in output mode, write (1) puts the corresponding GPO in Low level.
  385. */
  386. #define MFXSTM32L152_REG_ADR_GPO_CLR1 ((uint8_t)0x70) /* gpio [0:7] */
  387. #define MFXSTM32L152_REG_ADR_GPO_CLR2 ((uint8_t)0x71) /* gpio [8:15] */
  388. #define MFXSTM32L152_REG_ADR_GPO_CLR3 ((uint8_t)0x72) /* agpio [0:7] */
  389. /**
  390. * @brief Reg addr: GPIO STATE (R): Give state of the GPIO pin.
  391. */
  392. #define MFXSTM32L152_REG_ADR_GPIO_STATE1 ((uint8_t)0x10) /* gpio [0:7] */
  393. #define MFXSTM32L152_REG_ADR_GPIO_STATE2 ((uint8_t)0x11) /* gpio [8:15] */
  394. #define MFXSTM32L152_REG_ADR_GPIO_STATE3 ((uint8_t)0x12) /* agpio [0:7] */
  395. /**
  396. * @brief GPIO IRQ_GPIs
  397. */
  398. /* GPIOs can INDIVIDUALLY generate interruption to the Main MCU thanks to the MFXSTM32L152_IRQ_OUT signal */
  399. /* the general MFXSTM32L152_IRQ_GPIO_SRC_EN shall be enabled too */
  400. /**
  401. * @brief GPIO IRQ_GPI_SRC1/2/3 (R/W): registers enable or not the feature to generate irq
  402. */
  403. #define MFXSTM32L152_REG_ADR_IRQ_GPI_SRC1 ((uint8_t)0x48) /* gpio [0:7] */
  404. #define MFXSTM32L152_REG_ADR_IRQ_GPI_SRC2 ((uint8_t)0x49) /* gpio [8:15] */
  405. #define MFXSTM32L152_REG_ADR_IRQ_GPI_SRC3 ((uint8_t)0x4A) /* agpio [0:7] */
  406. /**
  407. * @brief GPIO IRQ_GPI_EVT1/2/3 (R/W): Irq generated on level (0) or edge (1).
  408. */
  409. #define MFXSTM32L152_REG_ADR_IRQ_GPI_EVT1 ((uint8_t)0x4C) /* gpio [0:7] */
  410. #define MFXSTM32L152_REG_ADR_IRQ_GPI_EVT2 ((uint8_t)0x4D) /* gpio [8:15] */
  411. #define MFXSTM32L152_REG_ADR_IRQ_GPI_EVT3 ((uint8_t)0x4E) /* agpio [0:7] */
  412. /**
  413. * @brief GPIO IRQ_GPI_TYPE1/2/3 (R/W): Irq generated on (0) : Low level or Falling edge. (1) : High level or Rising edge.
  414. */
  415. #define MFXSTM32L152_REG_ADR_IRQ_GPI_TYPE1 ((uint8_t)0x50) /* gpio [0:7] */
  416. #define MFXSTM32L152_REG_ADR_IRQ_GPI_TYPE2 ((uint8_t)0x51) /* gpio [8:15] */
  417. #define MFXSTM32L152_REG_ADR_IRQ_GPI_TYPE3 ((uint8_t)0x52) /* agpio [0:7] */
  418. /**
  419. * @brief GPIO IRQ_GPI_PENDING1/2/3 (R): irq occurs
  420. */
  421. #define MFXSTM32L152_REG_ADR_IRQ_GPI_PENDING1 ((uint8_t)0x0C) /* gpio [0:7] */
  422. #define MFXSTM32L152_REG_ADR_IRQ_GPI_PENDING2 ((uint8_t)0x0D) /* gpio [8:15] */
  423. #define MFXSTM32L152_REG_ADR_IRQ_GPI_PENDING3 ((uint8_t)0x0E) /* agpio [0:7] */
  424. /**
  425. * @brief GPIO IRQ_GPI_ACK1/2/3 (W): Write (1) to acknowledge IRQ event
  426. */
  427. #define MFXSTM32L152_REG_ADR_IRQ_GPI_ACK1 ((uint8_t)0x54) /* gpio [0:7] */
  428. #define MFXSTM32L152_REG_ADR_IRQ_GPI_ACK2 ((uint8_t)0x55) /* gpio [8:15] */
  429. #define MFXSTM32L152_REG_ADR_IRQ_GPI_ACK3 ((uint8_t)0x56) /* agpio [0:7] */
  430. /**
  431. * @brief GPIO: IO Pins definition
  432. */
  433. #define MFXSTM32L152_GPIO_PIN_0 ((uint32_t)0x0001)
  434. #define MFXSTM32L152_GPIO_PIN_1 ((uint32_t)0x0002)
  435. #define MFXSTM32L152_GPIO_PIN_2 ((uint32_t)0x0004)
  436. #define MFXSTM32L152_GPIO_PIN_3 ((uint32_t)0x0008)
  437. #define MFXSTM32L152_GPIO_PIN_4 ((uint32_t)0x0010)
  438. #define MFXSTM32L152_GPIO_PIN_5 ((uint32_t)0x0020)
  439. #define MFXSTM32L152_GPIO_PIN_6 ((uint32_t)0x0040)
  440. #define MFXSTM32L152_GPIO_PIN_7 ((uint32_t)0x0080)
  441. #define MFXSTM32L152_GPIO_PIN_8 ((uint32_t)0x0100)
  442. #define MFXSTM32L152_GPIO_PIN_9 ((uint32_t)0x0200)
  443. #define MFXSTM32L152_GPIO_PIN_10 ((uint32_t)0x0400)
  444. #define MFXSTM32L152_GPIO_PIN_11 ((uint32_t)0x0800)
  445. #define MFXSTM32L152_GPIO_PIN_12 ((uint32_t)0x1000)
  446. #define MFXSTM32L152_GPIO_PIN_13 ((uint32_t)0x2000)
  447. #define MFXSTM32L152_GPIO_PIN_14 ((uint32_t)0x4000)
  448. #define MFXSTM32L152_GPIO_PIN_15 ((uint32_t)0x8000)
  449. #define MFXSTM32L152_GPIO_PIN_16 ((uint32_t)0x010000)
  450. #define MFXSTM32L152_GPIO_PIN_17 ((uint32_t)0x020000)
  451. #define MFXSTM32L152_GPIO_PIN_18 ((uint32_t)0x040000)
  452. #define MFXSTM32L152_GPIO_PIN_19 ((uint32_t)0x080000)
  453. #define MFXSTM32L152_GPIO_PIN_20 ((uint32_t)0x100000)
  454. #define MFXSTM32L152_GPIO_PIN_21 ((uint32_t)0x200000)
  455. #define MFXSTM32L152_GPIO_PIN_22 ((uint32_t)0x400000)
  456. #define MFXSTM32L152_GPIO_PIN_23 ((uint32_t)0x800000)
  457. #define MFXSTM32L152_AGPIO_PIN_0 MFXSTM32L152_GPIO_PIN_16
  458. #define MFXSTM32L152_AGPIO_PIN_1 MFXSTM32L152_GPIO_PIN_17
  459. #define MFXSTM32L152_AGPIO_PIN_2 MFXSTM32L152_GPIO_PIN_18
  460. #define MFXSTM32L152_AGPIO_PIN_3 MFXSTM32L152_GPIO_PIN_19
  461. #define MFXSTM32L152_AGPIO_PIN_4 MFXSTM32L152_GPIO_PIN_20
  462. #define MFXSTM32L152_AGPIO_PIN_5 MFXSTM32L152_GPIO_PIN_21
  463. #define MFXSTM32L152_AGPIO_PIN_6 MFXSTM32L152_GPIO_PIN_22
  464. #define MFXSTM32L152_AGPIO_PIN_7 MFXSTM32L152_GPIO_PIN_23
  465. #define MFXSTM32L152_GPIO_PINS_ALL ((uint32_t)0xFFFFFF)
  466. /**
  467. * @brief GPIO: constant
  468. */
  469. #define MFXSTM32L152_GPIO_DIR_IN ((uint8_t)0x0)
  470. #define MFXSTM32L152_GPIO_DIR_OUT ((uint8_t)0x1)
  471. #define MFXSTM32L152_IRQ_GPI_EVT_LEVEL ((uint8_t)0x0)
  472. #define MFXSTM32L152_IRQ_GPI_EVT_EDGE ((uint8_t)0x1)
  473. #define MFXSTM32L152_IRQ_GPI_TYPE_LLFE ((uint8_t)0x0) /* Low Level Falling Edge */
  474. #define MFXSTM32L152_IRQ_GPI_TYPE_HLRE ((uint8_t)0x1) /*High Level Raising Edge */
  475. #define MFXSTM32L152_GPI_WITHOUT_PULL_RESISTOR ((uint8_t)0x0)
  476. #define MFXSTM32L152_GPI_WITH_PULL_RESISTOR ((uint8_t)0x1)
  477. #define MFXSTM32L152_GPO_PUSH_PULL ((uint8_t)0x0)
  478. #define MFXSTM32L152_GPO_OPEN_DRAIN ((uint8_t)0x1)
  479. #define MFXSTM32L152_GPIO_PULL_DOWN ((uint8_t)0x0)
  480. #define MFXSTM32L152_GPIO_PULL_UP ((uint8_t)0x1)
  481. /**
  482. * @brief TOUCH SCREEN Registers
  483. */
  484. /**
  485. * @brief Touch Screen Registers
  486. */
  487. #define MFXSTM32L152_TS_SETTLING ((uint8_t)0xA0)
  488. #define MFXSTM32L152_TS_TOUCH_DET_DELAY ((uint8_t)0xA1)
  489. #define MFXSTM32L152_TS_AVE ((uint8_t)0xA2)
  490. #define MFXSTM32L152_TS_TRACK ((uint8_t)0xA3)
  491. #define MFXSTM32L152_TS_FIFO_TH ((uint8_t)0xA4)
  492. #define MFXSTM32L152_TS_FIFO_STA ((uint8_t)0x20)
  493. #define MFXSTM32L152_TS_FIFO_LEVEL ((uint8_t)0x21)
  494. #define MFXSTM32L152_TS_XY_DATA ((uint8_t)0x24)
  495. /**
  496. * @brief TS registers masks
  497. */
  498. #define MFXSTM32L152_TS_CTRL_STATUS ((uint8_t)0x08)
  499. #define MFXSTM32L152_TS_CLEAR_FIFO ((uint8_t)0x80)
  500. /**
  501. * @brief Register address: Idd control register (R/W)
  502. */
  503. #define MFXSTM32L152_REG_ADR_IDD_CTRL ((uint8_t)0x80)
  504. /**
  505. * @brief Register address: Idd pre delay register (R/W)
  506. */
  507. #define MFXSTM32L152_REG_ADR_IDD_PRE_DELAY ((uint8_t)0x81)
  508. /**
  509. * @brief Register address: Idd Shunt registers (R/W)
  510. */
  511. #define MFXSTM32L152_REG_ADR_IDD_SHUNT0_MSB ((uint8_t)0x82)
  512. #define MFXSTM32L152_REG_ADR_IDD_SHUNT0_LSB ((uint8_t)0x83)
  513. #define MFXSTM32L152_REG_ADR_IDD_SHUNT1_MSB ((uint8_t)0x84)
  514. #define MFXSTM32L152_REG_ADR_IDD_SHUNT1_LSB ((uint8_t)0x85)
  515. #define MFXSTM32L152_REG_ADR_IDD_SHUNT2_MSB ((uint8_t)0x86)
  516. #define MFXSTM32L152_REG_ADR_IDD_SHUNT2_LSB ((uint8_t)0x87)
  517. #define MFXSTM32L152_REG_ADR_IDD_SHUNT3_MSB ((uint8_t)0x88)
  518. #define MFXSTM32L152_REG_ADR_IDD_SHUNT3_LSB ((uint8_t)0x89)
  519. #define MFXSTM32L152_REG_ADR_IDD_SHUNT4_MSB ((uint8_t)0x8A)
  520. #define MFXSTM32L152_REG_ADR_IDD_SHUNT4_LSB ((uint8_t)0x8B)
  521. /**
  522. * @brief Register address: Idd ampli gain register (R/W)
  523. */
  524. #define MFXSTM32L152_REG_ADR_IDD_GAIN_MSB ((uint8_t)0x8C)
  525. #define MFXSTM32L152_REG_ADR_IDD_GAIN_LSB ((uint8_t)0x8D)
  526. /**
  527. * @brief Register address: Idd VDD min register (R/W)
  528. */
  529. #define MFXSTM32L152_REG_ADR_IDD_VDD_MIN_MSB ((uint8_t)0x8E)
  530. #define MFXSTM32L152_REG_ADR_IDD_VDD_MIN_LSB ((uint8_t)0x8F)
  531. /**
  532. * @brief Register address: Idd value register (R)
  533. */
  534. #define MFXSTM32L152_REG_ADR_IDD_VALUE_MSB ((uint8_t)0x14)
  535. #define MFXSTM32L152_REG_ADR_IDD_VALUE_MID ((uint8_t)0x15)
  536. #define MFXSTM32L152_REG_ADR_IDD_VALUE_LSB ((uint8_t)0x16)
  537. /**
  538. * @brief Register address: Idd calibration offset register (R)
  539. */
  540. #define MFXSTM32L152_REG_ADR_IDD_CAL_OFFSET_MSB ((uint8_t)0x18)
  541. #define MFXSTM32L152_REG_ADR_IDD_CAL_OFFSET_LSB ((uint8_t)0x19)
  542. /**
  543. * @brief Register address: Idd shunt used offset register (R)
  544. */
  545. #define MFXSTM32L152_REG_ADR_IDD_SHUNT_USED ((uint8_t)0x1A)
  546. /**
  547. * @brief Register address: shunt stabilisation delay registers (R/W)
  548. */
  549. #define MFXSTM32L152_REG_ADR_IDD_SH0_STABILIZATION ((uint8_t)0x90)
  550. #define MFXSTM32L152_REG_ADR_IDD_SH1_STABILIZATION ((uint8_t)0x91)
  551. #define MFXSTM32L152_REG_ADR_IDD_SH2_STABILIZATION ((uint8_t)0x92)
  552. #define MFXSTM32L152_REG_ADR_IDD_SH3_STABILIZATION ((uint8_t)0x93)
  553. #define MFXSTM32L152_REG_ADR_IDD_SH4_STABILIZATION ((uint8_t)0x94)
  554. /**
  555. * @brief Register address: Idd number of measurements register (R/W)
  556. */
  557. #define MFXSTM32L152_REG_ADR_IDD_NBR_OF_MEAS ((uint8_t)0x96)
  558. /**
  559. * @brief Register address: Idd delta delay between 2 measurements register (R/W)
  560. */
  561. #define MFXSTM32L152_REG_ADR_IDD_MEAS_DELTA_DELAY ((uint8_t)0x97)
  562. /**
  563. * @brief Register address: Idd number of shunt on board register (R/W)
  564. */
  565. #define MFXSTM32L152_REG_ADR_IDD_SHUNTS_ON_BOARD ((uint8_t)0x98)
  566. /** @defgroup IDD_Control_Register_Defines IDD Control Register Defines
  567. * @{
  568. */
  569. /**
  570. * @brief IDD control register masks
  571. */
  572. #define MFXSTM32L152_IDD_CTRL_REQ ((uint8_t)0x01)
  573. #define MFXSTM32L152_IDD_CTRL_SHUNT_NB ((uint8_t)0x0E)
  574. #define MFXSTM32L152_IDD_CTRL_VREF_DIS ((uint8_t)0x40)
  575. #define MFXSTM32L152_IDD_CTRL_CAL_DIS ((uint8_t)0x80)
  576. /**
  577. * @brief IDD Shunt Number
  578. */
  579. #define MFXSTM32L152_IDD_SHUNT_NB_1 ((uint8_t) 0x01)
  580. #define MFXSTM32L152_IDD_SHUNT_NB_2 ((uint8_t) 0x02)
  581. #define MFXSTM32L152_IDD_SHUNT_NB_3 ((uint8_t) 0x03)
  582. #define MFXSTM32L152_IDD_SHUNT_NB_4 ((uint8_t) 0x04)
  583. #define MFXSTM32L152_IDD_SHUNT_NB_5 ((uint8_t) 0x05)
  584. /**
  585. * @brief Vref Measurement
  586. */
  587. #define MFXSTM32L152_IDD_VREF_AUTO_MEASUREMENT_ENABLE ((uint8_t) 0x00)
  588. #define MFXSTM32L152_IDD_VREF_AUTO_MEASUREMENT_DISABLE ((uint8_t) 0x70)
  589. /**
  590. * @brief IDD Calibration
  591. */
  592. #define MFXSTM32L152_IDD_AUTO_CALIBRATION_ENABLE ((uint8_t) 0x00)
  593. #define MFXSTM32L152_IDD_AUTO_CALIBRATION_DISABLE ((uint8_t) 0x80)
  594. /**
  595. * @}
  596. */
  597. /** @defgroup IDD_PreDelay_Defines IDD PreDelay Defines
  598. * @{
  599. */
  600. /**
  601. * @brief IDD PreDelay masks
  602. */
  603. #define MFXSTM32L152_IDD_PREDELAY_UNIT ((uint8_t) 0x80)
  604. #define MFXSTM32L152_IDD_PREDELAY_VALUE ((uint8_t) 0x7F)
  605. /**
  606. * @brief IDD PreDelay unit
  607. */
  608. #define MFXSTM32L152_IDD_PREDELAY_0_5_MS ((uint8_t) 0x00)
  609. #define MFXSTM32L152_IDD_PREDELAY_20_MS ((uint8_t) 0x80)
  610. /**
  611. * @}
  612. */
  613. /** @defgroup IDD_DeltaDelay_Defines IDD Delta DElay Defines
  614. * @{
  615. */
  616. /**
  617. * @brief IDD Delta Delay masks
  618. */
  619. #define MFXSTM32L152_IDD_DELTADELAY_UNIT ((uint8_t) 0x80)
  620. #define MFXSTM32L152_IDD_DELTADELAY_VALUE ((uint8_t) 0x7F)
  621. /**
  622. * @brief IDD Delta Delay unit
  623. */
  624. #define MFXSTM32L152_IDD_DELTADELAY_0_5_MS ((uint8_t) 0x00)
  625. #define MFXSTM32L152_IDD_DELTADELAY_20_MS ((uint8_t) 0x80)
  626. /**
  627. * @}
  628. */
  629. /**
  630. * @}
  631. */
  632. /* Exported macro ------------------------------------------------------------*/
  633. /** @defgroup MFXSTM32L152_Exported_Macros
  634. * @{
  635. */
  636. /**
  637. * @}
  638. */
  639. /* Exported functions --------------------------------------------------------*/
  640. /** @defgroup MFXSTM32L152_Exported_Functions
  641. * @{
  642. */
  643. /**
  644. * @brief MFXSTM32L152 Control functions
  645. */
  646. void mfxstm32l152_Init(uint16_t DeviceAddr);
  647. void mfxstm32l152_DeInit(uint16_t DeviceAddr);
  648. void mfxstm32l152_Reset(uint16_t DeviceAddr);
  649. uint16_t mfxstm32l152_ReadID(uint16_t DeviceAddr);
  650. uint16_t mfxstm32l152_ReadFwVersion(uint16_t DeviceAddr);
  651. void mfxstm32l152_LowPower(uint16_t DeviceAddr);
  652. void mfxstm32l152_WakeUp(uint16_t DeviceAddr);
  653. void mfxstm32l152_EnableITSource(uint16_t DeviceAddr, uint8_t Source);
  654. void mfxstm32l152_DisableITSource(uint16_t DeviceAddr, uint8_t Source);
  655. uint8_t mfxstm32l152_GlobalITStatus(uint16_t DeviceAddr, uint8_t Source);
  656. void mfxstm32l152_ClearGlobalIT(uint16_t DeviceAddr, uint8_t Source);
  657. void mfxstm32l152_SetIrqOutPinPolarity(uint16_t DeviceAddr, uint8_t Polarity);
  658. void mfxstm32l152_SetIrqOutPinType(uint16_t DeviceAddr, uint8_t Type);
  659. /**
  660. * @brief MFXSTM32L152 IO functionalities functions
  661. */
  662. void mfxstm32l152_IO_Start(uint16_t DeviceAddr, uint32_t IO_Pin);
  663. uint8_t mfxstm32l152_IO_Config(uint16_t DeviceAddr, uint32_t IO_Pin, IO_ModeTypedef IO_Mode);
  664. void mfxstm32l152_IO_WritePin(uint16_t DeviceAddr, uint32_t IO_Pin, uint8_t PinState);
  665. uint32_t mfxstm32l152_IO_ReadPin(uint16_t DeviceAddr, uint32_t IO_Pin);
  666. void mfxstm32l152_IO_EnableIT(uint16_t DeviceAddr);
  667. void mfxstm32l152_IO_DisableIT(uint16_t DeviceAddr);
  668. uint32_t mfxstm32l152_IO_ITStatus(uint16_t DeviceAddr, uint32_t IO_Pin);
  669. void mfxstm32l152_IO_ClearIT(uint16_t DeviceAddr, uint32_t IO_Pin);
  670. void mfxstm32l152_IO_InitPin(uint16_t DeviceAddr, uint32_t IO_Pin, uint8_t Direction);
  671. void mfxstm32l152_IO_EnableAF(uint16_t DeviceAddr);
  672. void mfxstm32l152_IO_DisableAF(uint16_t DeviceAddr);
  673. void mfxstm32l152_IO_SetIrqTypeMode(uint16_t DeviceAddr, uint32_t IO_Pin, uint8_t Type);
  674. void mfxstm32l152_IO_SetIrqEvtMode(uint16_t DeviceAddr, uint32_t IO_Pin, uint8_t Evt);
  675. void mfxstm32l152_IO_EnablePinIT(uint16_t DeviceAddr, uint32_t IO_Pin);
  676. void mfxstm32l152_IO_DisablePinIT(uint16_t DeviceAddr, uint32_t IO_Pin);
  677. /**
  678. * @brief MFXSTM32L152 Touch screen functionalities functions
  679. */
  680. void mfxstm32l152_TS_Start(uint16_t DeviceAddr);
  681. uint8_t mfxstm32l152_TS_DetectTouch(uint16_t DeviceAddr);
  682. void mfxstm32l152_TS_GetXY(uint16_t DeviceAddr, uint16_t *X, uint16_t *Y);
  683. void mfxstm32l152_TS_EnableIT(uint16_t DeviceAddr);
  684. void mfxstm32l152_TS_DisableIT(uint16_t DeviceAddr);
  685. uint8_t mfxstm32l152_TS_ITStatus (uint16_t DeviceAddr);
  686. void mfxstm32l152_TS_ClearIT (uint16_t DeviceAddr);
  687. /**
  688. * @brief MFXSTM32L152 IDD current measurement functionalities functions
  689. */
  690. void mfxstm32l152_IDD_Start(uint16_t DeviceAddr);
  691. void mfxstm32l152_IDD_Config(uint16_t DeviceAddr, IDD_ConfigTypeDef MfxIddConfig);
  692. void mfxstm32l152_IDD_ConfigShuntNbLimit(uint16_t DeviceAddr, uint8_t ShuntNbLimit);
  693. void mfxstm32l152_IDD_GetValue(uint16_t DeviceAddr, uint32_t *ReadValue);
  694. uint8_t mfxstm32l152_IDD_GetShuntUsed(uint16_t DeviceAddr);
  695. void mfxstm32l152_IDD_EnableIT(uint16_t DeviceAddr);
  696. void mfxstm32l152_IDD_ClearIT(uint16_t DeviceAddr);
  697. uint8_t mfxstm32l152_IDD_GetITStatus(uint16_t DeviceAddr);
  698. void mfxstm32l152_IDD_DisableIT(uint16_t DeviceAddr);
  699. /**
  700. * @brief MFXSTM32L152 Error management functions
  701. */
  702. uint8_t mfxstm32l152_Error_ReadSrc(uint16_t DeviceAddr);
  703. uint8_t mfxstm32l152_Error_ReadMsg(uint16_t DeviceAddr);
  704. void mfxstm32l152_Error_EnableIT(uint16_t DeviceAddr);
  705. void mfxstm32l152_Error_ClearIT(uint16_t DeviceAddr);
  706. uint8_t mfxstm32l152_Error_GetITStatus(uint16_t DeviceAddr);
  707. void mfxstm32l152_Error_DisableIT(uint16_t DeviceAddr);
  708. uint8_t mfxstm32l152_ReadReg(uint16_t DeviceAddr, uint8_t RegAddr);
  709. void mfxstm32l152_WriteReg(uint16_t DeviceAddr, uint8_t RegAddr, uint8_t Value);
  710. /**
  711. * @brief iobus prototypes (they should be defined in common/stm32_iobus.h)
  712. */
  713. void MFX_IO_Init(void);
  714. void MFX_IO_DeInit(void);
  715. void MFX_IO_ITConfig (void);
  716. void MFX_IO_EnableWakeupPin(void);
  717. void MFX_IO_Wakeup(void);
  718. void MFX_IO_Delay(uint32_t delay);
  719. void MFX_IO_Write(uint16_t addr, uint8_t reg, uint8_t value);
  720. uint8_t MFX_IO_Read(uint16_t addr, uint8_t reg);
  721. uint16_t MFX_IO_ReadMultiple(uint16_t addr, uint8_t reg, uint8_t *buffer, uint16_t length);
  722. /**
  723. * @}
  724. */
  725. /* Touch screen driver structure */
  726. extern TS_DrvTypeDef mfxstm32l152_ts_drv;
  727. /* IO driver structure */
  728. extern IO_DrvTypeDef mfxstm32l152_io_drv;
  729. /* IDD driver structure */
  730. extern IDD_DrvTypeDef mfxstm32l152_idd_drv;
  731. #ifdef __cplusplus
  732. }
  733. #endif
  734. #endif /* __MFXSTM32L152_H */
  735. /**
  736. * @}
  737. */
  738. /**
  739. * @}
  740. */
  741. /**
  742. * @}
  743. */
  744. /**
  745. * @}
  746. */
  747. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/