mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
mbed library release version 165

Who changed what in which revision?

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