fm33lc0xx_fl_opa.h 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785
  1. /**
  2. *******************************************************************************************************
  3. * @file fm33lc0xx_fl_opa.h
  4. * @author FMSH Application Team
  5. * @brief Head file of OPA FL Module
  6. *******************************************************************************************************
  7. * @attention
  8. *
  9. * Copyright (c) [2019] [Fudan Microelectronics]
  10. * THIS SOFTWARE is licensed under the Mulan PSL v1.
  11. * can use this software according to the terms and conditions of the Mulan PSL v1.
  12. * You may obtain a copy of Mulan PSL v1 at:
  13. * http://license.coscl.org.cn/MulanPSL
  14. * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
  16. * PURPOSE.
  17. * See the Mulan PSL v1 for more details.
  18. *
  19. *******************************************************************************************************
  20. */
  21. /* Define to prevent recursive inclusion---------------------------------------------------------------*/
  22. #ifndef __FM33LC0XX_FL_OPA_H
  23. #define __FM33LC0XX_FL_OPA_H
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. /* Includes -------------------------------------------------------------------------------------------*/
  28. #include "fm33lc0xx_fl.h"
  29. /** @addtogroup FM33LC0XX_FL_Driver
  30. * @{
  31. */
  32. /** @defgroup OPA OPA
  33. * @brief OPA FL driver
  34. * @{
  35. */
  36. /* Exported types -------------------------------------------------------------------------------------*/
  37. /** @defgroup OPA_FL_ES_INIT OPA Exported Init structures
  38. * @{
  39. */
  40. /**
  41. * @brief OPA Init Sturcture definition
  42. */
  43. typedef struct
  44. {
  45. /** 正向输入选择 */
  46. uint32_t INP;
  47. /** 反向输入选择*/
  48. uint32_t INN;
  49. /** OPA 工作模式*/
  50. uint32_t mode;
  51. /** 数字滤波器使能 */
  52. uint32_t digitalFilter;
  53. /** PGA反向输入到选择由Pin输入 */
  54. uint32_t negtiveToPin;
  55. /** PGA模式下的放大倍数*/
  56. uint32_t gain;
  57. /** 低功耗模式使能 */
  58. uint32_t lowPowermode;
  59. } FL_OPA_InitTypeDef;
  60. /**
  61. * @}
  62. */
  63. /* Exported constants ---------------------------------------------------------------------------------*/
  64. /** @defgroup OPA_FL_Exported_Constants OPA Exported Constants
  65. * @{
  66. */
  67. #define OPA_CR_BUFFEN_Pos (31U)
  68. #define OPA_CR_BUFFEN_Msk (0x1U << OPA_CR_BUFFEN_Pos)
  69. #define OPA_CR_BUFFEN OPA_CR_BUFFEN_Msk
  70. #define OPA_CR_BUFBYP_Pos (30U)
  71. #define OPA_CR_BUFBYP_Msk (0x1U << OPA_CR_BUFBYP_Pos)
  72. #define OPA_CR_BUFBYP OPA_CR_BUFBYP_Msk
  73. #define OPA_CR_VNSEL_Pos (9U)
  74. #define OPA_CR_VNSEL_Msk (0x7U << OPA_CR_VNSEL_Pos)
  75. #define OPA_CR_VNSEL OPA_CR_VNSEL_Msk
  76. #define OPA_CR_VPSEL_Pos (8U)
  77. #define OPA_CR_VPSEL_Msk (0x1U << OPA_CR_VPSEL_Pos)
  78. #define OPA_CR_VPSEL OPA_CR_VPSEL_Msk
  79. #define OPA_CR_DF_Pos (7U)
  80. #define OPA_CR_DF_Msk (0x1U << OPA_CR_DF_Pos)
  81. #define OPA_CR_DF OPA_CR_DF_Msk
  82. #define OPA_CR_VN_EXC_Pos (6U)
  83. #define OPA_CR_VN_EXC_Msk (0x1U << OPA_CR_VN_EXC_Pos)
  84. #define OPA_CR_VN_EXC OPA_CR_VN_EXC_Msk
  85. #define OPA_CR_PGA_GAIN_Pos (4U)
  86. #define OPA_CR_PGA_GAIN_Msk (0x3U << OPA_CR_PGA_GAIN_Pos)
  87. #define OPA_CR_PGA_GAIN OPA_CR_PGA_GAIN_Msk
  88. #define OPA_CR_MOD_Pos (2U)
  89. #define OPA_CR_MOD_Msk (0x3U << OPA_CR_MOD_Pos)
  90. #define OPA_CR_MOD OPA_CR_MOD_Msk
  91. #define OPA_CR_LPM_Pos (1U)
  92. #define OPA_CR_LPM_Msk (0x1U << OPA_CR_LPM_Pos)
  93. #define OPA_CR_LPM OPA_CR_LPM_Msk
  94. #define OPA_CR_EN_Pos (0U)
  95. #define OPA_CR_EN_Msk (0x1U << OPA_CR_EN_Pos)
  96. #define OPA_CR_EN OPA_CR_EN_Msk
  97. #define OPA_CALR_NCAL_EN_Pos (31U)
  98. #define OPA_CALR_NCAL_EN_Msk (0x1U << OPA_CALR_NCAL_EN_Pos)
  99. #define OPA_CALR_NCAL_EN OPA_CALR_NCAL_EN_Msk
  100. #define OPA_CALR_NCAL_Pos (16U)
  101. #define OPA_CALR_NCAL_Msk (0x1fU << OPA_CALR_NCAL_Pos)
  102. #define OPA_CALR_NCAL OPA_CALR_NCAL_Msk
  103. #define OPA_CALR_PCAL_EN_Pos (15U)
  104. #define OPA_CALR_PCAL_EN_Msk (0x1U << OPA_CALR_PCAL_EN_Pos)
  105. #define OPA_CALR_PCAL_EN OPA_CALR_PCAL_EN_Msk
  106. #define OPA_CALR_PCAL_Pos (0U)
  107. #define OPA_CALR_PCAL_Msk (0x1fU << OPA_CALR_PCAL_Pos)
  108. #define OPA_CALR_PCAL OPA_CALR_PCAL_Msk
  109. #define OPA_IER_FIE_Pos (1U)
  110. #define OPA_IER_FIE_Msk (0x1U << OPA_IER_FIE_Pos)
  111. #define OPA_IER_FIE OPA_IER_FIE_Msk
  112. #define OPA_IER_RIE_Pos (0U)
  113. #define OPA_IER_RIE_Msk (0x1U << OPA_IER_RIE_Pos)
  114. #define OPA_IER_RIE OPA_IER_RIE_Msk
  115. #define OPA_ISR_OUT_Pos (15U)
  116. #define OPA_ISR_OUT_Msk (0x1U << OPA_ISR_OUT_Pos)
  117. #define OPA_ISR_OUT OPA_ISR_OUT_Msk
  118. #define OPA_ISR_FIF_Pos (1U)
  119. #define OPA_ISR_FIF_Msk (0x1U << OPA_ISR_FIF_Pos)
  120. #define OPA_ISR_FIF OPA_ISR_FIF_Msk
  121. #define OPA_ISR_RIF_Pos (0U)
  122. #define OPA_ISR_RIF_Msk (0x1U << OPA_ISR_RIF_Pos)
  123. #define OPA_ISR_RIF OPA_ISR_RIF_Msk
  124. #define FL_OPA_INN_SOURCE_INN1 (0x0U << OPA_CR_VNSEL_Pos)
  125. #define FL_OPA_INN_SOURCE_INN2 (0x1U << OPA_CR_VNSEL_Pos)
  126. #define FL_OPA_INN_SOURCE_VREF (0x2U << OPA_CR_VNSEL_Pos)
  127. #define FL_OPA_INN_SOURCE_THREE_QUARTERS_VREF (0x3U << OPA_CR_VNSEL_Pos)
  128. #define FL_OPA_INN_SOURCE_HALF_VREF (0x4U << OPA_CR_VNSEL_Pos)
  129. #define FL_OPA_INN_SOURCE_ONE_QUARTER_VREF (0x5U << OPA_CR_VNSEL_Pos)
  130. #define FL_OPA_INN_SOURCE_ONE_EIGHTH_VREF (0x6U << OPA_CR_VNSEL_Pos)
  131. #define FL_OPA_INP_SOURCE_INP1 (0x0U << OPA_CR_VPSEL_Pos)
  132. #define FL_OPA_INP_SOURCE_INP2 (0x1U << OPA_CR_VPSEL_Pos)
  133. #define FL_OPA_GAIN_X2 (0x0U << OPA_CR_PGA_GAIN_Pos)
  134. #define FL_OPA_GAIN_X4 (0x1U << OPA_CR_PGA_GAIN_Pos)
  135. #define FL_OPA_GAIN_X8 (0x2U << OPA_CR_PGA_GAIN_Pos)
  136. #define FL_OPA_GAIN_X16 (0x3U << OPA_CR_PGA_GAIN_Pos)
  137. #define FL_OPA_MODE_STANDALONE (0x0U << OPA_CR_MOD_Pos)
  138. #define FL_OPA_MODE_COMPARATOR (0x1U << OPA_CR_MOD_Pos)
  139. #define FL_OPA_MODE_PGA (0x2U << OPA_CR_MOD_Pos)
  140. #define FL_OPA_MODE_BUFFER (0x3U << OPA_CR_MOD_Pos)
  141. /**
  142. * @}
  143. */
  144. /* Exported functions ---------------------------------------------------------------------------------*/
  145. /** @defgroup OPA_FL_Exported_Functions OPA Exported Functions
  146. * @{
  147. */
  148. /**
  149. * @brief Enable VREF Buffer
  150. * @rmtoll CR BUFFEN FL_OPA_EnableVrefBuffer
  151. * @param OPAx OPA instance
  152. * @retval None
  153. */
  154. __STATIC_INLINE void FL_OPA_EnableVrefBuffer(OPA_Type *OPAx)
  155. {
  156. CLEAR_BIT(OPAx->CR, OPA_CR_BUFFEN_Msk);
  157. }
  158. /**
  159. * @brief Get VREF Buffer Enable Status
  160. * @rmtoll CR BUFFEN FL_OPA_IsEnabledVrefBuffer
  161. * @param OPAx OPA instance
  162. * @retval State of bit (1 or 0).
  163. */
  164. __STATIC_INLINE uint32_t FL_OPA_IsEnabledVrefBuffer(OPA_Type *OPAx)
  165. {
  166. return (uint32_t)!(READ_BIT(OPAx->CR, OPA_CR_BUFFEN_Msk) == OPA_CR_BUFFEN_Msk);
  167. }
  168. /**
  169. * @brief Disable VREF Buffer
  170. * @rmtoll CR BUFFEN FL_OPA_DisableVrefBuffer
  171. * @param OPAx OPA instance
  172. * @retval None
  173. */
  174. __STATIC_INLINE void FL_OPA_DisableVrefBuffer(OPA_Type *OPAx)
  175. {
  176. CLEAR_BIT(OPAx->CR, OPA_CR_BUFFEN_Msk);
  177. }
  178. /**
  179. * @brief Enable VREF Buffer Bypass
  180. * @rmtoll CR BUFBYP FL_OPA_EnableBypassVrefBuffer
  181. * @param OPAx OPA instance
  182. * @retval None
  183. */
  184. __STATIC_INLINE void FL_OPA_EnableBypassVrefBuffer(OPA_Type *OPAx)
  185. {
  186. SET_BIT(OPAx->CR, OPA_CR_BUFBYP_Msk);
  187. }
  188. /**
  189. * @brief Get VREF Buffer Bypass Enable Status
  190. * @rmtoll CR BUFBYP FL_OPA_IsEnabledBypassVrefBuffer
  191. * @param OPAx OPA instance
  192. * @retval State of bit (1 or 0).
  193. */
  194. __STATIC_INLINE uint32_t FL_OPA_IsEnabledBypassVrefBuffer(OPA_Type *OPAx)
  195. {
  196. return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_BUFBYP_Msk) == OPA_CR_BUFBYP_Msk);
  197. }
  198. /**
  199. * @brief Disable VREF Buffer Bypass
  200. * @rmtoll CR BUFBYP FL_OPA_DisableBypassVrefBuffer
  201. * @param OPAx OPA instance
  202. * @retval None
  203. */
  204. __STATIC_INLINE void FL_OPA_DisableBypassVrefBuffer(OPA_Type *OPAx)
  205. {
  206. CLEAR_BIT(OPAx->CR, OPA_CR_BUFBYP_Msk);
  207. }
  208. /**
  209. * @brief Set OPA Negative Input Channel
  210. * @rmtoll CR VNSEL FL_OPA_SetINNSource
  211. * @param OPAx OPA instance
  212. * @param source This parameter can be one of the following values:
  213. * @arg @ref FL_OPA_INN_SOURCE_INN1
  214. * @arg @ref FL_OPA_INN_SOURCE_INN2
  215. * @arg @ref FL_OPA_INN_SOURCE_VREF
  216. * @arg @ref FL_OPA_INN_SOURCE_THREE_QUARTERS_VREF
  217. * @arg @ref FL_OPA_INN_SOURCE_HALF_VREF
  218. * @arg @ref FL_OPA_INN_SOURCE_ONE_QUARTER_VREF
  219. * @arg @ref FL_OPA_INN_SOURCE_ONE_EIGHTH_VREF
  220. * @retval None
  221. */
  222. __STATIC_INLINE void FL_OPA_SetINNSource(OPA_Type *OPAx, uint32_t source)
  223. {
  224. MODIFY_REG(OPAx->CR, OPA_CR_VNSEL_Msk, source);
  225. }
  226. /**
  227. * @brief Get OPA Negative Input Channel Setting
  228. * @rmtoll CR VNSEL FL_OPA_GetINNSource
  229. * @param OPAx OPA instance
  230. * @retval Returned value can be one of the following values:
  231. * @arg @ref FL_OPA_INN_SOURCE_INN1
  232. * @arg @ref FL_OPA_INN_SOURCE_INN2
  233. * @arg @ref FL_OPA_INN_SOURCE_VREF
  234. * @arg @ref FL_OPA_INN_SOURCE_THREE_QUARTERS_VREF
  235. * @arg @ref FL_OPA_INN_SOURCE_HALF_VREF
  236. * @arg @ref FL_OPA_INN_SOURCE_ONE_QUARTER_VREF
  237. * @arg @ref FL_OPA_INN_SOURCE_ONE_EIGHTH_VREF
  238. */
  239. __STATIC_INLINE uint32_t FL_OPA_GetINNSource(OPA_Type *OPAx)
  240. {
  241. return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_VNSEL_Msk));
  242. }
  243. /**
  244. * @brief Set OPA Positive Input Channel
  245. * @rmtoll CR VPSEL FL_OPA_SetINPSource
  246. * @param OPAx OPA instance
  247. * @param source This parameter can be one of the following values:
  248. * @arg @ref FL_OPA_INP_SOURCE_INP1
  249. * @arg @ref FL_OPA_INP_SOURCE_INP2
  250. * @retval None
  251. */
  252. __STATIC_INLINE void FL_OPA_SetINPSource(OPA_Type *OPAx, uint32_t source)
  253. {
  254. MODIFY_REG(OPAx->CR, OPA_CR_VPSEL_Msk, source);
  255. }
  256. /**
  257. * @brief Get OPA Positive Input Channel Setting
  258. * @rmtoll CR VPSEL FL_OPA_GetINPSource
  259. * @param OPAx OPA instance
  260. * @retval Returned value can be one of the following values:
  261. * @arg @ref FL_OPA_INP_SOURCE_INP1
  262. * @arg @ref FL_OPA_INP_SOURCE_INP2
  263. */
  264. __STATIC_INLINE uint32_t FL_OPA_GetINPSource(OPA_Type *OPAx)
  265. {
  266. return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_VPSEL_Msk));
  267. }
  268. /**
  269. * @brief Enable OPA Comparator Mode Output Digital Filter
  270. * @rmtoll CR DF FL_OPA_EnableCOMPModeDigitalFilter
  271. * @param OPAx OPA instance
  272. * @retval None
  273. */
  274. __STATIC_INLINE void FL_OPA_EnableCOMPModeDigitalFilter(OPA_Type *OPAx)
  275. {
  276. SET_BIT(OPAx->CR, OPA_CR_DF_Msk);
  277. }
  278. /**
  279. * @brief Get OPA Comparator Mode Output Digital Filter Enable Status
  280. * @rmtoll CR DF FL_OPA_IsEnabledCOMPModeDigitalFilter
  281. * @param OPAx OPA instance
  282. * @retval State of bit (1 or 0).
  283. */
  284. __STATIC_INLINE uint32_t FL_OPA_IsEnabledCOMPModeDigitalFilter(OPA_Type *OPAx)
  285. {
  286. return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_DF_Msk) == OPA_CR_DF_Msk);
  287. }
  288. /**
  289. * @brief Disable OPA Comparator Mode Output Digital Filter
  290. * @rmtoll CR DF FL_OPA_DisableCOMPModeDigitalFilter
  291. * @param OPAx OPA instance
  292. * @retval None
  293. */
  294. __STATIC_INLINE void FL_OPA_DisableCOMPModeDigitalFilter(OPA_Type *OPAx)
  295. {
  296. CLEAR_BIT(OPAx->CR, OPA_CR_DF_Msk);
  297. }
  298. /**
  299. * @brief Enable OPA Negtive Input Connected to GPIO
  300. * @rmtoll CR VN_EXC FL_OPA_PGA_EnableINNConnectToPin
  301. * @param OPAx OPA instance
  302. * @retval None
  303. */
  304. __STATIC_INLINE void FL_OPA_PGA_EnableINNConnectToPin(OPA_Type *OPAx)
  305. {
  306. SET_BIT(OPAx->CR, OPA_CR_VN_EXC_Msk);
  307. }
  308. /**
  309. * @brief Get OPA Negtive Input Connected to GPIO Enable Status
  310. * @rmtoll CR VN_EXC FL_OPA_PGA_IsEnabledINNConnectToPin
  311. * @param OPAx OPA instance
  312. * @retval State of bit (1 or 0).
  313. */
  314. __STATIC_INLINE uint32_t FL_OPA_PGA_IsEnabledINNConnectToPin(OPA_Type *OPAx)
  315. {
  316. return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_VN_EXC_Msk) == OPA_CR_VN_EXC_Msk);
  317. }
  318. /**
  319. * @brief Disable OPA Negtive Input Connected to GPIO
  320. * @rmtoll CR VN_EXC FL_OPA_PGA_DisableINNConnectToPin
  321. * @param OPAx OPA instance
  322. * @retval None
  323. */
  324. __STATIC_INLINE void FL_OPA_PGA_DisableINNConnectToPin(OPA_Type *OPAx)
  325. {
  326. CLEAR_BIT(OPAx->CR, OPA_CR_VN_EXC_Msk);
  327. }
  328. /**
  329. * @brief Set OPA PGA Mode Gain
  330. * @rmtoll CR PGA_GAIN FL_OPA_PGA_SetGain
  331. * @param OPAx OPA instance
  332. * @param value This parameter can be one of the following values:
  333. * @arg @ref FL_OPA_GAIN_X2
  334. * @arg @ref FL_OPA_GAIN_X4
  335. * @arg @ref FL_OPA_GAIN_X8
  336. * @arg @ref FL_OPA_GAIN_X16
  337. * @retval None
  338. */
  339. __STATIC_INLINE void FL_OPA_PGA_SetGain(OPA_Type *OPAx, uint32_t value)
  340. {
  341. MODIFY_REG(OPAx->CR, OPA_CR_PGA_GAIN_Msk, value);
  342. }
  343. /**
  344. * @brief Get OPA PGA Mode Gain Setting
  345. * @rmtoll CR PGA_GAIN FL_OPA_PGA_GetGain
  346. * @param OPAx OPA instance
  347. * @retval Returned value can be one of the following values:
  348. * @arg @ref FL_OPA_GAIN_X2
  349. * @arg @ref FL_OPA_GAIN_X4
  350. * @arg @ref FL_OPA_GAIN_X8
  351. * @arg @ref FL_OPA_GAIN_X16
  352. */
  353. __STATIC_INLINE uint32_t FL_OPA_PGA_GetGain(OPA_Type *OPAx)
  354. {
  355. return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_PGA_GAIN_Msk));
  356. }
  357. /**
  358. * @brief Set OPA Mode
  359. * @rmtoll CR MOD FL_OPA_SetMode
  360. * @param OPAx OPA instance
  361. * @param mode This parameter can be one of the following values:
  362. * @arg @ref FL_OPA_MODE_STANDALONE
  363. * @arg @ref FL_OPA_MODE_COMPARATOR
  364. * @arg @ref FL_OPA_MODE_PGA
  365. * @arg @ref FL_OPA_MODE_BUFFER
  366. * @retval None
  367. */
  368. __STATIC_INLINE void FL_OPA_SetMode(OPA_Type *OPAx, uint32_t mode)
  369. {
  370. MODIFY_REG(OPAx->CR, OPA_CR_MOD_Msk, mode);
  371. }
  372. /**
  373. * @brief Get OPA Mode Setting
  374. * @rmtoll CR MOD FL_OPA_GetMode
  375. * @param OPAx OPA instance
  376. * @retval Returned value can be one of the following values:
  377. * @arg @ref FL_OPA_MODE_STANDALONE
  378. * @arg @ref FL_OPA_MODE_COMPARATOR
  379. * @arg @ref FL_OPA_MODE_PGA
  380. * @arg @ref FL_OPA_MODE_BUFFER
  381. */
  382. __STATIC_INLINE uint32_t FL_OPA_GetMode(OPA_Type *OPAx)
  383. {
  384. return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_MOD_Msk));
  385. }
  386. /**
  387. * @brief Enable OPA Low Power Mode
  388. * @rmtoll CR LPM FL_OPA_EnableLowPowerMode
  389. * @param OPAx OPA instance
  390. * @retval None
  391. */
  392. __STATIC_INLINE void FL_OPA_EnableLowPowerMode(OPA_Type *OPAx)
  393. {
  394. SET_BIT(OPAx->CR, OPA_CR_LPM_Msk);
  395. }
  396. /**
  397. * @brief Get OPA Low Power Mode Enable Status
  398. * @rmtoll CR LPM FL_OPA_IsEnabledLowPowerMode
  399. * @param OPAx OPA instance
  400. * @retval State of bit (1 or 0).
  401. */
  402. __STATIC_INLINE uint32_t FL_OPA_IsEnabledLowPowerMode(OPA_Type *OPAx)
  403. {
  404. return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_LPM_Msk) == OPA_CR_LPM_Msk);
  405. }
  406. /**
  407. * @brief Disable OPA Low Power Mode
  408. * @rmtoll CR LPM FL_OPA_DisableLowPowerMode
  409. * @param OPAx OPA instance
  410. * @retval None
  411. */
  412. __STATIC_INLINE void FL_OPA_DisableLowPowerMode(OPA_Type *OPAx)
  413. {
  414. CLEAR_BIT(OPAx->CR, OPA_CR_LPM_Msk);
  415. }
  416. /**
  417. * @brief Enable OPA
  418. * @rmtoll CR EN FL_OPA_Enable
  419. * @param OPAx OPA instance
  420. * @retval None
  421. */
  422. __STATIC_INLINE void FL_OPA_Enable(OPA_Type *OPAx)
  423. {
  424. SET_BIT(OPAx->CR, OPA_CR_EN_Msk);
  425. }
  426. /**
  427. * @brief Get OPA Enable Status
  428. * @rmtoll CR EN FL_OPA_IsEnabled
  429. * @param OPAx OPA instance
  430. * @retval State of bit (1 or 0).
  431. */
  432. __STATIC_INLINE uint32_t FL_OPA_IsEnabled(OPA_Type *OPAx)
  433. {
  434. return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_EN_Msk) == OPA_CR_EN_Msk);
  435. }
  436. /**
  437. * @brief Disable OPA
  438. * @rmtoll CR EN FL_OPA_Disable
  439. * @param OPAx OPA instance
  440. * @retval None
  441. */
  442. __STATIC_INLINE void FL_OPA_Disable(OPA_Type *OPAx)
  443. {
  444. CLEAR_BIT(OPAx->CR, OPA_CR_EN_Msk);
  445. }
  446. /**
  447. * @brief Enable OPA Negative Input Calibration
  448. * @rmtoll CALR NCAL_EN FL_OPA_EnableINNTrim
  449. * @param OPAx OPA instance
  450. * @retval None
  451. */
  452. __STATIC_INLINE void FL_OPA_EnableINNTrim(OPA_Type *OPAx)
  453. {
  454. SET_BIT(OPAx->CALR, OPA_CALR_NCAL_EN_Msk);
  455. }
  456. /**
  457. * @brief Get OPA Negative Input Calibration Enable Status
  458. * @rmtoll CALR NCAL_EN FL_OPA_IsEnabledINNTrim
  459. * @param OPAx OPA instance
  460. * @retval State of bit (1 or 0).
  461. */
  462. __STATIC_INLINE uint32_t FL_OPA_IsEnabledINNTrim(OPA_Type *OPAx)
  463. {
  464. return (uint32_t)(READ_BIT(OPAx->CALR, OPA_CALR_NCAL_EN_Msk) == OPA_CALR_NCAL_EN_Msk);
  465. }
  466. /**
  467. * @brief Disable OPA Negative Input Calibration
  468. * @rmtoll CALR NCAL_EN FL_OPA_DisableINNTrim
  469. * @param OPAx OPA instance
  470. * @retval None
  471. */
  472. __STATIC_INLINE void FL_OPA_DisableINNTrim(OPA_Type *OPAx)
  473. {
  474. CLEAR_BIT(OPAx->CALR, OPA_CALR_NCAL_EN_Msk);
  475. }
  476. /**
  477. * @brief Set OPA Negative Trim Value
  478. * @rmtoll CALR NCAL FL_OPA_WriteNegativeTrim
  479. * @param OPAx OPA instance
  480. * @param value
  481. * @retval None
  482. */
  483. __STATIC_INLINE void FL_OPA_WriteNegativeTrim(OPA_Type *OPAx, uint32_t value)
  484. {
  485. MODIFY_REG(OPAx->CALR, (0x1fU << 16U), (value << 16U));
  486. }
  487. /**
  488. * @brief Get OPA Negative Trim Value
  489. * @rmtoll CALR NCAL FL_OPA_ReadNegativeTrim
  490. * @param OPAx OPA instance
  491. * @retval
  492. */
  493. __STATIC_INLINE uint32_t FL_OPA_ReadNegativeTrim(OPA_Type *OPAx)
  494. {
  495. return (uint32_t)(READ_BIT(OPAx->CALR, (0x1fU << 16U)) >> 16U);
  496. }
  497. /**
  498. * @brief Enable OPA Positive Input Calibration
  499. * @rmtoll CALR PCAL_EN FL_OPA_EnableINPTrim
  500. * @param OPAx OPA instance
  501. * @retval None
  502. */
  503. __STATIC_INLINE void FL_OPA_EnableINPTrim(OPA_Type *OPAx)
  504. {
  505. SET_BIT(OPAx->CALR, OPA_CALR_PCAL_EN_Msk);
  506. }
  507. /**
  508. * @brief Get OPA Positive Input Calibration Enable Status
  509. * @rmtoll CALR PCAL_EN FL_OPA_IsEnabledINPTrim
  510. * @param OPAx OPA instance
  511. * @retval State of bit (1 or 0).
  512. */
  513. __STATIC_INLINE uint32_t FL_OPA_IsEnabledINPTrim(OPA_Type *OPAx)
  514. {
  515. return (uint32_t)(READ_BIT(OPAx->CALR, OPA_CALR_PCAL_EN_Msk) == OPA_CALR_PCAL_EN_Msk);
  516. }
  517. /**
  518. * @brief Disable OPA Positive Input Calibration
  519. * @rmtoll CALR PCAL_EN FL_OPA_DisableINPTrim
  520. * @param OPAx OPA instance
  521. * @retval None
  522. */
  523. __STATIC_INLINE void FL_OPA_DisableINPTrim(OPA_Type *OPAx)
  524. {
  525. CLEAR_BIT(OPAx->CALR, OPA_CALR_PCAL_EN_Msk);
  526. }
  527. /**
  528. * @brief Set OPA Positive Trim Value
  529. * @rmtoll CALR PCAL FL_OPA_WritePositiveTrim
  530. * @param OPAx OPA instance
  531. * @param value
  532. * @retval None
  533. */
  534. __STATIC_INLINE void FL_OPA_WritePositiveTrim(OPA_Type *OPAx, uint32_t value)
  535. {
  536. MODIFY_REG(OPAx->CALR, (0x1fU << 0U), (value << 0U));
  537. }
  538. /**
  539. * @brief Get OPA Positive Trim Value
  540. * @rmtoll CALR PCAL FL_OPA_ReadPositiveTrim
  541. * @param OPAx OPA instance
  542. * @retval
  543. */
  544. __STATIC_INLINE uint32_t FL_OPA_ReadPositiveTrim(OPA_Type *OPAx)
  545. {
  546. return (uint32_t)(READ_BIT(OPAx->CALR, (0x1fU << 0U)) >> 0U);
  547. }
  548. /**
  549. * @brief Enable OPA Comparator Mode Fall Interrupt
  550. * @rmtoll IER FIE FL_OPA_EnableIT_FallingEdge
  551. * @param OPAx OPA instance
  552. * @retval None
  553. */
  554. __STATIC_INLINE void FL_OPA_EnableIT_FallingEdge(OPA_Type *OPAx)
  555. {
  556. SET_BIT(OPAx->IER, OPA_IER_FIE_Msk);
  557. }
  558. /**
  559. * @brief Get OPA Comparator Mode Fall Interrupt Enable Status
  560. * @rmtoll IER FIE FL_OPA_IsEnabledIT_FallingEdge
  561. * @param OPAx OPA instance
  562. * @retval State of bit (1 or 0).
  563. */
  564. __STATIC_INLINE uint32_t FL_OPA_IsEnabledIT_FallingEdge(OPA_Type *OPAx)
  565. {
  566. return (uint32_t)(READ_BIT(OPAx->IER, OPA_IER_FIE_Msk) == OPA_IER_FIE_Msk);
  567. }
  568. /**
  569. * @brief Disable OPA Comparator Mode Fall Interrupt
  570. * @rmtoll IER FIE FL_OPA_DisableIT_FallingEdge
  571. * @param OPAx OPA instance
  572. * @retval None
  573. */
  574. __STATIC_INLINE void FL_OPA_DisableIT_FallingEdge(OPA_Type *OPAx)
  575. {
  576. CLEAR_BIT(OPAx->IER, OPA_IER_FIE_Msk);
  577. }
  578. /**
  579. * @brief Enable OPA Comparator Mode Rise Interrupt
  580. * @rmtoll IER RIE FL_OPA_EnableIT_RisingEdge
  581. * @param OPAx OPA instance
  582. * @retval None
  583. */
  584. __STATIC_INLINE void FL_OPA_EnableIT_RisingEdge(OPA_Type *OPAx)
  585. {
  586. SET_BIT(OPAx->IER, OPA_IER_RIE_Msk);
  587. }
  588. /**
  589. * @brief Get OPA Comparator Mode Rise Interrupt Enable Status
  590. * @rmtoll IER RIE FL_OPA_IsEnabledIT_RisingEdge
  591. * @param OPAx OPA instance
  592. * @retval State of bit (1 or 0).
  593. */
  594. __STATIC_INLINE uint32_t FL_OPA_IsEnabledIT_RisingEdge(OPA_Type *OPAx)
  595. {
  596. return (uint32_t)(READ_BIT(OPAx->IER, OPA_IER_RIE_Msk) == OPA_IER_RIE_Msk);
  597. }
  598. /**
  599. * @brief Disable OPA Comparator Mode Rise Interrupt
  600. * @rmtoll IER RIE FL_OPA_DisableIT_RisingEdge
  601. * @param OPAx OPA instance
  602. * @retval None
  603. */
  604. __STATIC_INLINE void FL_OPA_DisableIT_RisingEdge(OPA_Type *OPAx)
  605. {
  606. CLEAR_BIT(OPAx->IER, OPA_IER_RIE_Msk);
  607. }
  608. /**
  609. * @brief Get OPA Comparator Mode Output Level
  610. * @rmtoll ISR OUT FL_OPA_ReadCOMPModeOutput
  611. * @param RNGx RNG instance
  612. * @retval
  613. */
  614. __STATIC_INLINE uint32_t FL_OPA_ReadCOMPModeOutput(OPA_Type *RNGx)
  615. {
  616. return (uint32_t)(READ_BIT(RNGx->ISR, (0x1U << 15U)) >> 15U);
  617. }
  618. /**
  619. * @brief Get OPA Comparator Mode Fall Interrupt Flag
  620. * @rmtoll ISR FIF FL_OPA_IsActiveFlag_FallingEdge
  621. * @param RNGx RNG instance
  622. * @retval State of bit (1 or 0).
  623. */
  624. __STATIC_INLINE uint32_t FL_OPA_IsActiveFlag_FallingEdge(OPA_Type *RNGx)
  625. {
  626. return (uint32_t)(READ_BIT(RNGx->ISR, OPA_ISR_FIF_Msk) == (OPA_ISR_FIF_Msk));
  627. }
  628. /**
  629. * @brief Clear OPA Comparator Mode Fall Interrupt Flag
  630. * @rmtoll ISR FIF FL_OPA_ClearFlag_FallingEdge
  631. * @param RNGx RNG instance
  632. * @retval None
  633. */
  634. __STATIC_INLINE void FL_OPA_ClearFlag_FallingEdge(OPA_Type *RNGx)
  635. {
  636. WRITE_REG(RNGx->ISR, OPA_ISR_FIF_Msk);
  637. }
  638. /**
  639. * @brief Get OPA Comparator Mode Rise Interrupt Flag
  640. * @rmtoll ISR RIF FL_OPA_IsActiveFlag_RisingEdge
  641. * @param RNGx RNG instance
  642. * @retval State of bit (1 or 0).
  643. */
  644. __STATIC_INLINE uint32_t FL_OPA_IsActiveFlag_RisingEdge(OPA_Type *RNGx)
  645. {
  646. return (uint32_t)(READ_BIT(RNGx->ISR, OPA_ISR_RIF_Msk) == (OPA_ISR_RIF_Msk));
  647. }
  648. /**
  649. * @brief Clear OPA Comparator Mode Rise Interrupt Flag
  650. * @rmtoll ISR RIF FL_OPA_ClearFlag_RisingEdge
  651. * @param RNGx RNG instance
  652. * @retval None
  653. */
  654. __STATIC_INLINE void FL_OPA_ClearFlag_RisingEdge(OPA_Type *RNGx)
  655. {
  656. WRITE_REG(RNGx->ISR, OPA_ISR_RIF_Msk);
  657. }
  658. /**
  659. * @}
  660. */
  661. /** @defgroup OPA_FL_EF_Init Initialization and de-initialization functions
  662. * @{
  663. */
  664. FL_ErrorStatus FL_OPA_DeInit(OPA_Type *OPAx);
  665. void FL_OPA_StructInit(FL_OPA_InitTypeDef *initStruct);
  666. FL_ErrorStatus FL_OPA_Init(OPA_Type *OPAx, FL_OPA_InitTypeDef *initStruct);
  667. /**
  668. * @}
  669. */
  670. /**
  671. * @}
  672. */
  673. /**
  674. * @}
  675. */
  676. #ifdef __cplusplus
  677. }
  678. #endif
  679. #endif /* __FM33LC0XX_FL_OPA_H*/
  680. /*************************Py_Code_Generator Version: 0.1-0.11-0.2 @ 2020-09-23*************************/
  681. /*************************(C) COPYRIGHT Fudan Microelectronics **** END OF FILE*************************/