inport from local

Dependents:   Hobbyking_Cheetah_0511

Committer:
NYX
Date:
Mon Mar 16 06:35:48 2020 +0000
Revision:
0:85b3fd62ea1a
reinport to mbed;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
NYX 0:85b3fd62ea1a 1 /**
NYX 0:85b3fd62ea1a 2 ******************************************************************************
NYX 0:85b3fd62ea1a 3 * @file stm32f4xx_ll_dma2d.c
NYX 0:85b3fd62ea1a 4 * @author MCD Application Team
NYX 0:85b3fd62ea1a 5 * @version V1.7.1
NYX 0:85b3fd62ea1a 6 * @date 14-April-2017
NYX 0:85b3fd62ea1a 7 * @brief DMA2D LL module driver.
NYX 0:85b3fd62ea1a 8 ******************************************************************************
NYX 0:85b3fd62ea1a 9 * @attention
NYX 0:85b3fd62ea1a 10 *
NYX 0:85b3fd62ea1a 11 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
NYX 0:85b3fd62ea1a 12 *
NYX 0:85b3fd62ea1a 13 * Redistribution and use in source and binary forms, with or without modification,
NYX 0:85b3fd62ea1a 14 * are permitted provided that the following conditions are met:
NYX 0:85b3fd62ea1a 15 * 1. Redistributions of source code must retain the above copyright notice,
NYX 0:85b3fd62ea1a 16 * this list of conditions and the following disclaimer.
NYX 0:85b3fd62ea1a 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
NYX 0:85b3fd62ea1a 18 * this list of conditions and the following disclaimer in the documentation
NYX 0:85b3fd62ea1a 19 * and/or other materials provided with the distribution.
NYX 0:85b3fd62ea1a 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
NYX 0:85b3fd62ea1a 21 * may be used to endorse or promote products derived from this software
NYX 0:85b3fd62ea1a 22 * without specific prior written permission.
NYX 0:85b3fd62ea1a 23 *
NYX 0:85b3fd62ea1a 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
NYX 0:85b3fd62ea1a 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
NYX 0:85b3fd62ea1a 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
NYX 0:85b3fd62ea1a 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
NYX 0:85b3fd62ea1a 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
NYX 0:85b3fd62ea1a 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
NYX 0:85b3fd62ea1a 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
NYX 0:85b3fd62ea1a 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
NYX 0:85b3fd62ea1a 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
NYX 0:85b3fd62ea1a 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
NYX 0:85b3fd62ea1a 34 *
NYX 0:85b3fd62ea1a 35 ******************************************************************************
NYX 0:85b3fd62ea1a 36 */
NYX 0:85b3fd62ea1a 37 #if defined(USE_FULL_LL_DRIVER)
NYX 0:85b3fd62ea1a 38
NYX 0:85b3fd62ea1a 39 /* Includes ------------------------------------------------------------------*/
NYX 0:85b3fd62ea1a 40 #include "stm32f4xx_ll_dma2d.h"
NYX 0:85b3fd62ea1a 41 #include "stm32f4xx_ll_bus.h"
NYX 0:85b3fd62ea1a 42 #ifdef USE_FULL_ASSERT
NYX 0:85b3fd62ea1a 43 #include "stm32_assert.h"
NYX 0:85b3fd62ea1a 44 #else
NYX 0:85b3fd62ea1a 45 #define assert_param(expr) ((void)0U)
NYX 0:85b3fd62ea1a 46 #endif
NYX 0:85b3fd62ea1a 47
NYX 0:85b3fd62ea1a 48 /** @addtogroup STM32F4xx_LL_Driver
NYX 0:85b3fd62ea1a 49 * @{
NYX 0:85b3fd62ea1a 50 */
NYX 0:85b3fd62ea1a 51
NYX 0:85b3fd62ea1a 52 #if defined (DMA2D)
NYX 0:85b3fd62ea1a 53
NYX 0:85b3fd62ea1a 54 /** @addtogroup DMA2D_LL
NYX 0:85b3fd62ea1a 55 * @{
NYX 0:85b3fd62ea1a 56 */
NYX 0:85b3fd62ea1a 57
NYX 0:85b3fd62ea1a 58 /* Private types -------------------------------------------------------------*/
NYX 0:85b3fd62ea1a 59 /* Private variables ---------------------------------------------------------*/
NYX 0:85b3fd62ea1a 60 /* Private constants ---------------------------------------------------------*/
NYX 0:85b3fd62ea1a 61 /** @addtogroup DMA2D_LL_Private_Constants DMA2D Private Constants
NYX 0:85b3fd62ea1a 62 * @{
NYX 0:85b3fd62ea1a 63 */
NYX 0:85b3fd62ea1a 64 #define LL_DMA2D_COLOR 0xFFU /*!< Maximum output color setting */
NYX 0:85b3fd62ea1a 65 #define LL_DMA2D_NUMBEROFLINES DMA2D_NLR_NL /*!< Maximum number of lines */
NYX 0:85b3fd62ea1a 66 #define LL_DMA2D_NUMBEROFPIXELS (DMA2D_NLR_PL >> DMA2D_NLR_PL_Pos) /*!< Maximum number of pixels per lines */
NYX 0:85b3fd62ea1a 67 #define LL_DMA2D_OFFSET_MAX 0x3FFFU /*!< Maximum output line offset expressed in pixels */
NYX 0:85b3fd62ea1a 68 #define LL_DMA2D_CLUTSIZE_MAX 0xFFU /*!< Maximum CLUT size */
NYX 0:85b3fd62ea1a 69 /**
NYX 0:85b3fd62ea1a 70 * @}
NYX 0:85b3fd62ea1a 71 */
NYX 0:85b3fd62ea1a 72 /* Private macros ------------------------------------------------------------*/
NYX 0:85b3fd62ea1a 73 /** @addtogroup DMA2D_LL_Private_Macros
NYX 0:85b3fd62ea1a 74 * @{
NYX 0:85b3fd62ea1a 75 */
NYX 0:85b3fd62ea1a 76 #define IS_LL_DMA2D_MODE(MODE) (((MODE) == LL_DMA2D_MODE_M2M) || \
NYX 0:85b3fd62ea1a 77 ((MODE) == LL_DMA2D_MODE_M2M_PFC) || \
NYX 0:85b3fd62ea1a 78 ((MODE) == LL_DMA2D_MODE_M2M_BLEND) || \
NYX 0:85b3fd62ea1a 79 ((MODE) == LL_DMA2D_MODE_R2M))
NYX 0:85b3fd62ea1a 80
NYX 0:85b3fd62ea1a 81 #define IS_LL_DMA2D_OCMODE(MODE_ARGB) (((MODE_ARGB) == LL_DMA2D_OUTPUT_MODE_ARGB8888) || \
NYX 0:85b3fd62ea1a 82 ((MODE_ARGB) == LL_DMA2D_OUTPUT_MODE_RGB888) || \
NYX 0:85b3fd62ea1a 83 ((MODE_ARGB) == LL_DMA2D_OUTPUT_MODE_RGB565) || \
NYX 0:85b3fd62ea1a 84 ((MODE_ARGB) == LL_DMA2D_OUTPUT_MODE_ARGB1555) || \
NYX 0:85b3fd62ea1a 85 ((MODE_ARGB) == LL_DMA2D_OUTPUT_MODE_ARGB4444))
NYX 0:85b3fd62ea1a 86
NYX 0:85b3fd62ea1a 87 #define IS_LL_DMA2D_GREEN(GREEN) ((GREEN) <= LL_DMA2D_COLOR)
NYX 0:85b3fd62ea1a 88 #define IS_LL_DMA2D_RED(RED) ((RED) <= LL_DMA2D_COLOR)
NYX 0:85b3fd62ea1a 89 #define IS_LL_DMA2D_BLUE(BLUE) ((BLUE) <= LL_DMA2D_COLOR)
NYX 0:85b3fd62ea1a 90 #define IS_LL_DMA2D_ALPHA(ALPHA) ((ALPHA) <= LL_DMA2D_COLOR)
NYX 0:85b3fd62ea1a 91
NYX 0:85b3fd62ea1a 92 #define IS_LL_DMA2D_OFFSET(OFFSET) ((OFFSET) <= LL_DMA2D_OFFSET_MAX)
NYX 0:85b3fd62ea1a 93
NYX 0:85b3fd62ea1a 94 #define IS_LL_DMA2D_LINE(LINES) ((LINES) <= LL_DMA2D_NUMBEROFLINES)
NYX 0:85b3fd62ea1a 95 #define IS_LL_DMA2D_PIXEL(PIXELS) ((PIXELS) <= LL_DMA2D_NUMBEROFPIXELS)
NYX 0:85b3fd62ea1a 96
NYX 0:85b3fd62ea1a 97 #define IS_LL_DMA2D_LCMODE(MODE_ARGB) (((MODE_ARGB) == LL_DMA2D_INPUT_MODE_ARGB8888) || \
NYX 0:85b3fd62ea1a 98 ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_RGB888) || \
NYX 0:85b3fd62ea1a 99 ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_RGB565) || \
NYX 0:85b3fd62ea1a 100 ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_ARGB1555) || \
NYX 0:85b3fd62ea1a 101 ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_ARGB4444) || \
NYX 0:85b3fd62ea1a 102 ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_L8) || \
NYX 0:85b3fd62ea1a 103 ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_AL44) || \
NYX 0:85b3fd62ea1a 104 ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_AL88) || \
NYX 0:85b3fd62ea1a 105 ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_L4) || \
NYX 0:85b3fd62ea1a 106 ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_A8) || \
NYX 0:85b3fd62ea1a 107 ((MODE_ARGB) == LL_DMA2D_INPUT_MODE_A4))
NYX 0:85b3fd62ea1a 108
NYX 0:85b3fd62ea1a 109 #define IS_LL_DMA2D_CLUTCMODE(CLUTCMODE) (((CLUTCMODE) == LL_DMA2D_CLUT_COLOR_MODE_ARGB8888) || \
NYX 0:85b3fd62ea1a 110 ((CLUTCMODE) == LL_DMA2D_CLUT_COLOR_MODE_RGB888))
NYX 0:85b3fd62ea1a 111
NYX 0:85b3fd62ea1a 112 #define IS_LL_DMA2D_CLUTSIZE(SIZE) ((SIZE) <= LL_DMA2D_CLUTSIZE_MAX)
NYX 0:85b3fd62ea1a 113
NYX 0:85b3fd62ea1a 114 #define IS_LL_DMA2D_ALPHAMODE(MODE) (((MODE) == LL_DMA2D_ALPHA_MODE_NO_MODIF) || \
NYX 0:85b3fd62ea1a 115 ((MODE) == LL_DMA2D_ALPHA_MODE_REPLACE) || \
NYX 0:85b3fd62ea1a 116 ((MODE) == LL_DMA2D_ALPHA_MODE_COMBINE))
NYX 0:85b3fd62ea1a 117 /**
NYX 0:85b3fd62ea1a 118 * @}
NYX 0:85b3fd62ea1a 119 */
NYX 0:85b3fd62ea1a 120
NYX 0:85b3fd62ea1a 121 /* Private function prototypes -----------------------------------------------*/
NYX 0:85b3fd62ea1a 122
NYX 0:85b3fd62ea1a 123 /* Exported functions --------------------------------------------------------*/
NYX 0:85b3fd62ea1a 124 /** @addtogroup DMA2D_LL_Exported_Functions
NYX 0:85b3fd62ea1a 125 * @{
NYX 0:85b3fd62ea1a 126 */
NYX 0:85b3fd62ea1a 127
NYX 0:85b3fd62ea1a 128 /** @addtogroup DMA2D_LL_EF_Init_Functions Initialization and De-initialization Functions
NYX 0:85b3fd62ea1a 129 * @{
NYX 0:85b3fd62ea1a 130 */
NYX 0:85b3fd62ea1a 131
NYX 0:85b3fd62ea1a 132 /**
NYX 0:85b3fd62ea1a 133 * @brief De-initialize DMA2D registers (registers restored to their default values).
NYX 0:85b3fd62ea1a 134 * @param DMA2Dx DMA2D Instance
NYX 0:85b3fd62ea1a 135 * @retval An ErrorStatus enumeration value:
NYX 0:85b3fd62ea1a 136 * - SUCCESS: DMA2D registers are de-initialized
NYX 0:85b3fd62ea1a 137 * - ERROR: DMA2D registers are not de-initialized
NYX 0:85b3fd62ea1a 138 */
NYX 0:85b3fd62ea1a 139 ErrorStatus LL_DMA2D_DeInit(DMA2D_TypeDef *DMA2Dx)
NYX 0:85b3fd62ea1a 140 {
NYX 0:85b3fd62ea1a 141 ErrorStatus status = SUCCESS;
NYX 0:85b3fd62ea1a 142
NYX 0:85b3fd62ea1a 143 /* Check the parameters */
NYX 0:85b3fd62ea1a 144 assert_param(IS_DMA2D_ALL_INSTANCE(DMA2Dx));
NYX 0:85b3fd62ea1a 145
NYX 0:85b3fd62ea1a 146 if (DMA2Dx == DMA2D)
NYX 0:85b3fd62ea1a 147 {
NYX 0:85b3fd62ea1a 148 /* Force reset of DMA2D clock */
NYX 0:85b3fd62ea1a 149 LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_DMA2D);
NYX 0:85b3fd62ea1a 150
NYX 0:85b3fd62ea1a 151 /* Release reset of DMA2D clock */
NYX 0:85b3fd62ea1a 152 LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_DMA2D);
NYX 0:85b3fd62ea1a 153 }
NYX 0:85b3fd62ea1a 154 else
NYX 0:85b3fd62ea1a 155 {
NYX 0:85b3fd62ea1a 156 status = ERROR;
NYX 0:85b3fd62ea1a 157 }
NYX 0:85b3fd62ea1a 158
NYX 0:85b3fd62ea1a 159 return (status);
NYX 0:85b3fd62ea1a 160 }
NYX 0:85b3fd62ea1a 161
NYX 0:85b3fd62ea1a 162 /**
NYX 0:85b3fd62ea1a 163 * @brief Initialize DMA2D registers according to the specified parameters in DMA2D_InitStruct.
NYX 0:85b3fd62ea1a 164 * @note DMA2D transfers must be disabled to set initialization bits in configuration registers,
NYX 0:85b3fd62ea1a 165 * otherwise ERROR result is returned.
NYX 0:85b3fd62ea1a 166 * @param DMA2Dx DMA2D Instance
NYX 0:85b3fd62ea1a 167 * @param DMA2D_InitStruct: pointer to a LL_DMA2D_InitTypeDef structure
NYX 0:85b3fd62ea1a 168 * that contains the configuration information for the specified DMA2D peripheral.
NYX 0:85b3fd62ea1a 169 * @retval An ErrorStatus enumeration value:
NYX 0:85b3fd62ea1a 170 * - SUCCESS: DMA2D registers are initialized according to DMA2D_InitStruct content
NYX 0:85b3fd62ea1a 171 * - ERROR: Issue occurred during DMA2D registers initialization
NYX 0:85b3fd62ea1a 172 */
NYX 0:85b3fd62ea1a 173 ErrorStatus LL_DMA2D_Init(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_InitTypeDef *DMA2D_InitStruct)
NYX 0:85b3fd62ea1a 174 {
NYX 0:85b3fd62ea1a 175 ErrorStatus status = ERROR;
NYX 0:85b3fd62ea1a 176 LL_DMA2D_ColorTypeDef DMA2D_ColorStruct;
NYX 0:85b3fd62ea1a 177 uint32_t tmp = 0U, tmp1 = 0U, tmp2 = 0U;
NYX 0:85b3fd62ea1a 178
NYX 0:85b3fd62ea1a 179 /* Check the parameters */
NYX 0:85b3fd62ea1a 180 assert_param(IS_DMA2D_ALL_INSTANCE(DMA2Dx));
NYX 0:85b3fd62ea1a 181 assert_param(IS_LL_DMA2D_MODE(DMA2D_InitStruct->Mode));
NYX 0:85b3fd62ea1a 182 assert_param(IS_LL_DMA2D_OCMODE(DMA2D_InitStruct->ColorMode));
NYX 0:85b3fd62ea1a 183 assert_param(IS_LL_DMA2D_LINE(DMA2D_InitStruct->NbrOfLines));
NYX 0:85b3fd62ea1a 184 assert_param(IS_LL_DMA2D_PIXEL(DMA2D_InitStruct->NbrOfPixelsPerLines));
NYX 0:85b3fd62ea1a 185 assert_param(IS_LL_DMA2D_GREEN(DMA2D_InitStruct->OutputGreen));
NYX 0:85b3fd62ea1a 186 assert_param(IS_LL_DMA2D_RED(DMA2D_InitStruct->OutputRed));
NYX 0:85b3fd62ea1a 187 assert_param(IS_LL_DMA2D_BLUE(DMA2D_InitStruct->OutputBlue));
NYX 0:85b3fd62ea1a 188 assert_param(IS_LL_DMA2D_ALPHA(DMA2D_InitStruct->OutputAlpha));
NYX 0:85b3fd62ea1a 189 assert_param(IS_LL_DMA2D_OFFSET(DMA2D_InitStruct->LineOffset));
NYX 0:85b3fd62ea1a 190
NYX 0:85b3fd62ea1a 191 /* DMA2D transfers must be disabled to configure bits in initialization registers */
NYX 0:85b3fd62ea1a 192 tmp = LL_DMA2D_IsTransferOngoing(DMA2Dx);
NYX 0:85b3fd62ea1a 193 tmp1 = LL_DMA2D_FGND_IsEnabledCLUTLoad(DMA2Dx);
NYX 0:85b3fd62ea1a 194 tmp2 = LL_DMA2D_BGND_IsEnabledCLUTLoad(DMA2Dx);
NYX 0:85b3fd62ea1a 195 if ((tmp == 0U) && (tmp1 == 0U) && (tmp2 == 0U))
NYX 0:85b3fd62ea1a 196 {
NYX 0:85b3fd62ea1a 197 /* DMA2D CR register configuration -------------------------------------------*/
NYX 0:85b3fd62ea1a 198 LL_DMA2D_SetMode(DMA2Dx, DMA2D_InitStruct->Mode);
NYX 0:85b3fd62ea1a 199
NYX 0:85b3fd62ea1a 200 /* DMA2D OPFCCR register configuration ---------------------------------------*/
NYX 0:85b3fd62ea1a 201 MODIFY_REG(DMA2Dx->OPFCCR, DMA2D_OPFCCR_CM, DMA2D_InitStruct->ColorMode);
NYX 0:85b3fd62ea1a 202
NYX 0:85b3fd62ea1a 203 /* DMA2D OOR register configuration ------------------------------------------*/
NYX 0:85b3fd62ea1a 204 LL_DMA2D_SetLineOffset(DMA2Dx, DMA2D_InitStruct->LineOffset);
NYX 0:85b3fd62ea1a 205
NYX 0:85b3fd62ea1a 206 /* DMA2D NLR register configuration ------------------------------------------*/
NYX 0:85b3fd62ea1a 207 LL_DMA2D_ConfigSize(DMA2Dx, DMA2D_InitStruct->NbrOfLines, DMA2D_InitStruct->NbrOfPixelsPerLines);
NYX 0:85b3fd62ea1a 208
NYX 0:85b3fd62ea1a 209 /* DMA2D OMAR register configuration ------------------------------------------*/
NYX 0:85b3fd62ea1a 210 LL_DMA2D_SetOutputMemAddr(DMA2Dx, DMA2D_InitStruct->OutputMemoryAddress);
NYX 0:85b3fd62ea1a 211
NYX 0:85b3fd62ea1a 212 /* DMA2D OCOLR register configuration ------------------------------------------*/
NYX 0:85b3fd62ea1a 213 DMA2D_ColorStruct.ColorMode = DMA2D_InitStruct->ColorMode;
NYX 0:85b3fd62ea1a 214 DMA2D_ColorStruct.OutputBlue = DMA2D_InitStruct->OutputBlue;
NYX 0:85b3fd62ea1a 215 DMA2D_ColorStruct.OutputGreen = DMA2D_InitStruct->OutputGreen;
NYX 0:85b3fd62ea1a 216 DMA2D_ColorStruct.OutputRed = DMA2D_InitStruct->OutputRed;
NYX 0:85b3fd62ea1a 217 DMA2D_ColorStruct.OutputAlpha = DMA2D_InitStruct->OutputAlpha;
NYX 0:85b3fd62ea1a 218 LL_DMA2D_ConfigOutputColor(DMA2Dx, &DMA2D_ColorStruct);
NYX 0:85b3fd62ea1a 219
NYX 0:85b3fd62ea1a 220 status = SUCCESS;
NYX 0:85b3fd62ea1a 221 }
NYX 0:85b3fd62ea1a 222 /* If DMA2D transfers are not disabled, return ERROR */
NYX 0:85b3fd62ea1a 223
NYX 0:85b3fd62ea1a 224 return (status);
NYX 0:85b3fd62ea1a 225 }
NYX 0:85b3fd62ea1a 226
NYX 0:85b3fd62ea1a 227 /**
NYX 0:85b3fd62ea1a 228 * @brief Set each @ref LL_DMA2D_InitTypeDef field to default value.
NYX 0:85b3fd62ea1a 229 * @param DMA2D_InitStruct: pointer to a @ref LL_DMA2D_InitTypeDef structure
NYX 0:85b3fd62ea1a 230 * whose fields will be set to default values.
NYX 0:85b3fd62ea1a 231 * @retval None
NYX 0:85b3fd62ea1a 232 */
NYX 0:85b3fd62ea1a 233 void LL_DMA2D_StructInit(LL_DMA2D_InitTypeDef *DMA2D_InitStruct)
NYX 0:85b3fd62ea1a 234 {
NYX 0:85b3fd62ea1a 235 /* Set DMA2D_InitStruct fields to default values */
NYX 0:85b3fd62ea1a 236 DMA2D_InitStruct->Mode = LL_DMA2D_MODE_M2M;
NYX 0:85b3fd62ea1a 237 DMA2D_InitStruct->ColorMode = LL_DMA2D_OUTPUT_MODE_ARGB8888;
NYX 0:85b3fd62ea1a 238 DMA2D_InitStruct->NbrOfLines = 0x0U;
NYX 0:85b3fd62ea1a 239 DMA2D_InitStruct->NbrOfPixelsPerLines = 0x0U;
NYX 0:85b3fd62ea1a 240 DMA2D_InitStruct->LineOffset = 0x0U;
NYX 0:85b3fd62ea1a 241 DMA2D_InitStruct->OutputBlue = 0x0U;
NYX 0:85b3fd62ea1a 242 DMA2D_InitStruct->OutputGreen = 0x0U;
NYX 0:85b3fd62ea1a 243 DMA2D_InitStruct->OutputRed = 0x0U;
NYX 0:85b3fd62ea1a 244 DMA2D_InitStruct->OutputAlpha = 0x0U;
NYX 0:85b3fd62ea1a 245 DMA2D_InitStruct->OutputMemoryAddress = 0x0U;
NYX 0:85b3fd62ea1a 246 }
NYX 0:85b3fd62ea1a 247
NYX 0:85b3fd62ea1a 248 /**
NYX 0:85b3fd62ea1a 249 * @brief Configure the foreground or background according to the specified parameters
NYX 0:85b3fd62ea1a 250 * in the LL_DMA2D_LayerCfgTypeDef structure.
NYX 0:85b3fd62ea1a 251 * @param DMA2Dx DMA2D Instance
NYX 0:85b3fd62ea1a 252 * @param DMA2D_LayerCfg: pointer to a LL_DMA2D_LayerCfgTypeDef structure that contains
NYX 0:85b3fd62ea1a 253 * the configuration information for the specified layer.
NYX 0:85b3fd62ea1a 254 * @param LayerIdx: DMA2D Layer index.
NYX 0:85b3fd62ea1a 255 * This parameter can be one of the following values:
NYX 0:85b3fd62ea1a 256 * 0(background) / 1(foreground)
NYX 0:85b3fd62ea1a 257 * @retval None
NYX 0:85b3fd62ea1a 258 */
NYX 0:85b3fd62ea1a 259 void LL_DMA2D_ConfigLayer(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_LayerCfgTypeDef *DMA2D_LayerCfg, uint32_t LayerIdx)
NYX 0:85b3fd62ea1a 260 {
NYX 0:85b3fd62ea1a 261 /* Check the parameters */
NYX 0:85b3fd62ea1a 262 assert_param(IS_LL_DMA2D_OFFSET(DMA2D_LayerCfg->LineOffset));
NYX 0:85b3fd62ea1a 263 assert_param(IS_LL_DMA2D_LCMODE(DMA2D_LayerCfg->ColorMode));
NYX 0:85b3fd62ea1a 264 assert_param(IS_LL_DMA2D_CLUTCMODE(DMA2D_LayerCfg->CLUTColorMode));
NYX 0:85b3fd62ea1a 265 assert_param(IS_LL_DMA2D_CLUTSIZE(DMA2D_LayerCfg->CLUTSize));
NYX 0:85b3fd62ea1a 266 assert_param(IS_LL_DMA2D_ALPHAMODE(DMA2D_LayerCfg->AlphaMode));
NYX 0:85b3fd62ea1a 267 assert_param(IS_LL_DMA2D_GREEN(DMA2D_LayerCfg->Green));
NYX 0:85b3fd62ea1a 268 assert_param(IS_LL_DMA2D_RED(DMA2D_LayerCfg->Red));
NYX 0:85b3fd62ea1a 269 assert_param(IS_LL_DMA2D_BLUE(DMA2D_LayerCfg->Blue));
NYX 0:85b3fd62ea1a 270 assert_param(IS_LL_DMA2D_ALPHA(DMA2D_LayerCfg->Alpha));
NYX 0:85b3fd62ea1a 271
NYX 0:85b3fd62ea1a 272 if (LayerIdx == 0U)
NYX 0:85b3fd62ea1a 273 {
NYX 0:85b3fd62ea1a 274 /* Configure the background memory address */
NYX 0:85b3fd62ea1a 275 LL_DMA2D_BGND_SetMemAddr(DMA2Dx, DMA2D_LayerCfg->MemoryAddress);
NYX 0:85b3fd62ea1a 276
NYX 0:85b3fd62ea1a 277 /* Configure the background line offset */
NYX 0:85b3fd62ea1a 278 LL_DMA2D_BGND_SetLineOffset(DMA2Dx, DMA2D_LayerCfg->LineOffset);
NYX 0:85b3fd62ea1a 279
NYX 0:85b3fd62ea1a 280 /* Configure the background Alpha value, Alpha mode, CLUT size, CLUT Color mode and Color mode */
NYX 0:85b3fd62ea1a 281 MODIFY_REG(DMA2Dx->BGPFCCR, \
NYX 0:85b3fd62ea1a 282 (DMA2D_BGPFCCR_ALPHA | DMA2D_BGPFCCR_AM | DMA2D_BGPFCCR_CS | DMA2D_BGPFCCR_CCM | DMA2D_BGPFCCR_CM), \
NYX 0:85b3fd62ea1a 283 ((DMA2D_LayerCfg->Alpha << DMA2D_BGPFCCR_ALPHA_Pos) | DMA2D_LayerCfg->AlphaMode | \
NYX 0:85b3fd62ea1a 284 (DMA2D_LayerCfg->CLUTSize << DMA2D_BGPFCCR_CS_Pos) | DMA2D_LayerCfg->CLUTColorMode | \
NYX 0:85b3fd62ea1a 285 DMA2D_LayerCfg->ColorMode));
NYX 0:85b3fd62ea1a 286
NYX 0:85b3fd62ea1a 287 /* Configure the background color */
NYX 0:85b3fd62ea1a 288 LL_DMA2D_BGND_SetColor(DMA2Dx, DMA2D_LayerCfg->Red, DMA2D_LayerCfg->Green, DMA2D_LayerCfg->Blue);
NYX 0:85b3fd62ea1a 289
NYX 0:85b3fd62ea1a 290 /* Configure the background CLUT memory address */
NYX 0:85b3fd62ea1a 291 LL_DMA2D_BGND_SetCLUTMemAddr(DMA2Dx, DMA2D_LayerCfg->CLUTMemoryAddress);
NYX 0:85b3fd62ea1a 292 }
NYX 0:85b3fd62ea1a 293 else
NYX 0:85b3fd62ea1a 294 {
NYX 0:85b3fd62ea1a 295 /* Configure the foreground memory address */
NYX 0:85b3fd62ea1a 296 LL_DMA2D_FGND_SetMemAddr(DMA2Dx, DMA2D_LayerCfg->MemoryAddress);
NYX 0:85b3fd62ea1a 297
NYX 0:85b3fd62ea1a 298 /* Configure the foreground line offset */
NYX 0:85b3fd62ea1a 299 LL_DMA2D_FGND_SetLineOffset(DMA2Dx, DMA2D_LayerCfg->LineOffset);
NYX 0:85b3fd62ea1a 300
NYX 0:85b3fd62ea1a 301 /* Configure the foreground Alpha value, Alpha mode, CLUT size, CLUT Color mode and Color mode */
NYX 0:85b3fd62ea1a 302 MODIFY_REG(DMA2Dx->FGPFCCR, \
NYX 0:85b3fd62ea1a 303 (DMA2D_FGPFCCR_ALPHA | DMA2D_FGPFCCR_AM | DMA2D_FGPFCCR_CS | DMA2D_FGPFCCR_CCM | DMA2D_FGPFCCR_CM), \
NYX 0:85b3fd62ea1a 304 ((DMA2D_LayerCfg->Alpha << DMA2D_FGPFCCR_ALPHA_Pos) | DMA2D_LayerCfg->AlphaMode | \
NYX 0:85b3fd62ea1a 305 (DMA2D_LayerCfg->CLUTSize << DMA2D_FGPFCCR_CS_Pos) | DMA2D_LayerCfg->CLUTColorMode | \
NYX 0:85b3fd62ea1a 306 DMA2D_LayerCfg->ColorMode));
NYX 0:85b3fd62ea1a 307
NYX 0:85b3fd62ea1a 308 /* Configure the foreground color */
NYX 0:85b3fd62ea1a 309 LL_DMA2D_FGND_SetColor(DMA2Dx, DMA2D_LayerCfg->Red, DMA2D_LayerCfg->Green, DMA2D_LayerCfg->Blue);
NYX 0:85b3fd62ea1a 310
NYX 0:85b3fd62ea1a 311 /* Configure the foreground CLUT memory address */
NYX 0:85b3fd62ea1a 312 LL_DMA2D_FGND_SetCLUTMemAddr(DMA2Dx, DMA2D_LayerCfg->CLUTMemoryAddress);
NYX 0:85b3fd62ea1a 313 }
NYX 0:85b3fd62ea1a 314 }
NYX 0:85b3fd62ea1a 315
NYX 0:85b3fd62ea1a 316 /**
NYX 0:85b3fd62ea1a 317 * @brief Set each @ref LL_DMA2D_LayerCfgTypeDef field to default value.
NYX 0:85b3fd62ea1a 318 * @param DMA2D_LayerCfg: pointer to a @ref LL_DMA2D_LayerCfgTypeDef structure
NYX 0:85b3fd62ea1a 319 * whose fields will be set to default values.
NYX 0:85b3fd62ea1a 320 * @retval None
NYX 0:85b3fd62ea1a 321 */
NYX 0:85b3fd62ea1a 322 void LL_DMA2D_LayerCfgStructInit(LL_DMA2D_LayerCfgTypeDef *DMA2D_LayerCfg)
NYX 0:85b3fd62ea1a 323 {
NYX 0:85b3fd62ea1a 324 /* Set DMA2D_LayerCfg fields to default values */
NYX 0:85b3fd62ea1a 325 DMA2D_LayerCfg->MemoryAddress = 0x0U;
NYX 0:85b3fd62ea1a 326 DMA2D_LayerCfg->ColorMode = LL_DMA2D_INPUT_MODE_ARGB8888;
NYX 0:85b3fd62ea1a 327 DMA2D_LayerCfg->LineOffset = 0x0U;
NYX 0:85b3fd62ea1a 328 DMA2D_LayerCfg->CLUTColorMode = LL_DMA2D_CLUT_COLOR_MODE_ARGB8888;
NYX 0:85b3fd62ea1a 329 DMA2D_LayerCfg->CLUTSize = 0x0U;
NYX 0:85b3fd62ea1a 330 DMA2D_LayerCfg->AlphaMode = LL_DMA2D_ALPHA_MODE_NO_MODIF;
NYX 0:85b3fd62ea1a 331 DMA2D_LayerCfg->Alpha = 0x0U;
NYX 0:85b3fd62ea1a 332 DMA2D_LayerCfg->Blue = 0x0U;
NYX 0:85b3fd62ea1a 333 DMA2D_LayerCfg->Green = 0x0U;
NYX 0:85b3fd62ea1a 334 DMA2D_LayerCfg->Red = 0x0U;
NYX 0:85b3fd62ea1a 335 DMA2D_LayerCfg->CLUTMemoryAddress = 0x0U;
NYX 0:85b3fd62ea1a 336 }
NYX 0:85b3fd62ea1a 337
NYX 0:85b3fd62ea1a 338 /**
NYX 0:85b3fd62ea1a 339 * @brief Initialize DMA2D output color register according to the specified parameters
NYX 0:85b3fd62ea1a 340 * in DMA2D_ColorStruct.
NYX 0:85b3fd62ea1a 341 * @param DMA2Dx DMA2D Instance
NYX 0:85b3fd62ea1a 342 * @param DMA2D_ColorStruct: pointer to a LL_DMA2D_ColorTypeDef structure that contains
NYX 0:85b3fd62ea1a 343 * the color configuration information for the specified DMA2D peripheral.
NYX 0:85b3fd62ea1a 344 * @retval None
NYX 0:85b3fd62ea1a 345 */
NYX 0:85b3fd62ea1a 346 void LL_DMA2D_ConfigOutputColor(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_ColorTypeDef *DMA2D_ColorStruct)
NYX 0:85b3fd62ea1a 347 {
NYX 0:85b3fd62ea1a 348 uint32_t outgreen = 0U;
NYX 0:85b3fd62ea1a 349 uint32_t outred = 0U;
NYX 0:85b3fd62ea1a 350 uint32_t outalpha = 0U;
NYX 0:85b3fd62ea1a 351
NYX 0:85b3fd62ea1a 352 /* Check the parameters */
NYX 0:85b3fd62ea1a 353 assert_param(IS_DMA2D_ALL_INSTANCE(DMA2Dx));
NYX 0:85b3fd62ea1a 354 assert_param(IS_LL_DMA2D_OCMODE(DMA2D_ColorStruct->ColorMode));
NYX 0:85b3fd62ea1a 355 assert_param(IS_LL_DMA2D_GREEN(DMA2D_ColorStruct->OutputGreen));
NYX 0:85b3fd62ea1a 356 assert_param(IS_LL_DMA2D_RED(DMA2D_ColorStruct->OutputRed));
NYX 0:85b3fd62ea1a 357 assert_param(IS_LL_DMA2D_BLUE(DMA2D_ColorStruct->OutputBlue));
NYX 0:85b3fd62ea1a 358 assert_param(IS_LL_DMA2D_ALPHA(DMA2D_ColorStruct->OutputAlpha));
NYX 0:85b3fd62ea1a 359
NYX 0:85b3fd62ea1a 360 /* DMA2D OCOLR register configuration ------------------------------------------*/
NYX 0:85b3fd62ea1a 361 if (DMA2D_ColorStruct->ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB8888)
NYX 0:85b3fd62ea1a 362 {
NYX 0:85b3fd62ea1a 363 outgreen = DMA2D_ColorStruct->OutputGreen << 8U;
NYX 0:85b3fd62ea1a 364 outred = DMA2D_ColorStruct->OutputRed << 16U;
NYX 0:85b3fd62ea1a 365 outalpha = DMA2D_ColorStruct->OutputAlpha << 24U;
NYX 0:85b3fd62ea1a 366 }
NYX 0:85b3fd62ea1a 367 else if (DMA2D_ColorStruct->ColorMode == LL_DMA2D_OUTPUT_MODE_RGB888)
NYX 0:85b3fd62ea1a 368 {
NYX 0:85b3fd62ea1a 369 outgreen = DMA2D_ColorStruct->OutputGreen << 8U;
NYX 0:85b3fd62ea1a 370 outred = DMA2D_ColorStruct->OutputRed << 16U;
NYX 0:85b3fd62ea1a 371 outalpha = 0x00000000U;
NYX 0:85b3fd62ea1a 372 }
NYX 0:85b3fd62ea1a 373 else if (DMA2D_ColorStruct->ColorMode == LL_DMA2D_OUTPUT_MODE_RGB565)
NYX 0:85b3fd62ea1a 374 {
NYX 0:85b3fd62ea1a 375 outgreen = DMA2D_ColorStruct->OutputGreen << 5U;
NYX 0:85b3fd62ea1a 376 outred = DMA2D_ColorStruct->OutputRed << 11U;
NYX 0:85b3fd62ea1a 377 outalpha = 0x00000000U;
NYX 0:85b3fd62ea1a 378 }
NYX 0:85b3fd62ea1a 379 else if (DMA2D_ColorStruct->ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB1555)
NYX 0:85b3fd62ea1a 380 {
NYX 0:85b3fd62ea1a 381 outgreen = DMA2D_ColorStruct->OutputGreen << 5U;
NYX 0:85b3fd62ea1a 382 outred = DMA2D_ColorStruct->OutputRed << 10U;
NYX 0:85b3fd62ea1a 383 outalpha = DMA2D_ColorStruct->OutputAlpha << 15U;
NYX 0:85b3fd62ea1a 384 }
NYX 0:85b3fd62ea1a 385 else /* ColorMode = LL_DMA2D_OUTPUT_MODE_ARGB4444 */
NYX 0:85b3fd62ea1a 386 {
NYX 0:85b3fd62ea1a 387 outgreen = DMA2D_ColorStruct->OutputGreen << 4U;
NYX 0:85b3fd62ea1a 388 outred = DMA2D_ColorStruct->OutputRed << 8U;
NYX 0:85b3fd62ea1a 389 outalpha = DMA2D_ColorStruct->OutputAlpha << 12U;
NYX 0:85b3fd62ea1a 390 }
NYX 0:85b3fd62ea1a 391 LL_DMA2D_SetOutputColor(DMA2Dx, (outgreen | outred | DMA2D_ColorStruct->OutputBlue | outalpha));
NYX 0:85b3fd62ea1a 392 }
NYX 0:85b3fd62ea1a 393
NYX 0:85b3fd62ea1a 394 /**
NYX 0:85b3fd62ea1a 395 * @brief Return DMA2D output Blue color.
NYX 0:85b3fd62ea1a 396 * @param DMA2Dx DMA2D Instance.
NYX 0:85b3fd62ea1a 397 * @param ColorMode This parameter can be one of the following values:
NYX 0:85b3fd62ea1a 398 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB8888
NYX 0:85b3fd62ea1a 399 * @arg @ref LL_DMA2D_OUTPUT_MODE_RGB888
NYX 0:85b3fd62ea1a 400 * @arg @ref LL_DMA2D_OUTPUT_MODE_RGB565
NYX 0:85b3fd62ea1a 401 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB1555
NYX 0:85b3fd62ea1a 402 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB4444
NYX 0:85b3fd62ea1a 403 * @retval Output Blue color value between Min_Data=0 and Max_Data=0xFF
NYX 0:85b3fd62ea1a 404 */
NYX 0:85b3fd62ea1a 405 uint32_t LL_DMA2D_GetOutputBlueColor(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
NYX 0:85b3fd62ea1a 406 {
NYX 0:85b3fd62ea1a 407 uint32_t color = 0U;
NYX 0:85b3fd62ea1a 408
NYX 0:85b3fd62ea1a 409 /* Check the parameters */
NYX 0:85b3fd62ea1a 410 assert_param(IS_DMA2D_ALL_INSTANCE(DMA2Dx));
NYX 0:85b3fd62ea1a 411 assert_param(IS_LL_DMA2D_OCMODE(ColorMode));
NYX 0:85b3fd62ea1a 412
NYX 0:85b3fd62ea1a 413 /* DMA2D OCOLR register reading ------------------------------------------*/
NYX 0:85b3fd62ea1a 414 if (ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB8888)
NYX 0:85b3fd62ea1a 415 {
NYX 0:85b3fd62ea1a 416 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xFFU));
NYX 0:85b3fd62ea1a 417 }
NYX 0:85b3fd62ea1a 418 else if (ColorMode == LL_DMA2D_OUTPUT_MODE_RGB888)
NYX 0:85b3fd62ea1a 419 {
NYX 0:85b3fd62ea1a 420 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xFFU));
NYX 0:85b3fd62ea1a 421 }
NYX 0:85b3fd62ea1a 422 else if (ColorMode == LL_DMA2D_OUTPUT_MODE_RGB565)
NYX 0:85b3fd62ea1a 423 {
NYX 0:85b3fd62ea1a 424 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0x1FU));
NYX 0:85b3fd62ea1a 425 }
NYX 0:85b3fd62ea1a 426 else if (ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB1555)
NYX 0:85b3fd62ea1a 427 {
NYX 0:85b3fd62ea1a 428 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0x1FU));
NYX 0:85b3fd62ea1a 429 }
NYX 0:85b3fd62ea1a 430 else /* ColorMode = LL_DMA2D_OUTPUT_MODE_ARGB4444 */
NYX 0:85b3fd62ea1a 431 {
NYX 0:85b3fd62ea1a 432 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xFU));
NYX 0:85b3fd62ea1a 433 }
NYX 0:85b3fd62ea1a 434
NYX 0:85b3fd62ea1a 435 return color;
NYX 0:85b3fd62ea1a 436 }
NYX 0:85b3fd62ea1a 437
NYX 0:85b3fd62ea1a 438 /**
NYX 0:85b3fd62ea1a 439 * @brief Return DMA2D output Green color.
NYX 0:85b3fd62ea1a 440 * @param DMA2Dx DMA2D Instance.
NYX 0:85b3fd62ea1a 441 * @param ColorMode This parameter can be one of the following values:
NYX 0:85b3fd62ea1a 442 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB8888
NYX 0:85b3fd62ea1a 443 * @arg @ref LL_DMA2D_OUTPUT_MODE_RGB888
NYX 0:85b3fd62ea1a 444 * @arg @ref LL_DMA2D_OUTPUT_MODE_RGB565
NYX 0:85b3fd62ea1a 445 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB1555
NYX 0:85b3fd62ea1a 446 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB4444
NYX 0:85b3fd62ea1a 447 * @retval Output Green color value between Min_Data=0 and Max_Data=0xFF
NYX 0:85b3fd62ea1a 448 */
NYX 0:85b3fd62ea1a 449 uint32_t LL_DMA2D_GetOutputGreenColor(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
NYX 0:85b3fd62ea1a 450 {
NYX 0:85b3fd62ea1a 451 uint32_t color = 0U;
NYX 0:85b3fd62ea1a 452
NYX 0:85b3fd62ea1a 453 /* Check the parameters */
NYX 0:85b3fd62ea1a 454 assert_param(IS_DMA2D_ALL_INSTANCE(DMA2Dx));
NYX 0:85b3fd62ea1a 455 assert_param(IS_LL_DMA2D_OCMODE(ColorMode));
NYX 0:85b3fd62ea1a 456
NYX 0:85b3fd62ea1a 457 /* DMA2D OCOLR register reading ------------------------------------------*/
NYX 0:85b3fd62ea1a 458 if (ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB8888)
NYX 0:85b3fd62ea1a 459 {
NYX 0:85b3fd62ea1a 460 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xFF00U) >> 8U);
NYX 0:85b3fd62ea1a 461 }
NYX 0:85b3fd62ea1a 462 else if (ColorMode == LL_DMA2D_OUTPUT_MODE_RGB888)
NYX 0:85b3fd62ea1a 463 {
NYX 0:85b3fd62ea1a 464 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xFF00U) >> 8U);
NYX 0:85b3fd62ea1a 465 }
NYX 0:85b3fd62ea1a 466 else if (ColorMode == LL_DMA2D_OUTPUT_MODE_RGB565)
NYX 0:85b3fd62ea1a 467 {
NYX 0:85b3fd62ea1a 468 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0x7E0U) >> 5U);
NYX 0:85b3fd62ea1a 469 }
NYX 0:85b3fd62ea1a 470 else if (ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB1555)
NYX 0:85b3fd62ea1a 471 {
NYX 0:85b3fd62ea1a 472 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0x3E0U) >> 5U);
NYX 0:85b3fd62ea1a 473 }
NYX 0:85b3fd62ea1a 474 else /* ColorMode = LL_DMA2D_OUTPUT_MODE_ARGB4444 */
NYX 0:85b3fd62ea1a 475 {
NYX 0:85b3fd62ea1a 476 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xF0U) >> 4U);
NYX 0:85b3fd62ea1a 477 }
NYX 0:85b3fd62ea1a 478
NYX 0:85b3fd62ea1a 479 return color;
NYX 0:85b3fd62ea1a 480 }
NYX 0:85b3fd62ea1a 481
NYX 0:85b3fd62ea1a 482 /**
NYX 0:85b3fd62ea1a 483 * @brief Return DMA2D output Red color.
NYX 0:85b3fd62ea1a 484 * @param DMA2Dx DMA2D Instance.
NYX 0:85b3fd62ea1a 485 * @param ColorMode This parameter can be one of the following values:
NYX 0:85b3fd62ea1a 486 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB8888
NYX 0:85b3fd62ea1a 487 * @arg @ref LL_DMA2D_OUTPUT_MODE_RGB888
NYX 0:85b3fd62ea1a 488 * @arg @ref LL_DMA2D_OUTPUT_MODE_RGB565
NYX 0:85b3fd62ea1a 489 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB1555
NYX 0:85b3fd62ea1a 490 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB4444
NYX 0:85b3fd62ea1a 491 * @retval Output Red color value between Min_Data=0 and Max_Data=0xFF
NYX 0:85b3fd62ea1a 492 */
NYX 0:85b3fd62ea1a 493 uint32_t LL_DMA2D_GetOutputRedColor(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
NYX 0:85b3fd62ea1a 494 {
NYX 0:85b3fd62ea1a 495 uint32_t color = 0U;
NYX 0:85b3fd62ea1a 496
NYX 0:85b3fd62ea1a 497 /* Check the parameters */
NYX 0:85b3fd62ea1a 498 assert_param(IS_DMA2D_ALL_INSTANCE(DMA2Dx));
NYX 0:85b3fd62ea1a 499 assert_param(IS_LL_DMA2D_OCMODE(ColorMode));
NYX 0:85b3fd62ea1a 500
NYX 0:85b3fd62ea1a 501 /* DMA2D OCOLR register reading ------------------------------------------*/
NYX 0:85b3fd62ea1a 502 if (ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB8888)
NYX 0:85b3fd62ea1a 503 {
NYX 0:85b3fd62ea1a 504 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xFF0000U) >> 16U);
NYX 0:85b3fd62ea1a 505 }
NYX 0:85b3fd62ea1a 506 else if (ColorMode == LL_DMA2D_OUTPUT_MODE_RGB888)
NYX 0:85b3fd62ea1a 507 {
NYX 0:85b3fd62ea1a 508 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xFF0000U) >> 16U);
NYX 0:85b3fd62ea1a 509 }
NYX 0:85b3fd62ea1a 510 else if (ColorMode == LL_DMA2D_OUTPUT_MODE_RGB565)
NYX 0:85b3fd62ea1a 511 {
NYX 0:85b3fd62ea1a 512 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xF800U) >> 11U);
NYX 0:85b3fd62ea1a 513 }
NYX 0:85b3fd62ea1a 514 else if (ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB1555)
NYX 0:85b3fd62ea1a 515 {
NYX 0:85b3fd62ea1a 516 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0x7C00U) >> 10U);
NYX 0:85b3fd62ea1a 517 }
NYX 0:85b3fd62ea1a 518 else /* ColorMode = LL_DMA2D_OUTPUT_MODE_ARGB4444 */
NYX 0:85b3fd62ea1a 519 {
NYX 0:85b3fd62ea1a 520 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xF00U) >> 8U);
NYX 0:85b3fd62ea1a 521 }
NYX 0:85b3fd62ea1a 522
NYX 0:85b3fd62ea1a 523 return color;
NYX 0:85b3fd62ea1a 524 }
NYX 0:85b3fd62ea1a 525
NYX 0:85b3fd62ea1a 526 /**
NYX 0:85b3fd62ea1a 527 * @brief Return DMA2D output Alpha color.
NYX 0:85b3fd62ea1a 528 * @param DMA2Dx DMA2D Instance.
NYX 0:85b3fd62ea1a 529 * @param ColorMode This parameter can be one of the following values:
NYX 0:85b3fd62ea1a 530 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB8888
NYX 0:85b3fd62ea1a 531 * @arg @ref LL_DMA2D_OUTPUT_MODE_RGB888
NYX 0:85b3fd62ea1a 532 * @arg @ref LL_DMA2D_OUTPUT_MODE_RGB565
NYX 0:85b3fd62ea1a 533 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB1555
NYX 0:85b3fd62ea1a 534 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB4444
NYX 0:85b3fd62ea1a 535 * @retval Output Alpha color value between Min_Data=0 and Max_Data=0xFF
NYX 0:85b3fd62ea1a 536 */
NYX 0:85b3fd62ea1a 537 uint32_t LL_DMA2D_GetOutputAlphaColor(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
NYX 0:85b3fd62ea1a 538 {
NYX 0:85b3fd62ea1a 539 uint32_t color = 0U;
NYX 0:85b3fd62ea1a 540
NYX 0:85b3fd62ea1a 541 /* Check the parameters */
NYX 0:85b3fd62ea1a 542 assert_param(IS_DMA2D_ALL_INSTANCE(DMA2Dx));
NYX 0:85b3fd62ea1a 543 assert_param(IS_LL_DMA2D_OCMODE(ColorMode));
NYX 0:85b3fd62ea1a 544
NYX 0:85b3fd62ea1a 545 /* DMA2D OCOLR register reading ------------------------------------------*/
NYX 0:85b3fd62ea1a 546 if (ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB8888)
NYX 0:85b3fd62ea1a 547 {
NYX 0:85b3fd62ea1a 548 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xFF000000U) >> 24U);
NYX 0:85b3fd62ea1a 549 }
NYX 0:85b3fd62ea1a 550 else if ((ColorMode == LL_DMA2D_OUTPUT_MODE_RGB888) || (ColorMode == LL_DMA2D_OUTPUT_MODE_RGB565))
NYX 0:85b3fd62ea1a 551 {
NYX 0:85b3fd62ea1a 552 color = 0x0U;
NYX 0:85b3fd62ea1a 553 }
NYX 0:85b3fd62ea1a 554 else if (ColorMode == LL_DMA2D_OUTPUT_MODE_ARGB1555)
NYX 0:85b3fd62ea1a 555 {
NYX 0:85b3fd62ea1a 556 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0x8000U) >> 15U);
NYX 0:85b3fd62ea1a 557 }
NYX 0:85b3fd62ea1a 558 else /* ColorMode = LL_DMA2D_OUTPUT_MODE_ARGB4444 */
NYX 0:85b3fd62ea1a 559 {
NYX 0:85b3fd62ea1a 560 color = (uint32_t)(READ_BIT(DMA2Dx->OCOLR, 0xF000U) >> 12U);
NYX 0:85b3fd62ea1a 561 }
NYX 0:85b3fd62ea1a 562
NYX 0:85b3fd62ea1a 563 return color;
NYX 0:85b3fd62ea1a 564 }
NYX 0:85b3fd62ea1a 565
NYX 0:85b3fd62ea1a 566 /**
NYX 0:85b3fd62ea1a 567 * @brief Configure DMA2D transfer size.
NYX 0:85b3fd62ea1a 568 * @param DMA2Dx DMA2D Instance
NYX 0:85b3fd62ea1a 569 * @param NbrOfLines Value between Min_Data=0 and Max_Data=0xFFFF
NYX 0:85b3fd62ea1a 570 * @param NbrOfPixelsPerLines Value between Min_Data=0 and Max_Data=0x3FFF
NYX 0:85b3fd62ea1a 571 * @retval None
NYX 0:85b3fd62ea1a 572 */
NYX 0:85b3fd62ea1a 573 void LL_DMA2D_ConfigSize(DMA2D_TypeDef *DMA2Dx, uint32_t NbrOfLines, uint32_t NbrOfPixelsPerLines)
NYX 0:85b3fd62ea1a 574 {
NYX 0:85b3fd62ea1a 575 MODIFY_REG(DMA2Dx->NLR, (DMA2D_NLR_PL | DMA2D_NLR_NL), \
NYX 0:85b3fd62ea1a 576 ((NbrOfPixelsPerLines << DMA2D_NLR_PL_Pos) | NbrOfLines));
NYX 0:85b3fd62ea1a 577 }
NYX 0:85b3fd62ea1a 578
NYX 0:85b3fd62ea1a 579 /**
NYX 0:85b3fd62ea1a 580 * @}
NYX 0:85b3fd62ea1a 581 */
NYX 0:85b3fd62ea1a 582
NYX 0:85b3fd62ea1a 583 /**
NYX 0:85b3fd62ea1a 584 * @}
NYX 0:85b3fd62ea1a 585 */
NYX 0:85b3fd62ea1a 586
NYX 0:85b3fd62ea1a 587 /**
NYX 0:85b3fd62ea1a 588 * @}
NYX 0:85b3fd62ea1a 589 */
NYX 0:85b3fd62ea1a 590
NYX 0:85b3fd62ea1a 591 #endif /* defined (DMA2D) */
NYX 0:85b3fd62ea1a 592
NYX 0:85b3fd62ea1a 593 /**
NYX 0:85b3fd62ea1a 594 * @}
NYX 0:85b3fd62ea1a 595 */
NYX 0:85b3fd62ea1a 596
NYX 0:85b3fd62ea1a 597 #endif /* USE_FULL_LL_DRIVER */
NYX 0:85b3fd62ea1a 598
NYX 0:85b3fd62ea1a 599 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/