source: trunk/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_ucpd.c

Last change on this file was 6, checked in by f.jahn, 8 months ago
File size: 5.4 KB
Line 
1/**
2 ******************************************************************************
3 * @file stm32g0xx_ll_ucpd.c
4 * @author MCD Application Team
5 * @brief UCPD LL module driver.
6 ******************************************************************************
7 * @attention
8 *
9 * <h2><center>&copy; Copyright (c) 2018 STMicroelectronics.
10 * All rights reserved.</center></h2>
11 *
12 * This software component is licensed by ST under BSD 3-Clause license,
13 * the "License"; You may not use this file except in compliance with the
14 * License. You may obtain a copy of the License at:
15 * opensource.org/licenses/BSD-3-Clause
16 *
17 ******************************************************************************
18 */
19#if defined(USE_FULL_LL_DRIVER)
20
21/* Includes ------------------------------------------------------------------*/
22#include "stm32g0xx_ll_ucpd.h"
23#include "stm32g0xx_ll_bus.h"
24#include "stm32g0xx_ll_rcc.h"
25
26#ifdef USE_FULL_ASSERT
27#include "stm32_assert.h"
28#else
29#define assert_param(expr) ((void)0U)
30#endif
31
32/** @addtogroup STM32G0xx_LL_Driver
33 * @{
34 */
35#if defined (UCPD1) || defined (UCPD2)
36/** @addtogroup UCPD_LL
37 * @{
38 */
39
40/* Private types -------------------------------------------------------------*/
41/* Private variables ---------------------------------------------------------*/
42
43/* Private constants ---------------------------------------------------------*/
44/** @defgroup UCPD_LL_Private_Constants UCPD Private Constants
45 * @{
46 */
47
48/**
49 * @}
50 */
51
52/* Private macros ------------------------------------------------------------*/
53/** @defgroup UCPD_LL_Private_Macros UCPD Private Macros
54 * @{
55 */
56
57
58/**
59 * @}
60 */
61
62/* Private function prototypes -----------------------------------------------*/
63
64/* Exported functions --------------------------------------------------------*/
65/** @addtogroup UCPD_LL_Exported_Functions
66 * @{
67 */
68
69/** @addtogroup UCPD_LL_EF_Init
70 * @{
71 */
72
73/**
74 * @brief De-initialize the UCPD registers to their default reset values.
75 * @param UCPDx ucpd Instance
76 * @retval An ErrorStatus enumeration value:
77 * - SUCCESS: ucpd registers are de-initialized
78 * - ERROR: ucpd registers are not de-initialized
79 */
80ErrorStatus LL_UCPD_DeInit(UCPD_TypeDef *UCPDx)
81{
82 ErrorStatus status = ERROR;
83
84 /* Check the parameters */
85 assert_param(IS_UCPD_ALL_INSTANCE(UCPDx));
86
87 LL_UCPD_Disable(UCPDx);
88
89 if (UCPD1 == UCPDx)
90 {
91 /* Force reset of ucpd clock */
92 LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_UCPD1);
93
94 /* Release reset of ucpd clock */
95 LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_UCPD1);
96
97 /* Disbale ucpd clock */
98 LL_APB1_GRP1_DisableClock(LL_APB1_GRP1_PERIPH_UCPD1);
99
100 status = SUCCESS;
101 }
102 if (UCPD2 == UCPDx)
103 {
104 /* Force reset of ucpd clock */
105 LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_UCPD2);
106
107 /* Release reset of ucpd clock */
108 LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_UCPD2);
109
110 /* Disbale ucpd clock */
111 LL_APB1_GRP1_DisableClock(LL_APB1_GRP1_PERIPH_UCPD2);
112
113 status = SUCCESS;
114 }
115
116 return status;
117}
118
119/**
120 * @brief Initialize the ucpd registers according to the specified parameters in UCPD_InitStruct.
121 * @note As some bits in ucpd configuration registers can only be written when the ucpd is disabled (ucpd_CR1_SPE bit =0),
122 * UCPD peripheral should be in disabled state prior calling this function. Otherwise, ERROR result will be returned.
123 * @param UCPDx UCPD Instance
124 * @param UCPD_InitStruct pointer to a @ref LL_UCPD_InitTypeDef structure that contains
125 * the configuration information for the UCPD peripheral.
126 * @retval An ErrorStatus enumeration value. (Return always SUCCESS)
127 */
128ErrorStatus LL_UCPD_Init(UCPD_TypeDef *UCPDx, LL_UCPD_InitTypeDef *UCPD_InitStruct)
129{
130 /* Check the ucpd Instance UCPDx*/
131 assert_param(IS_UCPD_ALL_INSTANCE(UCPDx));
132
133 if(UCPD1 == UCPDx)
134 {
135 LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_UCPD1);
136 }
137
138 if(UCPD2 == UCPDx)
139 {
140 LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_UCPD2);
141 }
142
143 LL_UCPD_Disable(UCPDx);
144
145 /*---------------------------- UCPDx CFG1 Configuration ------------------------*/
146 MODIFY_REG(UCPDx->CFG1,
147 UCPD_CFG1_PSC_UCPDCLK | UCPD_CFG1_TRANSWIN | UCPD_CFG1_IFRGAP | UCPD_CFG1_HBITCLKDIV,
148 UCPD_InitStruct->psc_ucpdclk | (UCPD_InitStruct->transwin << UCPD_CFG1_TRANSWIN_Pos) |
149 (UCPD_InitStruct->IfrGap << UCPD_CFG1_IFRGAP_Pos) | UCPD_InitStruct->HbitClockDiv);
150
151 return SUCCESS;
152}
153
154/**
155 * @brief Set each @ref LL_UCPD_InitTypeDef field to default value.
156 * @param UCPD_InitStruct pointer to a @ref LL_UCPD_InitTypeDef structure
157 * whose fields will be set to default values.
158 * @retval None
159 */
160void LL_UCPD_StructInit(LL_UCPD_InitTypeDef *UCPD_InitStruct)
161{
162 /* Set UCPD_InitStruct fields to default values */
163 UCPD_InitStruct->psc_ucpdclk = LL_UCPD_PSC_DIV1;
164 UCPD_InitStruct->transwin = 0x7; /* Divide by 8 */
165 UCPD_InitStruct->IfrGap = 0x10; /* Divide by 17 */
166 UCPD_InitStruct->HbitClockDiv = 0x19; /* Divide by 26 to produce HBITCLK */
167}
168
169/**
170 * @}
171 */
172
173/**
174 * @}
175 */
176
177/**
178 * @}
179 */
180#endif /* defined (UCPD1) || defined (UCPD2) */
181/**
182 * @}
183 */
184
185#endif /* USE_FULL_LL_DRIVER */
186
187/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Note: See TracBrowser for help on using the repository browser.