/** ****************************************************************************** * @file stm32n6xx_hal_dcmipp.h * @author MCD Application Team * @brief Header file of DCMIPP HAL module. ****************************************************************************** * @attention * * Copyright (c) 2023 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __STM32N6xx_HAL_DCMIPP_H #define __STM32N6xx_HAL_DCMIPP_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "stm32n6xx_hal_def.h" /** @addtogroup STM32N6xx_HAL_Driver * @{ */ #if defined (DCMIPP) /** @addtogroup DCMIPP DCMIPP * @brief DCMIPP HAL module driver * @{ */ /* Exported types ----------------------------------------------------------------------------------------------------*/ /** @defgroup DCMIPP_Exported_Types DCMIPP Exported Types * @brief DCMIPP Exported Types * @{ */ #define MAX_DATATYPE_NB 7U /*!< DCMIPP CSI maximum number of data types */ /** * @brief DCMIPP Embedded Synchronisation Unmask codes structure definition */ typedef struct { uint8_t FrameStartUnmask; /*!< Specifies the frame start delimiter unmask. */ uint8_t LineStartUnmask; /*!< Specifies the line start delimiter unmask. */ uint8_t LineEndUnmask; /*!< Specifies the line end delimiter unmask. */ uint8_t FrameEndUnmask; /*!< Specifies the frame end delimiter unmask. */ } DCMIPP_EmbeddedSyncUnmaskTypeDef; /** * @brief DCMIPP Embedded Synchronisation codes structure definition (CCIR656) */ typedef struct { uint8_t FrameStartCode; /*!< Specifies the code of the frame start delimiter. */ uint8_t LineStartCode; /*!< Specifies the code of the line start delimiter. */ uint8_t LineEndCode; /*!< Specifies the code of the line end delimiter. */ uint8_t FrameEndCode; /*!< Specifies the code of the frame end delimiter. */ } DCMIPP_EmbeddedSyncCodesTypeDef; /** * @brief HAL DCMIPP CSI PIPE configuration structure definition */ typedef struct { uint32_t DataTypeMode ; /*!< Configures the Data Type Mode This parameter can be a value from @ref DCMIPP_DataTypeMode */ uint32_t DataTypeIDA ; /*!< Configures the Data type selection ID-A This parameter can be a value from @ref DCMIPP_DataType */ uint32_t DataTypeIDB ; /*!< Configures the Data type selection ID-B This parameter can be a value from @ref DCMIPP_DataType */ } DCMIPP_CSI_PIPE_ConfTypeDef; /** * @brief HAL DCMIPP CSI configuration structure definition */ typedef struct { uint32_t NumberOfLanes; /*!< Configures the Number of Lanes This parameter can be a value from @ref DCMIPP_CSI_Number_Of_Lanes */ uint32_t DataLaneMapping; /*!< Configures the Data Lane Mapping This parameter can be a value from @ref DCMIPP_CSI_DataLaneMapping */ uint32_t PHYBitrate; /*!< Configures the Phy Bitrate This parameter can be a value from @ref DCMIPP_CSI_PHYBitRate */ } DCMIPP_CSI_ConfTypeDef; /** * @brief HAL DCMIPP CSI Virtual Channel Filtering configuration structure definition */ typedef struct { uint32_t DataTypeNB; /*!< Configures the Data Type number This parameter can be a value from @ref DCMIPP_CSI_DataTypeID */ uint32_t DataTypeClass[MAX_DATATYPE_NB]; /*!< Configures the Data Type Class This parameter can be a value between 0 and 63 */ uint32_t DataTypeFormat[MAX_DATATYPE_NB]; /*!< Configures the Data Type Class This parameter can be a value from @ref DCMIPP_CSI_DataTypeFormat */ } DCMIPP_CSI_VCFilteringConfTypeDef; /** * @brief HAL DCMIPP CSI Timer configuration structure definition */ typedef struct { uint32_t VirtualChannel; /*!< The Virtual Channel ID This parameter can be a value from @ref DCMIPP_Virtual_Channel */ uint32_t StartPoint; /*!< The Start Point of the counter This parameter can be a value from @ref DCMIPP_CSI_Timer_StartPoint */ uint32_t Count; /*!< Number of clock cycle to count from the start point This parameter can be a value between 0 and 0x1FFFFFF */ } DCMIPP_CSI_TimerConfTypeDef; /** * @brief HAL DCMIPP CSI LineByte Counter configuration structure definition */ typedef struct { uint32_t VirtualChannel; /*!< Configures the Virtual Channel ID This parameter can be a value from @ref DCMIPP_Virtual_Channel */ uint32_t LineCounter; /*!< Configures the Line Number This parameter can be a value between 0 and 65535 */ uint32_t ByteCounter; /*!< Configures the Byte Number This parameter can be a value between 0 and 65535 */ } DCMIPP_CSI_LineByteCounterConfTypeDef; /** * @brief HAL DCMIPP Parallel configuration structure definition */ typedef struct { uint32_t Format; /*!< Configures the DCMIPP Format This parameter can be one value of @ref DCMIPP_Format */ uint32_t VSPolarity; /*!< Specifies the Vertical synchronization polarity: High or Low. This parameter can be a value of @ref DCMIPP_VSYNC_Polarity */ uint32_t HSPolarity; /*!< Specifies the Horizontal synchronization polarity: High or Low. This parameter can be a value of @ref DCMIPP_HSYNC_Polarity */ uint32_t PCKPolarity; /*!< Specifies the Pixel clock polarity: Falling or Rising. This parameter can be a value of @ref DCMIPP_PIXCK_Polarity */ uint32_t ExtendedDataMode ; /*!< Specifies the data width: 8-bit, 10-bit, 12-bit 14-bit or 16-bits. This parameter can be a value of @ref DCMIPP_Extended_Data_Mode */ uint32_t SynchroMode; /*!< Specifies the Synchronization Mode: Hardware or Embedded. This parameter can be a value of @ref DCMIPP_Synchronization_Mode */ DCMIPP_EmbeddedSyncCodesTypeDef SynchroCodes; /*!< Specifies the code of the line/frame start delimiter and the line/frame end delimiter */ uint32_t SwapBits; /*!< Enable or Disable the Swap Bits. This parameter can be a value of @ref DCMIPP_SWAP_BITS */ uint32_t SwapCycles; /*!< Enable or Disable the Swap Cycles. This parameter can be a value of @ref DCMIPP_SWAP_CYCLES */ } DCMIPP_ParallelConfTypeDef; /** * @brief HAL DCMIPP Pipe configuration structure definition */ typedef struct { uint32_t FrameRate; /*!< Configures the DCMIPP Pipe Frame Rate This parameter can be one value of @ref DCMIPP_Frame_Rates */ uint32_t PixelPipePitch; /*!< Configures the DCMIPP Pixel Pipe Pitch This parameter can be one value from */ uint32_t PixelPackerFormat; /*!< Configures the DCMIPP Pixel Pipe Format This parameter can be one value from @ref DCMIPP_Pixel_Packer_Format */ } DCMIPP_PipeConfTypeDef; /** * @brief HAL DCMIPP IPPLUG configuration structure definition */ typedef struct { uint32_t Client; /*!< Configures the DCMIPP IPPLUG Client This parameter can be a value from @ref DCMIPP_IPPLUG_Client */ uint32_t MemoryPageSize; /*!< Configures the DCMIPP IPPLUG Memory page size This parameter can be a value from @ref DCMIPP_Memory_Page_Size */ uint32_t Traffic; /*!< Configures the DCMIPP IPPLUG Traffic This parameter can be a value from @ref DCMIPP_Traffic_Burst_Size */ uint32_t MaxOutstandingTransactions ; /*!< Configures the DCMIPP IPPLUG Maximum outstanding transactions This parameter can be a value from DCMIPP_Maximum_Outstanding_Transactions */ uint32_t DPREGStart; /*!< Configures the End word of the FIFO of Clientx This parameter can be a value between 0 and 0x3FF */ uint32_t DPREGEnd; /*!< Configures the Start word of the FIFO of Clientx This parameter can be a value between 0 and 0x3FF */ uint32_t WLRURatio; /*!< Configures the DCMIPP Ratio for WLRU arbitration This parameter can be a value between 0 and 15 */ } DCMIPP_IPPlugConfTypeDef; /** * @brief HAL DCMIPP Crop configuration structure definition */ typedef struct { uint32_t VStart; /*!< Configures the DCMIPP Crop Vertical Start This parameter can be one value between 0 and 4095 */ uint32_t HStart; /*!< Configures the DCMIPP Crop Horizontal Start This parameter can be one value between 0 and 4095 */ uint32_t VSize; /*!< Configures the DCMIPP Crop Vertical Size This parameter can be one value between 0 and 4095 */ uint32_t HSize; /*!< Configures the DCMIPP Crop Horizontal Size This parameter can be one value between 1 and 4095 */ uint32_t PipeArea; /*!< Configures the DCMIPP Crop Area for the pipe0 This parameter can be one value of @ref DCMIPP_Crop_Area */ } DCMIPP_CropConfTypeDef; typedef struct { uint32_t VStart; /*!< Configures the DCMIPP Statistic Extraction Vertical Start This parameter can be one value between 0 and 4095 */ uint32_t HStart; /*!< Configures the DCMIPP Statistic Extraction Horizontal Start This parameter can be one value between 0 and 4095 */ uint32_t VSize; /*!< Configures the DCMIPP Statistic Extraction Vertical Size This parameter can be one value between 0 and 4095 */ uint32_t HSize; /*!< Configures the DCMIPP Statistic Extraction Horizontal Size This parameter can be one value between 0 and 4095 */ } DCMIPP_StatisticExtractionAreaConfTypeDef; typedef struct { uint32_t Mode; /*!< Configures the DCMIPP Statistic Extraction Mode This parameter can be a value from @ref DCMIPP_Statistics_Extraction_Mode */ uint32_t Source; /*!< Configures the DCMIPP Statistic Extraction Source This parameter can be a value from @ref DCMIPP_Statistics_Extraction_Source */ uint32_t Bins; /*!< Configures the DCMIPP Statistic Extraction Bins This parameter can be a value from @ref DCMIPP_Statistics_Extraction_Bins */ } DCMIPP_StatisticExtractionConfTypeDef; typedef struct { uint8_t ShiftRed; /*!< Configures the DCMIPP Exposure Shift Red This parameter can be one value between 0 and 7 */ uint8_t MultiplierRed; /*!< Configures the DCMIPP Exposure Multiplier Red This parameter can be one value between 0 and 127 */ uint8_t ShiftGreen; /*!< Configures the DCMIPP Exposure Shift Green This parameter can be one value between 0 and 7 */ uint8_t MultiplierGreen; /*!< Configures the DCMIPP Exposure Multiplier Green This parameter can be one value between 0 and 127 */ uint8_t ShiftBlue; /*!< Configures the DCMIPP Exposure Shift Blue This parameter can be one value between 0 and 7 */ uint8_t MultiplierBlue; /*!< Configures the DCMIPP Exposure Multiplier Blue This parameter can be one value between 0 and 127 */ } DCMIPP_ExposureConfTypeDef; typedef struct { uint8_t LUM_0; /*!< Luminance increase for input luminance of 0 This parameter can be one value between 0 and 31 */ uint8_t LUM_32; /*!< Luminance increase for input luminance of 32 This parameter can be one value between 0 and 31 */ uint8_t LUM_64; /*!< Luminance increase for input luminance of 64 This parameter can be one value between 0 and 31 */ uint8_t LUM_96; /*!< Luminance increase for input luminance of 96 This parameter can be one value between 0 and 31 */ uint8_t LUM_128; /*!< Luminance increase for input luminance of 128 This parameter can be one value between 0 and 31 */ uint8_t LUM_160; /*!< Luminance increase for input luminance of 160 This parameter can be one value between 0 and 31 */ uint8_t LUM_192; /*!< Luminance increase for input luminance of 192 This parameter can be one value between 0 and 31 */ uint8_t LUM_224; /*!< Luminance increase for input luminance of 224 This parameter can be one value between 0 and 31 */ uint8_t LUM_256; /*!< Luminance increase for input luminance of 256 This parameter can be one value between 0 and 31 */ } DCMIPP_ContrastConfTypeDef; typedef struct { uint32_t VLineStrength; /*!< Strength of the vertical line detection This parameter can be a value from @ref DCMIPP_RAWBayer2RGB_Strength */ uint32_t HLineStrength; /*!< Strength of the horizontal line detection This parameter can be a value from @ref DCMIPP_RAWBayer2RGB_Strength */ uint32_t RawBayerType; /*!< Raw Bayer type This parameter can be a value from @ref DCMIPP_RAWBayer2RGB_Type */ uint32_t PeakStrength; /*!< Strength of the peak detection This parameter can be a value from @ref DCMIPP_RAWBayer2RGB_Strength */ uint32_t EdgeStrength; /*!< Strength of the edge detection This parameter can be a value from @ref DCMIPP_RAWBayer2RGB_Strength */ } DCMIPP_RawBayer2RGBConfTypeDef; /** * @brief Color Conversion parameters */ typedef struct { FunctionalState ClampOutputSamples; /*!< Clamp the output samples depending on type This parameter can be ENABLE or DISABLE */ uint8_t OutputSamplesType; /*!< Output samples type used while clamp is activated This parameter can be a value from @ref DCMIPP_OutputSamplesType */ int16_t RR; /*!< Coefficient Row 1 Column 1 of the matrix This parameter can be a value from -1023 to 1023 */ int16_t RG; /*!< Coefficient Row 1 Column 2 of the matrix This parameter can be a value from -1023 to 1023 */ int16_t RB; /*!< Coefficient Row 1 Column 3 of the matrix This parameter can be a value from -511 to 511 */ int16_t RA; /*!< Coefficient Row 1 of the added Column This parameter can be a value from -511 to 511 */ int16_t GR; /*!< Coefficient Row 2 Column 1 of the matrix This parameter can be a value from -1023 to 1023 */ int16_t GG; /*!< Coefficient Row 2 Column 2 of the matrix This parameter can be a value from -1023 to 1023 */ int16_t GB; /*!< Coefficient Row 2 Column 3 of the matrix This parameter can be a value from -511 to 511 */ int16_t GA; /*!< Coefficient Row 2 of the added Column This parameter can be a value from -511 to 511 */ int16_t BR; /*!< Coefficient Row 3 Column 1 of the matrix This parameter can be a value from -1023 to 1023 */ int16_t BG; /*!< Coefficient Row 3 Column 2 of the matrix This parameter can be a value -1023 to 1023 */ int16_t BB; /*!< Coefficient Row 3 Column 3 of the matrix This parameter can be a value from -511 to 511 */ int16_t BA; /*!< Coefficient Row 3 of the added Column This parameter can be a value from -511 to 511 */ } DCMIPP_ColorConversionConfTypeDef; /** * @brief Region Of Interest Structure */ typedef struct { uint32_t VStart; /*!< Configures the DCMIPP Region Of Interest Vertical Start This parameter can be one value between 0 and 4095 */ uint32_t HStart; /*!< Configures the DCMIPP Region Of Interest Horizontal Start This parameter can be one value between 0 and 4095 */ uint32_t VSize; /*!< Configures the DCMIPP Region Of Interest Vertical Size This parameter can be one value between 0 and 4095 */ uint32_t HSize; /*!< Configures the DCMIPP Region Of Interest Horizontal Size This parameter can be one value between 0 and 4095 */ uint32_t LineSizeWidth; /*!< Configures the DCMIPP Region Of Interest Line Size Width This parameter can be a value from @ref DCMIPP_Region_Of_Interest_Line_Width */ uint32_t RegionOfInterest; /*!< Configures the DCMIPP Region Of Interest This parameter can be a value from @ref DCMIPP_Region_Of_Interest */ uint8_t ColorLineRed; /*!< Configures the DCMIPP Region Of Interest Line Color : Red Component This parameter can be one value between 0 and 4095 */ uint8_t ColorLineGreen; /*!< Configures the DCMIPP Region Of Interest Line Color : Green Component This parameter can be one value between 0 and 4095 */ uint8_t ColorLineBlue; /*!< Configures the DCMIPP Region Of Interest Line Color : Blue Component This parameter can be one value between 0 and 4095 */ } DCMIPP_RegionOfInterestConfTypeDef; /** * @brief Black Level parameters */ typedef struct { uint8_t RedCompBlackLevel; /*!< Black value register to red component This parameter can be one value between 0 and 255 */ uint8_t GreenCompBlackLevel; /*!< Black value register to green component This parameter can be one value between 0 and 255 */ uint8_t BlueCompBlackLevel; /*!< Black value register to blue component This parameter can be one value between 0 and 255 */ } DCMIPP_BlackLevelConfTypeDef; /** * @brief HAL DCMIPP */ typedef struct { uint32_t VSize; /*!< Configures the DCMIPP Downsize Vertical Size This parameter can be one value between 0 and 4095 */ uint32_t HSize; /*!< Configures the DCMIPP Downsize Horizontal Size This parameter can be one value between 0 and 4095 */ uint32_t VRatio; /*!< Configures the DCMIPP Downsize Vertical Ratio This parameter can be one value between 0 and 4095 */ uint32_t HRatio; /*!< Configures the DCMIPP Downsize Horizontal Ratio This parameter can be one value between 0 and 4095 */ uint32_t VDivFactor; /*!< Configures the DCMIPP Downsize Vertical Division Factor This parameter can be one value between 0 and 4095 */ uint32_t HDivFactor; /*!< Configures the DCMIPP Downsize Horizontal Division Factor This parameter can be one value between 0 and 4095 */ } DCMIPP_DownsizeTypeDef; typedef struct { uint32_t VRatio; /*!< Configures the DCMIPP Downsize Vertical Size This parameter can be a value from @ref DCMIPP_PIPE_Vertical_Decimation_Ratio */ uint32_t HRatio; /*!< Configures the DCMIPP Downsize Vertical Size This parameter can be a value from @ref DCMIPP_PIPE_Horizontal_Decimation_Ratio */ } DCMIPP_DecimationConfTypeDef; typedef struct { uint32_t YAddress; /*!< Y Frame Buffer address */ uint32_t UVAddress; /*!< UV Frame Buffer address */ } DCMIPP_SemiPlanarDstAddressTypeDef; typedef struct { uint32_t YAddress; /*!< Y Frame Buffer address */ uint32_t UAddress; /*!< U Frame Buffer address */ uint32_t VAddress; /*!< V Frame Buffer address */ } DCMIPP_FullPlanarDstAddressTypeDef; /** * @brief HAL DCMIPP State enumeration definition */ typedef enum { HAL_DCMIPP_STATE_RESET = 0x00U, /*!< DCMIPP not yet initialized or disabled */ HAL_DCMIPP_STATE_INIT = 0x01U, /*!< DCMIPP initialized */ HAL_DCMIPP_STATE_READY = 0x02U, /*!< DCMIPP configured and ready for use */ HAL_DCMIPP_STATE_BUSY = 0x03U, /*!< DCMIPP internal processing is ongoing */ HAL_DCMIPP_STATE_ERROR = 0x04U, /*!< DCMIPP state error */ } HAL_DCMIPP_StateTypeDef; /** * @brief HAL DCMIPP Pipe State enumeration definition */ typedef enum { HAL_DCMIPP_PIPE_STATE_RESET = 0x00U, /*!< DCMIPP Pipe not yet initialized or disabled */ HAL_DCMIPP_PIPE_STATE_READY = 0x01U, /*!< DCMIPP Pipe initialized and ready for use */ HAL_DCMIPP_PIPE_STATE_BUSY = 0x02U, /*!< DCMIPP internal processing is ongoing */ HAL_DCMIPP_PIPE_STATE_SUSPEND = 0x03U, /*!< DCMIPP pipe process is suspended */ HAL_DCMIPP_PIPE_STATE_ERROR = 0x04U, /*!< DCMIPP pipe error state */ } HAL_DCMIPP_PipeStateTypeDef; #if (USE_HAL_DCMIPP_REGISTER_CALLBACKS == 1) /** * @brief HAL DCMIPP common Callback ID enumeration definition */ typedef enum { HAL_DCMIPP_MSPINIT_CB_ID = 0x00U, /*!< DCMIPP MspInit callback ID */ HAL_DCMIPP_MSPDEINIT_CB_ID = 0x01U, /*!< DCMIPP MspDeInit callback ID */ HAL_DCMIPP_ERROR_CB_ID = 0x02U, /*!< DCMIPP Error callback ID */ } HAL_DCMIPP_CallbackIDTypeDef; /** * @brief HAL DCMIPP pipe Callback ID enumeration definition */ typedef enum { HAL_DCMIPP_PIPE_LIMIT_EVENT_CB_ID = 0x01U, /*!< DCMIPP Pipe Limit event callback ID */ HAL_DCMIPP_PIPE_LINE_EVENT_CB_ID = 0x02U, /*!< DCMIPP Pipe Line event callback ID */ HAL_DCMIPP_PIPE_FRAME_EVENT_CB_ID = 0x03U, /*!< DCMIPP Pipe Frame event callback ID */ HAL_DCMIPP_PIPE_VSYNC_EVENT_CB_ID = 0x04U, /*!< DCMIPP Pipe Vsync event callback ID */ HAL_DCMIPP_PIPE_ERROR_CB_ID = 0x05U, /*!< DCMIPP Pipe Error callback ID */ } HAL_DCMIPP_PIPE_CallbackIDTypeDef; #endif /* USE_HAL_DCMIPP_REGISTER_CALLBACKS */ /** * @brief HAL DCMIPP handle structures definition */ #if (USE_HAL_DCMIPP_REGISTER_CALLBACKS == 1) typedef struct __DCMIPP_HandleTypeDef #else typedef struct #endif /* USE_HAL_DCMIPP_REGISTER_CALLBACKS */ { DCMIPP_TypeDef *Instance; /*!< Register the DCMIPP base address */ __IO HAL_DCMIPP_StateTypeDef State; /*!< DCMIPP state */ __IO HAL_DCMIPP_PipeStateTypeDef PipeState[DCMIPP_NUM_OF_PIPES]; /*!< DCMIPP Pipes state */ __IO uint32_t ErrorCode; /*!< DCMIPP Error code */ #if (USE_HAL_DCMIPP_REGISTER_CALLBACKS == 1) void (* PIPE_FrameEventCallback)(struct __DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); /*!< DCMIPP Pipe Frame Event Callback */ void (* PIPE_VsyncEventCallback)(struct __DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); /*!< DCMIPP Pipe Vsync Event Callback */ void (* PIPE_LineEventCallback)(struct __DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); /*!< DCMIPP Pipe Line Event Callback */ void (* PIPE_LimitEventCallback)(struct __DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); /*!< DCMIPP Pipe Limit Event Callback */ void (* PIPE_ErrorCallback)(struct __DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); /*!< DCMIPP Pipe Error Callback */ void (* ErrorCallback)(struct __DCMIPP_HandleTypeDef *hdcmipp); /*!< DCMIPP Error Callback */ void (* MspInitCallback)(struct __DCMIPP_HandleTypeDef *hdcmipp); /*!< DCMIPP Msp Init Callback */ void (* MspDeInitCallback)(struct __DCMIPP_HandleTypeDef *hdcmipp); /*!< DCMIPP Msp DeInit Callback */ void (* StartOfFrameEventCallback)(struct __DCMIPP_HandleTypeDef *hdcmipp, uint32_t VirtualChannel); /*!< DCMIPP CSI Start Of Frame Event Callback */ void (* EndOfFrameEventCallback)(struct __DCMIPP_HandleTypeDef *hdcmipp, uint32_t VirtualChannel); /*!< DCMIPP CSI End Of Frame Event Callback */ void (* TimerCounterEventCallback)(struct __DCMIPP_HandleTypeDef *hdcmipp, uint32_t Timer); /*!< DCMIPP CSI Timer Counter Event Callback */ void (* LineByteEventCallback)(struct __DCMIPP_HandleTypeDef *hdcmipp, uint32_t Counter); /*!< DCMIPP CSI Line/Byte Event Callback */ void (* LineErrorCallback)(struct __DCMIPP_HandleTypeDef *hdcmipp, uint32_t DataLane); /*!< DCMIPP CSI Line Error Event Callback */ void (* ClockChangerFifoFullEventCallback)(struct __DCMIPP_HandleTypeDef *hdcmipp); /*!< DCMIPP CSI Clock changer Fifo Event Callback */ void (* ShortPacketDetectionEventCallback)(struct __DCMIPP_HandleTypeDef *hdcmipp); /*!< DCMIPP CSI Short Packet detection Event Callback */ #endif /* USE_HAL_DCMIPP_REGISTER_CALLBACKS */ } DCMIPP_HandleTypeDef; #if (USE_HAL_DCMIPP_REGISTER_CALLBACKS == 1) /** * @brief HAL DCMIPP Callback pointer definition */ typedef void (*pDCMIPP_CallbackTypeDef)(DCMIPP_HandleTypeDef *hdcmipp); /*!< Pointer to a DCMIPP common callback function */ typedef void (*pDCMIPP_PIPE_CallbackTypeDef)(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); /*!< Pointer to a DCMIPP Pipe callback function */ #endif /* USE_HAL_DCMIPP_REGISTER_CALLBACKS */ /** * @} */ /* Exported constants --------------------------------------------------------*/ /** @defgroup DCMIPP_Exported_Constants DCMIPP Exported Constants * @brief DCMIPP Exported constants * @{ */ /** @defgroup DCMIPP_Pipes DCMIPP Pipes * @{ */ #define DCMIPP_PIPE0 0U /*!< DCMIPP Pipe0 (Dump pipe) */ #define DCMIPP_PIPE1 1U /*!< DCMIPP Pipe1 (Main Pipe) */ #define DCMIPP_PIPE2 2U /*!< DCMIPP Pipe2 (Ancillary pipe) */ /** * @} */ /** @defgroup DCMIPP_Error_Codes DCMIPP Error Codes * @{ */ #define HAL_DCMIPP_ERROR_NONE (0x00000000U) /*!< No error */ #define HAL_DCMIPP_ERROR_AXI_TRANSFER (0x00000001U) /*!< IPPLUG AXI Transfer error */ #define HAL_DCMIPP_ERROR_PARALLEL_SYNC (0x00000002U) /*!< Synchronization error */ #define HAL_DCMIPP_ERROR_PIPE0_LIMIT (0x00000004U) /*!< Limit error on pipe0 */ #define HAL_DCMIPP_ERROR_PIPE0_OVR (0x00000008U) /*!< Overrun error on pipe0 */ #define HAL_DCMIPP_ERROR_PIPE1_OVR (0x00000010U) /*!< Overrun error on pipe1 */ #define HAL_DCMIPP_ERROR_PIPE2_OVR (0x00000020U) /*!< Overrun error on pipe2 */ #if (USE_HAL_DCMIPP_REGISTER_CALLBACKS == 1) #define HAL_DCMIPP_ERROR_INVALID_CALLBACK ((uint32_t)0x00000040U) /*!< Invalid Callback error */ #endif /* USE_HAL_DCMIPP_REGISTER_CALLBACKS */ #define HAL_DCMIPP_CSI_ERROR_NONE (0x00000080U) /*!< No error */ #define HAL_DCMIPP_CSI_ERROR_SYNC (0x00000100U) /*!< Synchronization error */ #define HAL_DCMIPP_CSI_ERROR_WDG (0x00000200U) /*!< Watchdog Error */ #define HAL_DCMIPP_CSI_ERROR_SPKT (0x00000400U) /*!< Shorter Packet than expected Error */ #define HAL_DCMIPP_CSI_ERROR_DATA_ID (0x00000800U) /*!< Data ID Information Error */ #define HAL_DCMIPP_CSI_ERROR_CECC (0x00001000U) /*!< Corrected ECC Error */ #define HAL_DCMIPP_CSI_ERROR_ECC (0x00002000U) /*!< ECC Error */ #define HAL_DCMIPP_CSI_ERROR_CRC (0x00004000U) /*!< CRC Error */ #define HAL_DCMIPP_CSI_ERROR_DPHY_CTRL (0x00008000U) /*!< Error Control on data line (0 OR 1) */ #define HAL_DCMIPP_CSI_ERROR_DPHY_LP_SYNC (0x00010000U) /*!< Low-Power data transmssion Synchronisation Error on data line (0 OR 1) */ #define HAL_DCMIPP_CSI_ERROR_DPHY_ESCAPE (0x00020000U) /*!< Escape Entry Error on data line (0 OR 1) */ #define HAL_DCMIPP_CSI_ERROR_SOT_SYNC (0x00040000U) /*!< SOT Synchronisation Error on data line(0 OR 1) */ #define HAL_DCMIPP_CSI_ERROR_SOT (0x00080000U) /*!< SOT Error on data line (0 OR 1) */ /** * @} */ /** @defgroup DCMIPP_Capture_Mode DCMIPP Capture Mode * @{ */ #define DCMIPP_MODE_CONTINUOUS 0U /*!< DCMIPP continuous mode (preview) */ #define DCMIPP_MODE_SNAPSHOT DCMIPP_P0FCTCR_CPTMODE /*!< DCMIPP snapshot mode */ /** * @} */ /** * @defgroup DCMIPP_modes (DCMI or CSI): modes are exclusive * @{ */ #define DCMIPP_PARALLEL_MODE (0x00U << DCMIPP_CMCR_INSEL_Pos) /*!< DCMIPP Parallel (DCMI) mode */ #define DCMIPP_SERIAL_MODE (0x01U << DCMIPP_CMCR_INSEL_Pos) /*!< DCMIPP CSI mode */ /** * @} */ /** @defgroup DCMIPP_IPPLUG_Client DCMIPP IPPLUG Client * @{ */ #define DCMIPP_CLIENT1 1U /*!< Client 1 identifier */ #define DCMIPP_CLIENT2 2U /*!< Client 2 identifier */ #define DCMIPP_CLIENT3 3U /*!< Client 3 identifier */ #define DCMIPP_CLIENT4 4U /*!< Client 4 identifier */ #define DCMIPP_CLIENT5 5U /*!< Client 5 identifier */ /** * @} */ /** @defgroup DCMIPP_Traffic_Burst_Size DCMIPP Traffic Burst Size * @{ */ #define DCMIPP_TRAFFIC_BURST_SIZE_8BYTES 0U /*!< Traffic Burst size 8 Bytes */ #define DCMIPP_TRAFFIC_BURST_SIZE_16BYTES (0x01U << DCMIPP_IPC1R1_TRAFFIC_Pos) /*!< Traffic Burst size 16 Bytes */ #define DCMIPP_TRAFFIC_BURST_SIZE_32BYTES (0x02U << DCMIPP_IPC1R1_TRAFFIC_Pos) /*!< Traffic Burst size 32 Bytes */ #define DCMIPP_TRAFFIC_BURST_SIZE_64BYTES (0x03U << DCMIPP_IPC1R1_TRAFFIC_Pos) /*!< Traffic Burst size 64 Bytes */ #define DCMIPP_TRAFFIC_BURST_SIZE_128BYTES (0x04U << DCMIPP_IPC1R1_TRAFFIC_Pos) /*!< Traffic Burst size 128 Bytes */ /** * @} */ /** @defgroup DCMIPP_Memory_Page_Size DCMIPP Memory Page Size * @{ */ #define DCMIPP_MEMORY_PAGE_SIZE_64BYTES 0U /*!< Memory Page size 64 Bytes */ #define DCMIPP_MEMORY_PAGE_SIZE_128BYTES (0x01U << DCMIPP_IPGR1_MEMORYPAGE_Pos) /*!< Memory Page size 128 Bytes */ #define DCMIPP_MEMORY_PAGE_SIZE_256BYTES (0x02U << DCMIPP_IPGR1_MEMORYPAGE_Pos) /*!< Memory Page size 256 Bytes */ #define DCMIPP_MEMORY_PAGE_SIZE_512BYTES (0x03U << DCMIPP_IPGR1_MEMORYPAGE_Pos) /*!< Memory Page size 512 Bytes */ #define DCMIPP_MEMORY_PAGE_SIZE_1KBYTES (0x04U << DCMIPP_IPGR1_MEMORYPAGE_Pos) /*!< Memory Page size 1 Bytes */ #define DCMIPP_MEMORY_PAGE_SIZE_2KBYTES (0x05U << DCMIPP_IPGR1_MEMORYPAGE_Pos) /*!< Memory Page size 2 Bytes */ #define DCMIPP_MEMORY_PAGE_SIZE_4KBYTES (0x06U << DCMIPP_IPGR1_MEMORYPAGE_Pos) /*!< Memory Page size 4 Bytes */ #define DCMIPP_MEMORY_PAGE_SIZE_8KBYTES (0x07U << DCMIPP_IPGR1_MEMORYPAGE_Pos) /*!< Memory Page size 8 Bytes */ /** * @} */ /** @defgroup DCMIPP_Maximum_Outstanding_Transactions DCMIPP Maximum Outstanding Transactions * @{ */ #define DCMIPP_OUTSTANDING_TRANSACTION_NONE 0U /*!< Nooutstanding transaction limitation*/ #define DCMIPP_OUTSTANDING_TRANSACTION_2 0x01U /*!< Two outstanding transactions */ #define DCMIPP_OUTSTANDING_TRANSACTION_3 0x02U /*!< Three outstanding transactions */ #define DCMIPP_OUTSTANDING_TRANSACTION_4 0x03U /*!< Four outstanding transactions */ #define DCMIPP_OUTSTANDING_TRANSACTION_5 0x04U /*!< 5 outstanding transactions */ #define DCMIPP_OUTSTANDING_TRANSACTION_6 0x05U /*!< 6 outstanding transactions */ #define DCMIPP_OUTSTANDING_TRANSACTION_7 0x06U /*!< 7 outstanding transactions */ #define DCMIPP_OUTSTANDING_TRANSACTION_8 0x07U /*!< 8 outstanding transactions */ #define DCMIPP_OUTSTANDING_TRANSACTION_9 0x08U /*!< 9 outstanding transactions */ #define DCMIPP_OUTSTANDING_TRANSACTION_10 0x09U /*!< 10 outstanding transactions */ #define DCMIPP_OUTSTANDING_TRANSACTION_11 0x0AU /*!< 11 outstanding transactions */ #define DCMIPP_OUTSTANDING_TRANSACTION_12 0x0BU /*!< 12 outstanding transactions */ #define DCMIPP_OUTSTANDING_TRANSACTION_13 0x0CU /*!< 13 outstanding transactions */ #define DCMIPP_OUTSTANDING_TRANSACTION_14 0x0DU /*!< 14 outstanding transactions */ #define DCMIPP_OUTSTANDING_TRANSACTION_15 0x0EU /*!< 15 outstanding transactions */ #define DCMIPP_OUTSTANDING_TRANSACTION_16 0x0FU /*!< 16 outstanding transactions */ /** * @} */ /** @defgroup DCMIPP_Frame_Rates DCMIPP Frame Rates * @{ */ #define DCMIPP_FRAME_RATE_ALL 0U /*!< All frames captured */ #define DCMIPP_FRAME_RATE_1_OVER_2 (1U << DCMIPP_P0FCTCR_FRATE_Pos) /*!< 1 frame over 2 captured */ #define DCMIPP_FRAME_RATE_1_OVER_4 (2U << DCMIPP_P0FCTCR_FRATE_Pos) /*!< 1 frame over 4 captured */ #define DCMIPP_FRAME_RATE_1_OVER_8 (3U << DCMIPP_P0FCTCR_FRATE_Pos) /*!< 1 frame over 8 captured */ /** * @} */ /** @defgroup DCMIPP_Crop_Area DCMIPP Crop Area * @{ */ #define DCMIPP_POSITIVE_AREA 0U /*!< Positive Area chosen for crop */ #define DCMIPP_NEGATIVE_AREA DCMIPP_P0SCSZR_POSNEG /*!< Negative Area chosen for crop */ /** * @} */ /** @defgroup DCMIPP_Virtual_Channel DCMIPP Virtual Channel * @{ */ #define DCMIPP_VIRTUAL_CHANNEL0 0U /*!< DCMIPP Virtual Channel 0 */ #define DCMIPP_VIRTUAL_CHANNEL1 1U /*!< DCMIPP Virtual Channel 1 */ #define DCMIPP_VIRTUAL_CHANNEL2 2U /*!< DCMIPP Virtual Channel 2 */ #define DCMIPP_VIRTUAL_CHANNEL3 3U /*!< DCMIPP Virtual Channel 3 */ /** * @} */ /** @defgroup DCMIPP_DataTypeMode DCMIPP DCMIPP Data Type Mode * @{ */ #define DCMIPP_DTMODE_DTIDA (0U << DCMIPP_P0FSCR_DTMODE_Pos) /*!< Only flow DTIDA from the selected VC is forwarded in the pipe */ #define DCMIPP_DTMODE_DTIDA_OR_DTIDB (1U << DCMIPP_P0FSCR_DTMODE_Pos) /*!< Flows DTIDA and/or DTIDB from the selected VC are forwarded in the pipe */ #define DCMIPP_DTMODE_ALL_EXCEPT_DTIA_DTIB (2U << DCMIPP_P0FSCR_DTMODE_Pos) /*!< All data types from the selected VC (except the DTIDA or DTIDB) are forwarded in the pipe, only for Pipe0 */ #define DCMIPP_DTMODE_ALL (3U << DCMIPP_P0FSCR_DTMODE_Pos) /*!< All data types of the selected virtual channel VC are forwarded in the pipe, only for Pipe0 */ /** * @} */ /** @defgroup DCMIPP_DataTypeSelection DCMIPP Data Type Selection * @{ */ #define DCMIPP_DTSELECT_IDA DCMIPP_P0FSCR_DTIDA_Pos /*!< Data type selection ID A */ #define DCMIPP_DTSELECT_IDB DCMIPP_P0FSCR_DTIDB_Pos /*!< Data type selection ID B */ /** * @} */ /** @defgroup DCMIPP_DataType DCMIPP Data Type * @{ */ #define DCMIPP_DT_YUV420_8 0x18U /*!< DCMIPP Data Type YUV420 8bit */ #define DCMIPP_DT_YUV420_10 0x19U /*!< DCMIPP Data Type YUV420 8bit */ #define DCMIPP_DT_YUV422_8 0x1EU /*!< DCMIPP Data Type YUV422 8bit */ #define DCMIPP_DT_YUV422_10 0x1FU /*!< DCMIPP Data Type YUV422 10bit */ #define DCMIPP_DT_RGB444 0x20U /*!< DCMIPP Data Type RGB444 */ #define DCMIPP_DT_RGB555 0x21U /*!< DCMIPP Data Type RGB555 */ #define DCMIPP_DT_RGB565 0x22U /*!< DCMIPP Data Type RGB565 */ #define DCMIPP_DT_RGB666 0x23U /*!< DCMIPP Data Type RGB666 */ #define DCMIPP_DT_RGB888 0x24U /*!< DCMIPP Data Type RGB888 */ #define DCMIPP_DT_RAW8 0x2AU /*!< DCMIPP Data Type RawBayer8 */ #define DCMIPP_DT_RAW10 0x2BU /*!< DCMIPP Data Type RawBayer10 */ #define DCMIPP_DT_RAW12 0x2CU /*!< DCMIPP Data Type RawBayer12 */ #define DCMIPP_DT_RAW14 0x2DU /*!< DCMIPP Data Type RawBayer14 */ /** * @} */ /** @defgroup DCMIPP_CSI_DataTypeID DCMIPP CSI Data Type ID * @{ */ #define DCMIPP_CSI_DT1 1U /*!< DCMIPP Data Type ID 1 */ #define DCMIPP_CSI_DT2 2U /*!< DCMIPP Data Type ID 2 */ #define DCMIPP_CSI_DT3 3U /*!< DCMIPP Data Type ID 3 */ #define DCMIPP_CSI_DT4 4U /*!< DCMIPP Data Type ID 4 */ #define DCMIPP_CSI_DT5 5U /*!< DCMIPP Data Type ID 5 */ #define DCMIPP_CSI_DT6 6U /*!< DCMIPP Data Type ID 6 */ #define DCMIPP_CSI_DT7 7U /*!< DCMIPP Data Type ID 7 */ /** * @} */ /** @defgroup DCMIPP_CSI_Number_Of_Lanes DCMIPP CSI Number Of Lanes * @{ */ #define DCMIPP_CSI_ONE_DATA_LANE (1U << CSI_LMCFGR_LANENB_Pos) /*!< DCMIPP CSI One Data Lane */ #define DCMIPP_CSI_TWO_DATA_LANES (2U << CSI_LMCFGR_LANENB_Pos) /*!< DCMIPP CSI 2 Data Lanes */ /** * @} */ /** @defgroup DCMIPP_CSI_DataLaneMapping DCMIPP CSI Data Lane Mapping * @{ */ #define DCMIPP_CSI_PHYSICAL_DATA_LANES 1U /*!< Physical data lane 0 connected to logical data lane 0 and Physical data lane 1 connected to logical data lane 1 */ #define DCMIPP_CSI_INVERTED_DATA_LANES 2U /*!< Physical data lane 1 connected to logical data lane 0 and Physical data lane 0 connected to logical data lane 1 */ /** * @} */ /** @defgroup DCMIPP_CSI_DataLane DCMIPP CSI Data Lane * @{ */ #define DCMIPP_CSI_DATA_LANE0 1U /*!< DCMIPP CSI Data Lane 0 */ #define DCMIPP_CSI_DATA_LANE1 2U /*!< DCMIPP CSI Data Lane 1 */ /** * @} */ /** @defgroup DCMIPP_CSI_Timer_StartPoint DCMIPP CSI Timer StartPoint * @{ */ #define DCMIPP_CSI_TIMER_START_SOF 0U /*!< DCMIPP CSI Start timer counter at Start Of Frame */ #define DCMIPP_CSI_TIMER_START_EOF 1U /*!< DCMIPP CSI Start timer counter at End Of Frame */ /** * @} */ /** @defgroup DCMIPP_CSI_DataTypeFormat DCMIPP CSI Data Type Format * @{ */ #define DCMIPP_CSI_DT_BPP6 0U /*!< DCMIPP CSI Data Type Format 6 bit words */ #define DCMIPP_CSI_DT_BPP7 1U /*!< DCMIPP CSI Data Type Format 7 bit words */ #define DCMIPP_CSI_DT_BPP8 2U /*!< DCMIPP CSI Data Type Format 8 bit words */ #define DCMIPP_CSI_DT_BPP10 3U /*!< DCMIPP CSI Data Type Format 10 bit words */ #define DCMIPP_CSI_DT_BPP12 4U /*!< DCMIPP CSI Data Type Format 12 bit words */ #define DCMIPP_CSI_DT_BPP14 5U /*!< DCMIPP CSI Data Type Format 14 bit words */ #define DCMIPP_CSI_DT_BPP16 6U /*!< DCMIPP CSI Data Type Format 16 bit words */ /** * @} */ /** @defgroup DCMIPP_CSI_Timer DCMIPP CSI Timer * @{ */ #define DCMIPP_CSI_TIMER0 0U /*!< DCMIPP CSI Timer0 */ #define DCMIPP_CSI_TIMER1 1U /*!< DCMIPP CSI Timer1 */ #define DCMIPP_CSI_TIMER2 2U /*!< DCMIPP CSI Timer2 */ #define DCMIPP_CSI_TIMER3 3U /*!< DCMIPP CSI Timer3 */ /** * @} */ /** @defgroup DCMIPP_CSI_Counter DCMIPP CSI Counter * @{ */ #define DCMIPP_CSI_COUNTER0 0U /*!< DCMIPP CSI Counter 0 */ #define DCMIPP_CSI_COUNTER1 1U /*!< DCMIPP CSI Counter 1 */ #define DCMIPP_CSI_COUNTER2 2U /*!< DCMIPP CSI Counter 2 */ #define DCMIPP_CSI_COUNTER3 3U /*!< DCMIPP CSI Counter 3 */ /** * @} */ /** * @defgroup DCMIPP_CSI_PHYBitRate DCMIPP CSI PHY BitRate * @{ */ #define DCMIPP_CSI_PHY_BT_80 0U /*!< PHY BitRate 80 */ #define DCMIPP_CSI_PHY_BT_90 1U /*!< PHY BitRate 90 */ #define DCMIPP_CSI_PHY_BT_100 2U /*!< PHY BitRate 100 */ #define DCMIPP_CSI_PHY_BT_110 3U /*!< PHY BitRate 110 */ #define DCMIPP_CSI_PHY_BT_120 4U /*!< PHY BitRate 120 */ #define DCMIPP_CSI_PHY_BT_130 5U /*!< PHY BitRate 130 */ #define DCMIPP_CSI_PHY_BT_140 6U /*!< PHY BitRate 140 */ #define DCMIPP_CSI_PHY_BT_150 7U /*!< PHY BitRate 150 */ #define DCMIPP_CSI_PHY_BT_160 8U /*!< PHY BitRate 160 */ #define DCMIPP_CSI_PHY_BT_170 9U /*!< PHY BitRate 170 */ #define DCMIPP_CSI_PHY_BT_180 10U /*!< PHY BitRate 180 */ #define DCMIPP_CSI_PHY_BT_190 11U /*!< PHY BitRate 190 */ #define DCMIPP_CSI_PHY_BT_205 12U /*!< PHY BitRate 205 */ #define DCMIPP_CSI_PHY_BT_220 13U /*!< PHY BitRate 220 */ #define DCMIPP_CSI_PHY_BT_235 14U /*!< PHY BitRate 235 */ #define DCMIPP_CSI_PHY_BT_250 15U /*!< PHY BitRate 250 */ #define DCMIPP_CSI_PHY_BT_275 16U /*!< PHY BitRate 275 */ #define DCMIPP_CSI_PHY_BT_300 17U /*!< PHY BitRate 300 */ #define DCMIPP_CSI_PHY_BT_325 18U /*!< PHY BitRate 325 */ #define DCMIPP_CSI_PHY_BT_350 19U /*!< PHY BitRate 350 */ #define DCMIPP_CSI_PHY_BT_400 20U /*!< PHY BitRate 400 */ #define DCMIPP_CSI_PHY_BT_450 21U /*!< PHY BitRate 450 */ #define DCMIPP_CSI_PHY_BT_500 22U /*!< PHY BitRate 500 */ #define DCMIPP_CSI_PHY_BT_550 23U /*!< PHY BitRate 550 */ #define DCMIPP_CSI_PHY_BT_600 24U /*!< PHY BitRate 600 */ #define DCMIPP_CSI_PHY_BT_650 25U /*!< PHY BitRate 650 */ #define DCMIPP_CSI_PHY_BT_700 26U /*!< PHY BitRate 700 */ #define DCMIPP_CSI_PHY_BT_750 27U /*!< PHY BitRate 750 */ #define DCMIPP_CSI_PHY_BT_800 28U /*!< PHY BitRate 800 */ #define DCMIPP_CSI_PHY_BT_850 29U /*!< PHY BitRate 850 */ #define DCMIPP_CSI_PHY_BT_900 30U /*!< PHY BitRate 900 */ #define DCMIPP_CSI_PHY_BT_950 31U /*!< PHY BitRate 950 */ #define DCMIPP_CSI_PHY_BT_1000 32U /*!< PHY BitRate 1000 */ #define DCMIPP_CSI_PHY_BT_1050 33U /*!< PHY BitRate 1050 */ #define DCMIPP_CSI_PHY_BT_1100 34U /*!< PHY BitRate 1100 */ #define DCMIPP_CSI_PHY_BT_1150 35U /*!< PHY BitRate 1150 */ #define DCMIPP_CSI_PHY_BT_1200 36U /*!< PHY BitRate 1200 */ #define DCMIPP_CSI_PHY_BT_1250 37U /*!< PHY BitRate 1250 */ #define DCMIPP_CSI_PHY_BT_1300 38U /*!< PHY BitRate 1300 */ #define DCMIPP_CSI_PHY_BT_1350 39U /*!< PHY BitRate 1350 */ #define DCMIPP_CSI_PHY_BT_1400 40U /*!< PHY BitRate 1400 */ #define DCMIPP_CSI_PHY_BT_1450 41U /*!< PHY BitRate 1450 */ #define DCMIPP_CSI_PHY_BT_1500 42U /*!< PHY BitRate 1500 */ #define DCMIPP_CSI_PHY_BT_1550 43U /*!< PHY BitRate 1550 */ #define DCMIPP_CSI_PHY_BT_1600 44U /*!< PHY BitRate 1600 */ #define DCMIPP_CSI_PHY_BT_1650 45U /*!< PHY BitRate 1650 */ #define DCMIPP_CSI_PHY_BT_1700 46U /*!< PHY BitRate 1700 */ #define DCMIPP_CSI_PHY_BT_1750 47U /*!< PHY BitRate 1750 */ #define DCMIPP_CSI_PHY_BT_1800 48U /*!< PHY BitRate 1800 */ #define DCMIPP_CSI_PHY_BT_1850 49U /*!< PHY BitRate 1850 */ #define DCMIPP_CSI_PHY_BT_1900 50U /*!< PHY BitRate 1900 */ #define DCMIPP_CSI_PHY_BT_1950 51U /*!< PHY BitRate 1950 */ #define DCMIPP_CSI_PHY_BT_2000 52U /*!< PHY BitRate 2000 */ #define DCMIPP_CSI_PHY_BT_2050 53U /*!< PHY BitRate 2050 */ #define DCMIPP_CSI_PHY_BT_2100 54U /*!< PHY BitRate 2100 */ #define DCMIPP_CSI_PHY_BT_2150 55U /*!< PHY BitRate 2150 */ #define DCMIPP_CSI_PHY_BT_2200 56U /*!< PHY BitRate 2200 */ #define DCMIPP_CSI_PHY_BT_2250 57U /*!< PHY BitRate 2250 */ #define DCMIPP_CSI_PHY_BT_2300 58U /*!< PHY BitRate 2300 */ #define DCMIPP_CSI_PHY_BT_2350 59U /*!< PHY BitRate 2350 */ #define DCMIPP_CSI_PHY_BT_2400 60U /*!< PHY BitRate 2400 */ #define DCMIPP_CSI_PHY_BT_2450 61U /*!< PHY BitRate 2450 */ #define DCMIPP_CSI_PHY_BT_2500 62U /*!< PHY BitRate 2500 */ /** * @} */ /** @defgroup DCMIPP_OutputSamplesType DCMIPP OutputSamplesType * @{ */ #define DCMIPP_CLAMP_YUV (0x0U << DCMIPP_P1CCCR_TYPE_Pos) /*!< Output samples type : Clamped to [16;235] for Y and to [16;240] for U and V */ #define DCMIPP_CLAMP_RGB (0x1U << DCMIPP_P1CCCR_TYPE_Pos) /*!< Output samples type:Clamped to [16;235] for R, G and B */ /** * @} */ /** @defgroup DCMIPP_Format DCMIPP Format * @{ */ #define DCMIPP_FORMAT_BYTE 0U /*!< DCMIPP Format BYTE */ #define DCMIPP_FORMAT_YUV422 (0x1EU << DCMIPP_PRCR_FORMAT_Pos) /*!< DCMIPP Format YUV422 */ #define DCMIPP_FORMAT_RGB565 (0x22U << DCMIPP_PRCR_FORMAT_Pos) /*!< DCMIPP Format RGB565 */ #define DCMIPP_FORMAT_RGB666 (0x23U << DCMIPP_PRCR_FORMAT_Pos) /*!< DCMIPP Format RGB666 */ #define DCMIPP_FORMAT_RGB888 (0x24U << DCMIPP_PRCR_FORMAT_Pos) /*!< DCMIPP Format RGB888 */ #define DCMIPP_FORMAT_RAW8 (0x2AU << DCMIPP_PRCR_FORMAT_Pos) /*!< DCMIPP Format RAW8 */ #define DCMIPP_FORMAT_RAW10 (0x2BU << DCMIPP_PRCR_FORMAT_Pos) /*!< DCMIPP Format RAW10 */ #define DCMIPP_FORMAT_RAW12 (0x2CU << DCMIPP_PRCR_FORMAT_Pos) /*!< DCMIPP Format RAW12 */ #define DCMIPP_FORMAT_RAW14 (0x2DU << DCMIPP_PRCR_FORMAT_Pos) /*!< DCMIPP Format RAW14 */ #define DCMIPP_FORMAT_MONOCHROME_8B (0x4AU << DCMIPP_PRCR_FORMAT_Pos) /*!< DCMIPP Format 8-bits */ #define DCMIPP_FORMAT_MONOCHROME_10B (0x4BU << DCMIPP_PRCR_FORMAT_Pos) /*!< DCMIPP Format 10-bits */ #define DCMIPP_FORMAT_MONOCHROME_12B (0x4CU << DCMIPP_PRCR_FORMAT_Pos) /*!< DCMIPP Format 12-bits */ #define DCMIPP_FORMAT_MONOCHROME_14B (0x4DU << DCMIPP_PRCR_FORMAT_Pos) /*!< DCMIPP Format 14-bits */ /** * @} */ /** @defgroup DCMIPP_Extended_Data_Mode DCMIPP Extended Data Mode * @{ */ #define DCMIPP_INTERFACE_8BITS 0U /*!< Interface captures 8bits on every pixel clock */ #define DCMIPP_INTERFACE_10BITS (1U << DCMIPP_PRCR_EDM_Pos) /*!< Interface captures 10bits on every pixel clock */ #define DCMIPP_INTERFACE_12BITS (2U << DCMIPP_PRCR_EDM_Pos) /*!< Interface captures 12bits on every pixel clock */ #define DCMIPP_INTERFACE_14BITS (3U << DCMIPP_PRCR_EDM_Pos) /*!< Interface captures 14bits on every pixel clock */ #define DCMIPP_INTERFACE_16BITS (4U << DCMIPP_PRCR_EDM_Pos) /*!< Interface captures 16bits on every pixel clock */ /** * @} */ /** @defgroup DCMIPP_HSYNC_Polarity DCMIPP HSYNC Polarity * @{ */ #define DCMIPP_HSPOLARITY_LOW 0U /*!< Horizontal synchronization active Low */ #define DCMIPP_HSPOLARITY_HIGH DCMIPP_PRCR_HSPOL /*!< Horizontal synchronization active High */ /** * @} */ /** @defgroup DCMIPP_VSYNC_Polarity DCMIPP VSYNC Polarity * @{ */ #define DCMIPP_VSPOLARITY_LOW 0U /*!< Vertical synchronization active Low */ #define DCMIPP_VSPOLARITY_HIGH DCMIPP_PRCR_VSPOL /*!< Vertical synchronization active High */ /** * @} */ /** @defgroup DCMIPP_PIXCK_Polarity DCMIPP PIXCK Polarity * @{ */ #define DCMIPP_PCKPOLARITY_FALLING 0U /*!< Pixel clock active on Falling edge */ #define DCMIPP_PCKPOLARITY_RISING DCMIPP_PRCR_PCKPOL /*!< Pixel clock active on Rising edge */ /** * @} */ /** @defgroup DCMIPP_Synchronization_Mode DCMIPP Synchronization Mode * @{ */ #define DCMIPP_SYNCHRO_HARDWARE 0U /*!< Hardware Synchronization */ #define DCMIPP_SYNCHRO_EMBEDDED DCMIPP_PRCR_ESS /*!< Embedded Synchronization */ /** * @} */ /** @defgroup DCMIPP_SWAP_COMPONENT DCMIPP Swap Component * @{ */ #define DCMIPP_SWAP_COMPONENT_DISABLE 0U /*!< Disable Swap R/U and B/V */ #define DCMIPP_SWAP_COMPONENT_ENABLE (DCMIPP_CMCR_SWAPRB) /*!< Enable Swap R/U and B/V */ /** * @} */ /** @defgroup DCMIPP_SWAP_CYCLES DCMIPP Swap Cycles * @{ */ #define DCMIPP_SWAPCYCLES_DISABLE 0U /*!< swap data from cycle 0 vs cycle 1 */ #define DCMIPP_SWAPCYCLES_ENABLE (DCMIPP_PRCR_SWAPCYCLES) /*!< swap data from cycle 0 vs cycle 1 */ /** * @} */ /** @defgroup DCMIPP_SWAP_BITS DCMIPP Swap Bits * @{ */ #define DCMIPP_SWAPBITS_DISABLE 0U /*!< swap lsb vs msb within each received component */ #define DCMIPP_SWAPBITS_ENABLE (DCMIPP_PRCR_SWAPBITS) /*!< swap lsb vs msb within each received component */ /** * @} */ /** @defgroup DCMIPP_Pipe_Line_Decimation DCMIPP Pipe Line Decimation * @{ */ /** @defgroup DCMIPP_Line_Select_Mode DCMIPP Line Select Mode * @{ */ #define DCMIPP_LSM_ALL 0U /*!< Interface captures all received lines */ #define DCMIPP_LSM_ALTERNATE_2 (1U << DCMIPP_P0PPCR_LSM_Pos ) /*!< Interface captures one line out of two */ /** * @} */ /** @defgroup DCMIPP_Line_Start_Mode DCMIPP Line Start Mode * @{ */ #define DCMIPP_OELS_ODD 0U /*!< Interface captures first line from the frame start, second one is dropped */ #define DCMIPP_OELS_EVEN (1U << DCMIPP_P0PPCR_OELS_Pos) /*!< Interface captures second line from the frame start, first one is dropped */ /** * @} */ /** * @} */ /** @defgroup DCMIPP_Pipe_Byte_Decimation DCMIPP Pipe Byte Decimation * @{ */ /** @defgroup DCMIPP_Byte_Select_Mode DCMIPP Byte Select Mode * @{ */ #define DCMIPP_BSM_ALL 0U /*!< Interface captures all received data */ #define DCMIPP_BSM_DATA_OUT_2 (1U << DCMIPP_P0PPCR_BSM_Pos) /*!< Interface captures 1 data out of 2 */ #define DCMIPP_BSM_BYTE_OUT_4 (2U << DCMIPP_P0PPCR_BSM_Pos) /*!< Interface captures 1 byte out of 4 */ #define DCMIPP_BSM_2BYTE_OUT_4 (3U << DCMIPP_P0PPCR_BSM_Pos) /*!< Interface captures 2 byte out of 4 */ /** * @} */ /** @defgroup DCMIPP_Byte_Start_Mode DCMIPP Byte Start Mode * @{ */ #define DCMIPP_OEBS_ODD 0U /*!< Interface captures first data (byte or double byte) from the frame/line start,second one being dropped */ #define DCMIPP_OEBS_EVEN (1U << DCMIPP_P0PPCR_OEBS_Pos) /*!< Interface captures second data (byte or double byte) from the frame/line start, first one is dropped */ /** * @} */ /** * @} */ /** @defgroup DCMIPP_Memory DCMIPP Memory * @{ */ #define DCMIPP_MEMORY_ADDRESS_0 0U /*!< Base destination address */ #define DCMIPP_MEMORY_ADDRESS_1 1U /*!< Second destination address */ /** * @} */ /** @defgroup DCMIPP_LineMult DCMIPP Line Mult * @{ */ #define DCMIPP_MULTILINE_1_LINE 0U /*!< Event after every 1 line */ #define DCMIPP_MULTILINE_2_LINES (1U << DCMIPP_P0PPCR_LINEMULT_Pos) /*!< Event after every 2 lines */ #define DCMIPP_MULTILINE_4_LINES (2U << DCMIPP_P0PPCR_LINEMULT_Pos) /*!< Event after every 4 lines */ #define DCMIPP_MULTILINE_8_LINES (3U << DCMIPP_P0PPCR_LINEMULT_Pos) /*!< Event after every 8 lines */ #define DCMIPP_MULTILINE_16_LINES (4U << DCMIPP_P0PPCR_LINEMULT_Pos) /*!< Event after every 16 lines */ #define DCMIPP_MULTILINE_32_LINES (5U << DCMIPP_P0PPCR_LINEMULT_Pos) /*!< Event after every 32 lines */ #define DCMIPP_MULTILINE_64_LINES (6U << DCMIPP_P0PPCR_LINEMULT_Pos) /*!< Event after every 64 lines */ #define DCMIPP_MULTILINE_128_LINES (7U << DCMIPP_P0PPCR_LINEMULT_Pos) /*!< Event after every 128 lines */ /** * @} */ /** @defgroup DCMIPP_LineWrapAddress DCMIPP line Wrap Address * @{ */ #define DCMIPP_WRAP_ADDRESS_1_LINE (0U << DCMIPP_P1PPCR_LMAWM_Pos) /*!< Wraps address after 1 line */ #define DCMIPP_WRAP_ADDRESS_2_LINES (1U << DCMIPP_P1PPCR_LMAWM_Pos) /*!< Wraps address after 2 lines */ #define DCMIPP_WRAP_ADDRESS_4_LINES (2U << DCMIPP_P1PPCR_LMAWM_Pos) /*!< Wraps address after 4 lines */ #define DCMIPP_WRAP_ADDRESS_8_LINES (3U << DCMIPP_P1PPCR_LMAWM_Pos) /*!< Wraps address after 8 lines */ #define DCMIPP_WRAP_ADDRESS_16_LINES (4U << DCMIPP_P1PPCR_LMAWM_Pos) /*!< Wraps address after 16 lines */ #define DCMIPP_WRAP_ADDRESS_32_LINES (5U << DCMIPP_P1PPCR_LMAWM_Pos) /*!< Wraps address after 32 lines */ #define DCMIPP_WRAP_ADDRESS_64_LINES (6U << DCMIPP_P1PPCR_LMAWM_Pos) /*!< Wraps address after 64 lines */ #define DCMIPP_WRAP_ADDRESS_128_LINES (7U << DCMIPP_P1PPCR_LMAWM_Pos) /*!< Wraps address after 128 lines */ /** * @} */ /** @defgroup DCMIPP_PIPE_Vertical_Decimation_Ratio DCMIPP Pipe Vertical Decimation Ratio * @{ */ #define DCMIPP_VDEC_ALL 0U /*!< All lines captured , no vertical decimation */ #define DCMIPP_VDEC_1_OUT_2 (1U << DCMIPP_P1DECR_VDEC_Pos) /*!< One line out of two transmitted */ #define DCMIPP_VDEC_1_OUT_4 (2U << DCMIPP_P1DECR_VDEC_Pos) /*!< One line out of four transmitted */ #define DCMIPP_VDEC_1_OUT_8 (3U << DCMIPP_P1DECR_VDEC_Pos) /*!< One line out of eight transmitted */ /** * @} */ /** @defgroup DCMIPP_PIPE_Horizontal_Decimation_Ratio DCMIPP Pipe Horizontal Decimation Ratio * @{ */ #define DCMIPP_HDEC_ALL 0U /*!< All pixels captured , no horizontal decimation */ #define DCMIPP_HDEC_1_OUT_2 (1U << DCMIPP_P1DECR_HDEC_Pos) /*!< One line out of two transmitted */ #define DCMIPP_HDEC_1_OUT_4 (2U << DCMIPP_P1DECR_HDEC_Pos) /*!< One line out of four transmitted */ #define DCMIPP_HDEC_1_OUT_8 (3U << DCMIPP_P1DECR_HDEC_Pos) /*!< One line out of eight transmitted */ /** * @} */ /** @defgroup DCMIPP_Pixel_Packer_Format DCMIPP Pixel Packer Format * @{ */ #define DCMIPP_PIXEL_PACKER_FORMAT_RGB888_YUV444_1 0U /*!< RGB888 or YUV422 1-buffer*/ #define DCMIPP_PIXEL_PACKER_FORMAT_RGB565_1 (1U << DCMIPP_P1PPCR_FORMAT_Pos) /*!< RGB565 1-buffer */ #define DCMIPP_PIXEL_PACKER_FORMAT_ARGB8888 (2U << DCMIPP_P1PPCR_FORMAT_Pos) /*!< ARGB888 A=0xff */ #define DCMIPP_PIXEL_PACKER_FORMAT_RGBA888 (3U << DCMIPP_P1PPCR_FORMAT_Pos) /*!< RGBA888 A=0xff) */ #define DCMIPP_PIXEL_PACKER_FORMAT_MONO_Y8_G8_1 (4U << DCMIPP_P1PPCR_FORMAT_Pos) /*!< Monochrome Y8 or G8 */ #define DCMIPP_PIXEL_PACKER_FORMAT_YUV444_1 (5U << DCMIPP_P1PPCR_FORMAT_Pos) /*!< YUV444 1-buffer 32bpp A=0xff) */ #define DCMIPP_PIXEL_PACKER_FORMAT_YUV422_1 (6U << DCMIPP_P1PPCR_FORMAT_Pos) /*!< YUV422 1-buffer 16bpp */ #define DCMIPP_PIXEL_PACKER_FORMAT_YUV422_2 (7U << DCMIPP_P1PPCR_FORMAT_Pos) /*!< YUV422 2-buffer 16bpp */ #define DCMIPP_PIXEL_PACKER_FORMAT_YUV420_2 (8U << DCMIPP_P1PPCR_FORMAT_Pos) /*!< YUV420 2-buffer 12bpp */ #define DCMIPP_PIXEL_PACKER_FORMAT_YUV420_3 (9U << DCMIPP_P1PPCR_FORMAT_Pos) /*!< YUV420 3-buffer 12bpp */ /** * @} */ /** @defgroup DCMIPP_Statistics_Extraction_Mode DCMIPP Statistics extraction Mode * @{ */ #define DCMIPP_STAT_EXT_MODE_AVERAGE 0U /*!< Values of pixels are accumulated as-is */ #define DCMIPP_STAT_EXT_MODE_BINS (1U << DCMIPP_P1ST1CR_MODE_Pos) /*!< Values of pixels are used to see if the pixel fits one of the 12 bins.*/ /** * @} */ /** @defgroup DCMIPP_Statistics_Extraction_Module_ID DCMIPP Statistics Extraction Module ID * @{ */ #define DCMIPP_STATEXT_MODULE1 1U /*!< Statistic Extraction Module 1 */ #define DCMIPP_STATEXT_MODULE2 2U /*!< Statistic Extraction Module 2 */ #define DCMIPP_STATEXT_MODULE3 3U /*!< Statistic Extraction Module 3 */ /** * @} */ /** @defgroup DCMIPP_Statistics_Extraction_Source DCMIPP Statistics extraction Source * @{ */ #define DCMIPP_STAT_EXT_SOURCE_PRE_BLKLVL_R 0U /*!< Statistics Extraction Source : Red is sampled before the black level calibration and exposure */ #define DCMIPP_STAT_EXT_SOURCE_PRE_BLKLVL_G (1U << DCMIPP_P1ST1CR_SRC_Pos) /*!< Statistics Extraction Source : Green is sampled before the black level calibration and exposure */ #define DCMIPP_STAT_EXT_SOURCE_PRE_BLKLVL_B (2U << DCMIPP_P1ST1CR_SRC_Pos) /*!< Statistics Extraction Source : Blue is sampled before the black level calibration and exposure */ #define DCMIPP_STAT_EXT_SOURCE_PRE_BLKLVL_L (3U << DCMIPP_P1ST1CR_SRC_Pos) /*!< Statistics Extraction Source : Luminance is sampled before the black level calibration and exposure */ #define DCMIPP_STAT_EXT_SOURCE_POST_DEMOS_R (4U << DCMIPP_P1ST1CR_SRC_Pos) /*!< Statistics Extraction Source : Red is sampled after the black level calibration and exposure */ #define DCMIPP_STAT_EXT_SOURCE_POST_DEMOS_G (5U << DCMIPP_P1ST1CR_SRC_Pos) /*!< Statistics Extraction Source : Green is sampled after the black level calibration and exposure */ #define DCMIPP_STAT_EXT_SOURCE_POST_DEMOS_B (6U << DCMIPP_P1ST1CR_SRC_Pos) /*!< Statistics Extraction Source : Blue is sampled after the black level calibration and exposure */ #define DCMIPP_STAT_EXT_SOURCE_POST_DEMOS_L (7U << DCMIPP_P1ST1CR_SRC_Pos) /*!< Statistics Extraction Source : Luminance is sampled after the black level calibration and exposure */ /** * @} */ /** @defgroup DCMIPP_Statistics_Extraction_Bins DCMIPP Statistics extraction Bins * @{ */ #define DCMIPP_STAT_EXT_BINS_MODE_LOWER_BINS 0U /*!< LowerBins: Accu0 (1, 2) is incremented of 256 if Component <4 (<8, <16) */ #define DCMIPP_STAT_EXT_BINS_MODE_LOWMID_BINS (1U << DCMIPP_P1ST1CR_BINS_Pos) /*!< LowMid Bins: Accu0 (1, 2) is incremented of 256 if Component <32 (<64, <128) */ #define DCMIPP_STAT_EXT_BINS_MODE_UPMID_BINS (2U << DCMIPP_P1ST1CR_BINS_Pos) /*!< UpMid Bins: Accu0 (1, 2) is incremented of 256 if Component >127 (>191, >224) */ #define DCMIPP_STAT_EXT_BINS_MODE_UP_BINS (3U << DCMIPP_P1ST1CR_BINS_Pos) /*!< UpBins: Accu0 (1, 2) is incremented of 256 if Component >239 (>247, >251) Condition: MODE = Average */ #define DCMIPP_STAT_EXT_AVER_MODE_ALL_PIXELS (0U << DCMIPP_P1ST1CR_BINS_Pos) /*!< All Pixels: Accu is incremented of Component, if 0 <= Component < 256 */ #define DCMIPP_STAT_EXT_AVER_MODE_NOEXT16 (1U << DCMIPP_P1ST1CR_BINS_Pos) /*!< NoExt16: Accu is incremented of Component, if 16 <= Component < 240 */ #define DCMIPP_STAT_EXT_AVER_MODE_NOEXT32 (2U << DCMIPP_P1ST1CR_BINS_Pos) /*!< NoExt32: Accu is incremented of Component, if 32 <= Component < 224 */ #define DCMIPP_STAT_EXT_AVER_MODE_NOEXT64 (3U << DCMIPP_P1ST1CR_BINS_Pos) /*!< NoExt64: Accu is incremented of Component, if 64 <= Component < 192 */ /** * @} */ /** * @defgroup DCMIPP_RAWBayer2RGB_Strength DCMIPP RAWBayer2RGB Strength * @{ */ #define DCMIPP_RAWBAYER_ALGO_NONE 0U /*!< No edge detection, pure linear interpolation */ #define DCMIPP_RAWBAYER_ALGO_STRENGTH_3 1U /*!< RawBayer relative algorithm strength 3 */ #define DCMIPP_RAWBAYER_ALGO_STRENGTH_4 2U /*!< RawBayer relative algorithm strength 4 */ #define DCMIPP_RAWBAYER_ALGO_STRENGTH_6 3U /*!< RawBayer relative algorithm strength 6 */ #define DCMIPP_RAWBAYER_ALGO_STRENGTH_8 4U /*!< RawBayer relative algorithm strength 8 */ #define DCMIPP_RAWBAYER_ALGO_STRENGTH_12 5U /*!< RawBayer relative algorithm strength 12 */ #define DCMIPP_RAWBAYER_ALGO_STRENGTH_16 6U /*!< RawBayer relative algorithm strength 16 */ #define DCMIPP_RAWBAYER_ALGO_STRENGTH_24 7U /*!< RawBayer relative algorithm strength 24 */ /** * @} */ /** * @defgroup DCMIPP_RAWBayer2RGB_Type DCMIPP RAWBayer2RGB Type * @{ */ #define DCMIPP_RAWBAYER_RGGB 0U /*!Instance->CMIER |= (__INTERRUPT__)) /** * @brief Disable the specified DCMIPP interrupts. * @param __HANDLE__ DCMIPP handle * @param __INTERRUPT__ specifies the DCMIPP interrupt sources to be disabled. * This parameter can be any combination of the following values: * @arg DCMIPP_IT_AXI_TRANSFER_ERR IPPLUG AXI Transfer error interrupt * @arg DCMIPP_IT_PARALLEL_SYNC_ERR Synchronization error interrupt on parallel interface * @arg DCMIPP_IT_PIPE0_FRAME Frame capture complete interrupt for the pipe0 * @arg DCMIPP_IT_PIPE0_VSYNC Vertical sync interrupt for the pipe0 * @arg DCMIPP_IT_PIPE0_LINE Multi-line capture complete interrupt for the pipe0 * @arg DCMIPP_IT_PIPE0_LIMIT Limit interrupt for the pipe0 * @arg DCMIPP_IT_PIPE0_OVR Overrun interrupt for the pipe0 * @arg DCMIPP_IT_PIPE1_LINE Multi-line capture complete interrupt for the pipe1 * @arg DCMIPP_IT_PIPE1_FRAME Frame capture complete interrupt for the pipe1 * @arg DCMIPP_IT_PIPE1_VSYNC Vertical sync interrupt for the pipe1 * @arg DCMIPP_IT_PIPE1_OVR Overrun interrupt for the pipe1 * @arg DCMIPP_IT_PIPE2_LINE Multi-line capture complete interrupt for the pipe2 * @arg DCMIPP_IT_PIPE2_FRAME Frame capture complete interrupt for the pipe2 * @arg DCMIPP_IT_PIPE2_VSYNC Vertical sync interrupt for the pipe2 * @arg DCMIPP_IT_PIPE2_OVR Overrun interrupt for the pipe2 * @retval None */ #define __HAL_DCMIPP_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CMIER &= ~(__INTERRUPT__)) /** * @brief Get the DCMIPP pending interrupt flags. * @param __HANDLE__ DCMIPP handle * @param __FLAG__ Get the specified flag. * This parameter can be any combination of the following values: * @arg DCMIPP_FLAG_AXI_TRANSFER_ERR IPPLUG AXI Transfer error interrupt flag * @arg DCMIPP_FLAG_PARALLEL_SYNC_ERR Synchronization error interrupt flag on parallel interface * @arg DCMIPP_FLAG_PIPE0_FRAME Frame capture complete interrupt flag for the pipe0 * @arg DCMIPP_FLAG_PIPE0_VSYNC Vertical sync interrupt flag for the pipe0 * @arg DCMIPP_FLAG_PIPE0_LINE Multi-line capture complete interrupt flag for the pipe0 * @arg DCMIPP_FLAG_PIPE0_LIMIT Limit interrupt flag for the pipe0 * @arg DCMIPP_FLAG_PIPE0_OVR Overrun interrupt flag for the pipe0 * @arg DCMIPP_FLAG_PIPE1_LINE Multi-line capture complete interrupt flag for the pipe1 * @arg DCMIPP_FLAG_PIPE1_FRAME Frame capture complete interrupt flag for the pipe1 * @arg DCMIPP_FLAG_PIPE1_VSYNC Vertical sync interrupt flag for the pipe1 * @arg DCMIPP_FLAG_PIPE1_OVR Overrun interrupt flag for the pipe1 * @arg DCMIPP_FLAG_PIPE2_LINE Multi-line capture complete interrupt flag for the pipe2 * @arg DCMIPP_FLAG_PIPE2_FRAME Frame capture complete interrupt flag for the pipe2 * @arg DCMIPP_FLAG_PIPE2_VSYNC Vertical sync interrupt flag for the pipe2 * @arg DCMIPP_FLAG_PIPE2_OVR Overrun interrupt flag for the pipe2 * @retval The state of FLAG (SET or RESET). */ #define __HAL_DCMIPP_GET_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->CMSR2 & (__FLAG__)) /** * @brief Clear the DCMIPP pending interrupt flags. * @param __HANDLE__ DCMIPP handle * @param __FLAG__ specifies the flag to clear. * This parameter can be any combination of the following values: * @arg DCMIPP_FLAG_AXI_TRANSFER_ERR IPPLUG AXI Transfer error interrupt * @arg DCMIPP_FLAG_PARALLEL_SYNC_ERR Synchronization error interrupt on parallel interface * @arg DCMIPP_FLAG_PIPE0_FRAME Frame capture complete interrupt for the pipe0 * @arg DCMIPP_FLAG_PIPE0_VSYNC Vertical sync interrupt for the pipe0 * @arg DCMIPP_FLAG_PIPE0_LINE Multi-line capture complete interrupt for the pipe0 * @arg DCMIPP_FLAG_PIPE0_LIMIT Limit interrupt for the pipe0 * @arg DCMIPP_FLAG_PIPE0_OVR Overrun interrupt for the pipe0 * @arg DCMIPP_FLAG_PIPE1_LINE Multi-line capture complete interrupt for the pipe1 * @arg DCMIPP_FLAG_PIPE1_FRAME Frame capture complete interrupt for the pipe1 * @arg DCMIPP_FLAG_PIPE1_VSYNC Vertical sync interrupt for the pipe1 * @arg DCMIPP_FLAG_PIPE1_OVR Overrun interrupt for the pipe1 * @arg DCMIPP_FLAG_PIPE2_LINE Multi-line capture complete interrupt for the pipe2 * @arg DCMIPP_FLAG_PIPE2_FRAME Frame capture complete interrupt for the pipe2 * @arg DCMIPP_FLAG_PIPE2_VSYNC Vertical sync interrupt for the pipe2 * @arg DCMIPP_FLAG_PIPE2_OVR Overrun interrupt for the pipe2 * @retval None */ #define __HAL_DCMIPP_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->CMFCR = (__FLAG__)) /** * @brief Checks whether the specified DCMIPP interrupt is enabled or not. * @param __HANDLE__ DCMIPP handle * @param __INTERRUPT__ specifies the DCMIPP interrupt sources to be checked. * This parameter can be any combination of the following values: * @arg DCMIPP_IT_AXI_TRANSFER_ERR IPPLUG AXI Transfer error interrupt * @arg DCMIPP_IT_PARALLEL_SYNC_ERR Synchronization error interrupt on parallel interface * @arg DCMIPP_IT_PIPE0_FRAME Frame capture complete interrupt for the pipe0 * @arg DCMIPP_IT_PIPE0_VSYNC Vertical sync interrupt for the pipe0 * @arg DCMIPP_IT_PIPE0_LINE Multi-line capture complete interrupt for the pipe0 * @arg DCMIPP_IT_PIPE0_LIMIT Limit interrupt for the pipe0 * @arg DCMIPP_IT_PIPE0_OVR Overrun interrupt for the pipe0 * @arg DCMIPP_IT_PIPE1_LINE Multi-line capture complete interrupt for the pipe1 * @arg DCMIPP_IT_PIPE1_FRAME Frame capture complete interrupt for the pipe1 * @arg DCMIPP_IT_PIPE1_VSYNC Vertical sync interrupt for the pipe1 * @arg DCMIPP_IT_PIPE1_OVR Overrun interrupt for the pipe1 * @arg DCMIPP_IT_PIPE2_LINE Multi-line capture complete interrupt for the pipe2 * @arg DCMIPP_IT_PIPE2_FRAME Frame capture complete interrupt for the pipe2 * @arg DCMIPP_IT_PIPE2_VSYNC Vertical sync interrupt for the pipe2 * @arg DCMIPP_IT_PIPE2_OVR Overrun interrupt for the pipe2 * @retval The state of DCMIPP interrupt (SET or RESET). */ #define __HAL_DCMIPP_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CMIER & \ (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET) /** * @brief Enable the specified DCMIPP CSI interrupts. * @param __HANDLE__ CSI handle * @param __INTERRUPT__ specifies the DCMIPP CSI interrupt sources to be enabled. * This parameter can be any combination of the following values: * @arg DCMIPP_CSI_IT_SYNCERR Synchronization error interrupt * @arg DCMIPP_CSI_IT_WDERR Watchdog error interrupt * @arg DCMIPP_CSI_IT_SPKTERR Shorter packet than expected error interrupt * @arg DCMIPP_CSI_IT_IDERR Data ID information error interrupt * @arg DCMIPP_CSI_IT_CECCERR Corrected ECC error interrupt * @arg DCMIPP_CSI_IT_ECCERR ECC Error interrupt * @arg DCMIPP_CSI_IT_CRCERR CRC Error interrupt * @arg DCMIPP_CSI_IT_CCFIFO Clock changer FIFO full event interrupt * @arg DCMIPP_CSI_IT_SPKT Short packet detection interrupt * @arg DCMIPP_CSI_IT_EOF3 EOF on virtual channel 3 interrupt * @arg DCMIPP_CSI_IT_EOF2 EOF on virtual channel 2 interrupt * @arg DCMIPP_CSI_IT_EOF1 EOF on virtual channel 1 interrupt * @arg DCMIPP_CSI_IT_EOF0 EOF on virtual channel 0 interrupt * @arg DCMIPP_CSI_IT_SOF3 SOF on virtual channel 3 interrupt * @arg DCMIPP_CSI_IT_SOF2 SOF on virtual channel 2 interrupt * @arg DCMIPP_CSI_IT_SOF1 SOF on virtual channel 1 interrupt * @arg DCMIPP_CSI_IT_SOF0 SOF on virtual channel 0 interrupt * @arg DCMIPP_CSI_IT_TIM3 Timer 3 counter value reached interrupt * @arg DCMIPP_CSI_IT_TIM2 Timer 2 counter value reached interrupt * @arg DCMIPP_CSI_IT_TIM1 Timer 1 counter value reached interrupt * @arg DCMIPP_CSI_IT_TIM0 Timer 0 counter value reached interrupt * @arg DCMIPP_CSI_IT_LB3 Line/byte event 3 reached interrupt * @arg DCMIPP_CSI_IT_LB2 Line/byte event 2 reached interrupt * @arg DCMIPP_CSI_IT_LB1 Line/byte event 1 reached interrupt * @arg DCMIPP_CSI_IT_LB0 Line/byte event 0 reached interrupt * @retval None */ #define __HAL_DCMIPP_CSI_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->IER0 |= (__INTERRUPT__)) /** * @brief Disable the specified DCMIPP CSI interrupts. * @param __HANDLE__ CSI handle * @param __INTERRUPT__ specifies the DCMIPP CSI interrupt sources to be enabled. * This parameter can be any combination of the following values: * @arg DCMIPP_CSI_IT_SYNCERR Synchronization error interrupt * @arg DCMIPP_CSI_IT_WDERR Watchdog error interrupt * @arg DCMIPP_CSI_IT_SPKTERR Shorter packet than expected error interrupt * @arg DCMIPP_CSI_IT_IDERR Data ID information error interrupt * @arg DCMIPP_CSI_IT_CECCERR Corrected ECC error interrupt * @arg DCMIPP_CSI_IT_ECCERR ECC Error interrupt * @arg DCMIPP_CSI_IT_CRCERR CRC Error interrupt * @arg DCMIPP_CSI_IT_CCFIFO Clock changer FIFO full event interrupt * @arg DCMIPP_CSI_IT_SPKT Short packet detection interrupt * @arg DCMIPP_CSI_IT_EOF3 EOF on virtual channel 3 interrupt * @arg DCMIPP_CSI_IT_EOF2 EOF on virtual channel 2 interrupt * @arg DCMIPP_CSI_IT_EOF1 EOF on virtual channel 1 interrupt * @arg DCMIPP_CSI_IT_EOF0 EOF on virtual channel 0 interrupt * @arg DCMIPP_CSI_IT_SOF3 SOF on virtual channel 3 interrupt * @arg DCMIPP_CSI_IT_SOF2 SOF on virtual channel 2 interrupt * @arg DCMIPP_CSI_IT_SOF1 SOF on virtual channel 1 interrupt * @arg DCMIPP_CSI_IT_SOF0 SOF on virtual channel 0 interrupt * @arg DCMIPP_CSI_IT_TIM3 Timer 3 counter value reached interrupt * @arg DCMIPP_CSI_IT_TIM2 Timer 2 counter value reached interrupt * @arg DCMIPP_CSI_IT_TIM1 Timer 1 counter value reached interrupt * @arg DCMIPP_CSI_IT_TIM0 Timer 0 counter value reached interrupt * @arg DCMIPP_CSI_IT_LB3 Line/byte event 3 reached interrupt * @arg DCMIPP_CSI_IT_LB2 Line/byte event 2 reached interrupt * @arg DCMIPP_CSI_IT_LB1 Line/byte event 1 reached interrupt * @arg DCMIPP_CSI_IT_LB0 Line/byte event 0 reached interrupt * @retval None */ #define __HAL_DCMIPP_CSI_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->IER0 &= ~(__INTERRUPT__)) /** * @brief Get the DCMIPP CSI pending interrupt flags. * @param __HANDLE__ CSI handle * @param __FLAG__ Get the specified flag. * This parameter can be any combination of the following values: * @arg DCMIPP_CSI_FLAG_SYNCERR Synchronization error flag * @arg DCMIPP_CSI_FLAG_WDERR Watchdog error flag * @arg DCMIPP_CSI_FLAG_SPKTERR Shorter packet than expected error flag * @arg DCMIPP_CSI_FLAG_IDERR Data ID information error flag * @arg DCMIPP_CSI_FLAG_CECCERR Corrected ECC error flag * @arg DCMIPP_CSI_FLAG_ECCERR ECC Error flag * @arg DCMIPP_CSI_FLAG_CRCERR CRC Error flag * @arg DCMIPP_CSI_FLAG_CCFIFO Clock changer FIFO full event flag * @arg DCMIPP_CSI_FLAG_SPKT Short packet detection flag * @arg DCMIPP_CSI_FLAG_EOF3 EOF on virtual channel 3 flag * @arg DCMIPP_CSI_FLAG_EOF2 EOF on virtual channel 2 flag * @arg DCMIPP_CSI_FLAG_EOF1 EOF on virtual channel 1 flag * @arg DCMIPP_CSI_FLAG_EOF0 EOF on virtual channel 0 flag * @arg DCMIPP_CSI_FLAG_SOF3 SOF on virtual channel 3 flag * @arg DCMIPP_CSI_FLAG_SOF2 SOF on virtual channel 2 flag * @arg DCMIPP_CSI_FLAG_SOF1 SOF on virtual channel 1 flag * @arg DCMIPP_CSI_FLAG_SOF0 SOF on virtual channel 0 flag * @arg DCMIPP_CSI_FLAG_TIM3 Timer 3 counter value reached flag * @arg DCMIPP_CSI_FLAG_TIM2 Timer 2 counter value reached flag * @arg DCMIPP_CSI_FLAG_TIM1 Timer 1 counter value reached flag * @arg DCMIPP_CSI_FLAG_TIM0 Timer 0 counter value reached flag * @arg DCMIPP_CSI_FLAG_LB3 Line/byte event 3 reached flag * @arg DCMIPP_CSI_FLAG_LB2 Line/byte event 2 reached flag * @arg DCMIPP_CSI_FLAG_LB1 Line/byte event 1 reached flag * @arg DCMIPP_CSI_FLAG_LB0 Line/byte event 0 reached flag * @retval None */ #define __HAL_DCMIPP_CSI_GET_FLAG(__HANDLE__, __FLAG__)((__HANDLE__)->IER0 & (__FLAG__)) /** * @brief Clear the DCMIPP CSI pending interrupt flags. * @param __HANDLE__ CSI handle * @param __FLAG__ specifies the flag to clear. * This parameter can be any combination of the following values: * @arg DCMIPP_CSI_FLAG_SYNCERR Synchronization error flag * @arg DCMIPP_CSI_FLAG_WDERR Watchdog error flag * @arg DCMIPP_CSI_FLAG_SPKTERR Shorter packet than expected error flag * @arg DCMIPP_CSI_FLAG_IDERR Data ID information error flag * @arg DCMIPP_CSI_FLAG_CECCERR Corrected ECC error flag * @arg DCMIPP_CSI_FLAG_ECCERR ECC Error flag * @arg DCMIPP_CSI_FLAG_CRCERR CRC Error flag * @arg DCMIPP_CSI_FLAG_CCFIFO Clock changer FIFO full event flag * @arg DCMIPP_CSI_FLAG_SPKT Short packet detection flag * @arg DCMIPP_CSI_FLAG_EOF3 EOF on virtual channel 3 flag * @arg DCMIPP_CSI_FLAG_EOF2 EOF on virtual channel 2 flag * @arg DCMIPP_CSI_FLAG_EOF1 EOF on virtual channel 1 flag * @arg DCMIPP_CSI_FLAG_EOF0 EOF on virtual channel 0 flag * @arg DCMIPP_CSI_FLAG_SOF3 SOF on virtual channel 3 flag * @arg DCMIPP_CSI_FLAG_SOF2 SOF on virtual channel 2 flag * @arg DCMIPP_CSI_FLAG_SOF1 SOF on virtual channel 1 flag * @arg DCMIPP_CSI_FLAG_SOF0 SOF on virtual channel 0 flag * @arg DCMIPP_CSI_FLAG_TIM3 Timer 3 counter value reached flag * @arg DCMIPP_CSI_FLAG_TIM2 Timer 2 counter value reached flag * @arg DCMIPP_CSI_FLAG_TIM1 Timer 1 counter value reached flag * @arg DCMIPP_CSI_FLAG_TIM0 Timer 0 counter value reached flag * @arg DCMIPP_CSI_FLAG_LB3 Line/byte event 3 reached flag * @arg DCMIPP_CSI_FLAG_LB2 Line/byte event 2 reached flag * @arg DCMIPP_CSI_FLAG_LB1 Line/byte event 1 reached flag * @arg DCMIPP_CSI_FLAG_LB0 Line/byte event 0 reached flag * @retval None */ #define __HAL_DCMIPP_CSI_CLEAR_FLAG(__HANDLE__, __FLAG__)((__HANDLE__)->FCR0 = (__FLAG__)) /** * @brief Checks whether the specified DCMIPP interrupt is enabled or not. * @param __HANDLE__ DCMIPP handle * @param __INTERRUPT__ specifies the DCMIPP interrupt sources to be checked. * This parameter can be any combination of the following values: * @arg DCMIPP_CSI_IT_SYNCERR Synchronization error interrupt * @arg DCMIPP_CSI_IT_WDERR Watchdog error interrupt * @arg DCMIPP_CSI_IT_SPKTERR Shorter packet than expected error interrupt * @arg DCMIPP_CSI_IT_IDERR Data ID information error interrupt * @arg DCMIPP_CSI_IT_CECCERR Corrected ECC error interrupt * @arg DCMIPP_CSI_IT_ECCERR ECC Error interrupt * @arg DCMIPP_CSI_IT_CRCERR CRC Error interrupt * @arg DCMIPP_CSI_IT_CCFIFO Clock changer FIFO full event interrupt * @arg DCMIPP_CSI_IT_SPKT Short packet detection interrupt * @arg DCMIPP_CSI_IT_EOF3 EOF on virtual channel 3 interrupt * @arg DCMIPP_CSI_IT_EOF2 EOF on virtual channel 2 interrupt * @arg DCMIPP_CSI_IT_EOF1 EOF on virtual channel 1 interrupt * @arg DCMIPP_CSI_IT_EOF0 EOF on virtual channel 0 interrupt * @arg DCMIPP_CSI_IT_SOF3 SOF on virtual channel 3 interrupt * @arg DCMIPP_CSI_IT_SOF2 SOF on virtual channel 2 interrupt * @arg DCMIPP_CSI_IT_SOF1 SOF on virtual channel 1 interrupt * @arg DCMIPP_CSI_IT_SOF0 SOF on virtual channel 0 interrupt * @arg DCMIPP_CSI_IT_TIM3 Timer 3 counter value reached interrupt * @arg DCMIPP_CSI_IT_TIM2 Timer 2 counter value reached interrupt * @arg DCMIPP_CSI_IT_TIM1 Timer 1 counter value reached interrupt * @arg DCMIPP_CSI_IT_TIM0 Timer 0 counter value reached interrupt * @arg DCMIPP_CSI_IT_LB3 Line/byte event 3 reached interrupt * @arg DCMIPP_CSI_IT_LB2 Line/byte event 2 reached interrupt * @arg DCMIPP_CSI_IT_LB1 Line/byte event 1 reached interrupt * @arg DCMIPP_CSI_IT_LB0 Line/byte event 0 reached interrupt * @retval The state of DCMIPP interrupt (SET or RESET). */ #define __HAL_DCMIPP_CSI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->IER0 & (__INTERRUPT__)) == \ (__INTERRUPT__)) ? SET : RESET) /** * @brief Enable the specified DCMIPP CSI DPHY interrupts. * @param __HANDLE__ CSI handle * @param __INTERRUPT__ specifies the DCMIPP CSI interrupt sources to be enabled. * This parameter can be any combination of the following values: * @arg DCMIPP_CSI_IT_ECTRLDL1 Error control on data line 1 interrupt * @arg DCMIPP_CSI_IT_ESYNCESCDL1 Low-power data transmission synchronization error on data line 1 interrupt * @arg DCMIPP_CSI_IT_EESCDL1 Escape entry error on data line 1 interrupt * @arg DCMIPP_CSI_IT_ESOTSYNCDL1 SOT synchronization error on data line 1 interrupt * @arg DCMIPP_CSI_IT_ESOTDL1 SOT error on data line 1 interrupt * @arg DCMIPP_CSI_IT_ECTRLDL0 Error control on data line 0 interrupt * @arg DCMIPP_CSI_IT_ESYNCESCDL0 Low-power data transmission synchronization error on data line 0 interrupt * @arg DCMIPP_CSI_IT_EESCDL0 Escape entry error on data line 0 interrupt * @arg DCMIPP_CSI_IT_ESOTSYNCDL0 SOT synchronization error on data line 0 interrupt * @arg DCMIPP_CSI_IT_ESOTDL0 SOT error on data line 0 interrupt * @retval None */ #define __HAL_DCMIPP_CSI_DPHY_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->IER1 |= (__INTERRUPT__)) /** * @brief Disable the specified DCMIPP CSI DPHY interrupts. * @param __HANDLE__ CSI handle * @param __INTERRUPT__ specifies the DCMIPP CSI interrupt sources to be enabled. * This parameter can be any combination of the following values: * @arg DCMIPP_CSI_IT_ECTRLDL1 Error control on data line 1 interrupt * @arg DCMIPP_CSI_IT_ESYNCESCDL1 Low-power data transmission synchronization error on data line 1 interrupt * @arg DCMIPP_CSI_IT_EESCDL1 Escape entry error on data line 1 interrupt * @arg DCMIPP_CSI_IT_ESOTSYNCDL1 SOT synchronization error on data line 1 interrupt * @arg DCMIPP_CSI_IT_ESOTDL1 SOT error on data line 1 interrupt * @arg DCMIPP_CSI_IT_ECTRLDL0 Error control on data line 0 interrupt * @arg DCMIPP_CSI_IT_ESYNCESCDL0 Low-power data transmission synchronization error on data line 0 interrupt * @arg DCMIPP_CSI_IT_EESCDL0 Escape entry error on data line 0 interrupt * @arg DCMIPP_CSI_IT_ESOTSYNCDL0 SOT synchronization error on data line 0 interrupt * @arg DCMIPP_CSI_IT_ESOTDL0 SOT error on data line 0 interrupt * @retval None */ #define __HAL_DCMIPP_CSI_DPHY_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->IER1 &= ~(__INTERRUPT__)) /** * @brief Get the DCMIPP CSI DPHY pending interrupt flags. * @param __HANDLE__ CSI handle * @param __FLAG__ Get the specified flag. * This parameter can be any combination of the following values: * @arg DCMIPP_CSI_FLAG_ECTRLDL1 Error control on data line 1 flag * @arg DCMIPP_CSI_FLAG_ESYNCESCDL1 Low-power data transmission synchronization error on data line 1 flag * @arg DCMIPP_CSI_FLAG_EESCDL1 Escape entry error on data line 1 flag * @arg DCMIPP_CSI_FLAG_ESOTSYNCDL1 SOT synchronization error on data line 1 flag * @arg DCMIPP_CSI_FLAG_ESOTDL1 SOT error on data line 1 flag * @arg DCMIPP_CSI_FLAG_ECTRLDL0 Error control on data line 0 flag * @arg DCMIPP_CSI_FLAG_ESYNCESCDL0 Low-power data transmission synchronization error on data line 0 flag * @arg DCMIPP_CSI_FLAG_EESCDL0 Escape entry error on data line 0 flag * @arg DCMIPP_CSI_FLAG_ESOTSYNCDL0 SOT synchronization error on data line 0 flag * @arg DCMIPP_CSI_FLAG_ESOTDL0 SOT error on data line 0 flag * @retval None */ #define __HAL_DCMIPP_CSI_GET_DPHY_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->IER1 & (__FLAG__)) /** * @brief Clear the DCMIPP CSI DPHY pending interrupt flags. * @param __HANDLE__ CSI handle * @param __FLAG__ specifies the flag to clear. * This parameter can be any combination of the following values: * @arg DCMIPP_CSI_FLAG_ECTRLDL1 Error control on data line 1 flag * @arg DCMIPP_CSI_FLAG_ESYNCESCDL1 Low-power data transmission synchronization error on data line 1 flag * @arg DCMIPP_CSI_FLAG_EESCDL1 Escape entry error on data line 1 flag * @arg DCMIPP_CSI_FLAG_ESOTSYNCDL1 SOT synchronization error on data line 1 flag * @arg DCMIPP_CSI_FLAG_ESOTDL1 SOT error on data line 1 flag * @arg DCMIPP_CSI_FLAG_ECTRLDL0 Error control on data line 0 flag * @arg DCMIPP_CSI_FLAG_ESYNCESCDL0 Low-power data transmission synchronization error on data line 0 flag * @arg DCMIPP_CSI_FLAG_EESCDL0 Escape entry error on data line 0 flag * @arg DCMIPP_CSI_FLAG_ESOTSYNCDL0 SOT synchronization error on data line 0 flag * @arg DCMIPP_CSI_FLAG_ESOTDL0 SOT error on data line 0 flag * @retval None */ #define __HAL_DCMIPP_CSI_CLEAR_DPHY_FLAG(__HANDLE__, __FLAG__)((__HANDLE__)->FCR1 = (__FLAG__)) /** * @brief Checks whether the specified DCMIPP CSI DPHY interrupt is enabled or not. * @param __HANDLE__ CSI handle * @param __INTERRUPT__ specifies the DCMIPP CSI D-PHY interrupt sources to be checked. * This parameter can be any combination of the following values: * @arg DCMIPP_CSI_IT_ECTRLDL1 Error control on data line 1 interrupt * @arg DCMIPP_CSI_IT_ESYNCESCDL1 Low-power data transmission synchronization error on data line 1 interrupt * @arg DCMIPP_CSI_IT_EESCDL1 Escape entry error on data line 1 interrupt * @arg DCMIPP_CSI_IT_ESOTSYNCDL1 SOT synchronization error on data line 1 interrupt * @arg DCMIPP_CSI_IT_ESOTDL1 SOT error on data line 1 interrupt * @arg DCMIPP_CSI_IT_ECTRLDL0 Error control on data line 0 interrupt * @arg DCMIPP_CSI_IT_ESYNCESCDL0 Low-power data transmission synchronization error on data line 0 interrupt * @arg DCMIPP_CSI_IT_EESCDL0 Escape entry error on data line 0 interrupt * @arg DCMIPP_CSI_IT_ESOTSYNCDL0 SOT synchronization error on data line 0 interrupt * @arg DCMIPP_CSI_IT_ESOTDL0 SOT error on data line 0 interrupt * @retval None */ #define __HAL_DCMIPP_CSI_GET_DPHY_IT_SOURCE(__HANDLE__, __INTERRUPT__)((((__HANDLE__)->IER1 & (__INTERRUPT__)) == \ (__INTERRUPT__)) ? SET : RESET) /** * @} */ /* Exported functions --------------------------------------------------------*/ /** @addtogroup DCMIPP_Exported_Functions * @{ */ /** @addtogroup DCMIPP_Initialization_De-Initialization_Functions DCMIPP Initialization De-Initialization Functions * @brief Initialization and De-Initialization Functions * @{ */ HAL_StatusTypeDef HAL_DCMIPP_Init(DCMIPP_HandleTypeDef *hdcmipp); HAL_StatusTypeDef HAL_DCMIPP_DeInit(DCMIPP_HandleTypeDef *hdcmipp); void HAL_DCMIPP_MspInit(DCMIPP_HandleTypeDef *hdcmipp); void HAL_DCMIPP_MspDeInit(DCMIPP_HandleTypeDef *hdcmipp); /** * @} */ /** @defgroup DCMIPP_Configuration_Functions DCMIPP Configuration Functions * @brief Configuration Functions * @{ */ HAL_StatusTypeDef HAL_DCMIPP_PARALLEL_SetConfig(DCMIPP_HandleTypeDef *hdcmipp, const DCMIPP_ParallelConfTypeDef *pParallelConfig); HAL_StatusTypeDef HAL_DCMIPP_CSI_PIPE_SetConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, const DCMIPP_CSI_PIPE_ConfTypeDef *pCSI_PipeConfig); HAL_StatusTypeDef HAL_DCMIPP_CSI_SetConfig(const DCMIPP_HandleTypeDef *hdcmipp, const DCMIPP_CSI_ConfTypeDef *pCSI_Config); HAL_StatusTypeDef HAL_DCMIPP_CSI_SetVCFilteringConfig(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t VirtualChannel, const DCMIPP_CSI_VCFilteringConfTypeDef *pVCFilteringConfig); HAL_StatusTypeDef HAL_DCMIPP_CSI_SetVCConfig(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t VirtualChannel, uint32_t DataTypeFormat); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, const DCMIPP_PipeConfTypeDef *pPipeConfig); HAL_StatusTypeDef HAL_DCMIPP_SetIPPlugConfig(DCMIPP_HandleTypeDef *hdcmipp, const DCMIPP_IPPlugConfTypeDef *pIPPlugConfig); /** * @} */ /** @addtogroup DCMIPP_IO_operation_Functions DCMIPP IO operation Functions * @brief IO Operation Functions * @{ */ HAL_StatusTypeDef HAL_DCMIPP_PIPE_Start(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t DstAddress, uint32_t CaptureMode); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DoubleBufferStart(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t DstAddress0, uint32_t DstAddress1, uint32_t CaptureMode); HAL_StatusTypeDef HAL_DCMIPP_CSI_PIPE_Start(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t VirtualChannel, uint32_t DstAddress, uint32_t CaptureMode); HAL_StatusTypeDef HAL_DCMIPP_CSI_PIPE_DoubleBufferStart(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t VirtualChannel, uint32_t DstAddress0, uint32_t DstAddress1, uint32_t CaptureMode); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SemiPlanarStart(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, DCMIPP_SemiPlanarDstAddressTypeDef *pSemiPlanarDstAddress, uint32_t CaptureMode); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SemiPlanarDoubleBufferStart(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, DCMIPP_SemiPlanarDstAddressTypeDef *pSemiPlanarDstAddress0, DCMIPP_SemiPlanarDstAddressTypeDef *pSemiPlanarDstAddress1, uint32_t CaptureMode); HAL_StatusTypeDef HAL_DCMIPP_PIPE_FullPlanarStart(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, DCMIPP_FullPlanarDstAddressTypeDef *pFullPlanarDstAddress, uint32_t CaptureMode); HAL_StatusTypeDef HAL_DCMIPP_PIPE_FullPlanarDoubleBufferStart(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, DCMIPP_FullPlanarDstAddressTypeDef *pFullPlanarDstAddress0, DCMIPP_FullPlanarDstAddressTypeDef *pFullPlanarDstAddress1, uint32_t CaptureMode); HAL_StatusTypeDef HAL_DCMIPP_CSI_PIPE_SemiPlanarStart(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t VirtualChannel, DCMIPP_SemiPlanarDstAddressTypeDef *pSemiPlanarDstAddress, uint32_t CaptureMode); HAL_StatusTypeDef HAL_DCMIPP_CSI_PIPE_SemiPlanarDoubleBufferStart(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t VirtualChannel, DCMIPP_SemiPlanarDstAddressTypeDef *pSemiPlanarDstAddress0, DCMIPP_SemiPlanarDstAddressTypeDef *pSemiPlanarDstAddress1, uint32_t CaptureMode); HAL_StatusTypeDef HAL_DCMIPP_CSI_PIPE_FullPlanarStart(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t VirtualChannel, DCMIPP_FullPlanarDstAddressTypeDef *pFullPlanarDstAddress, uint32_t CaptureMode); HAL_StatusTypeDef HAL_DCMIPP_CSI_PIPE_FullPlanarDoubleBufferStart(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t VirtualChannel, DCMIPP_FullPlanarDstAddressTypeDef *pFullPlanarDstAddress0, DCMIPP_FullPlanarDstAddressTypeDef *pFullPlanarDstAddress1, uint32_t CaptureMode); HAL_StatusTypeDef HAL_DCMIPP_PIPE_Stop(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_CSI_PIPE_Stop(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t VirtualChannel); HAL_StatusTypeDef HAL_DCMIPP_PIPE_Suspend(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_Resume(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); /** * @} */ /** @addtogroup DCMIPP_IRQ_and_Callbacks_Functions DCMIPP IRQ and Callbacks Functions * @brief IRQ and Callbacks functions * @{ */ /** @addtogroup DCMIPP_IRQHandler_Function IRQHandler Function * @{ */ void HAL_DCMIPP_IRQHandler(DCMIPP_HandleTypeDef *hdcmipp); void HAL_DCMIPP_CSI_IRQHandler(DCMIPP_HandleTypeDef *hdcmipp); /** * @} */ /** @addtogroup DCMIPP_Callback_Functions Callback Functions * @{ */ void HAL_DCMIPP_PIPE_FrameEventCallback(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); void HAL_DCMIPP_PIPE_VsyncEventCallback(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); void HAL_DCMIPP_PIPE_LineEventCallback(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); void HAL_DCMIPP_PIPE_LimitEventCallback(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); void HAL_DCMIPP_PIPE_ErrorCallback(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); void HAL_DCMIPP_ErrorCallback(DCMIPP_HandleTypeDef *hdcmipp); /** * @} */ /** @addtogroup DCMIPP_CSI_Callback_Functions CSI Callback Functions * @{ */ void HAL_DCMIPP_CSI_StartOfFrameEventCallback(DCMIPP_HandleTypeDef *hdcmipp, uint32_t VirtualChannel); void HAL_DCMIPP_CSI_EndOfFrameEventCallback(DCMIPP_HandleTypeDef *hdcmipp, uint32_t VirtualChannel); void HAL_DCMIPP_CSI_TimerCounterEventCallback(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Timer); void HAL_DCMIPP_CSI_LineByteEventCallback(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Counter); void HAL_DCMIPP_CSI_LineErrorCallback(DCMIPP_HandleTypeDef *hdcmipp, uint32_t DataLane); void HAL_DCMIPP_CSI_ClockChangerFifoFullEventCallback(DCMIPP_HandleTypeDef *hdcmipp); void HAL_DCMIPP_CSI_ShortPacketDetectionEventCallback(DCMIPP_HandleTypeDef *hdcmipp); /** * @} */ /** @addtogroup DCMIPP_RegisterCallback_Functions Register Callback Functions * @{ */ /* Callbacks Register/UnRegister functions ***********************************/ #if (USE_HAL_DCMIPP_REGISTER_CALLBACKS == 1) HAL_StatusTypeDef HAL_DCMIPP_RegisterCallback(DCMIPP_HandleTypeDef *hdcmipp, HAL_DCMIPP_CallbackIDTypeDef CallbackID, pDCMIPP_CallbackTypeDef pCallback); HAL_StatusTypeDef HAL_DCMIPP_UnRegisterCallback(DCMIPP_HandleTypeDef *hdcmipp, HAL_DCMIPP_CallbackIDTypeDef CallbackID); HAL_StatusTypeDef HAL_DCMIPP_PIPE_RegisterCallback(DCMIPP_HandleTypeDef *hdcmipp, HAL_DCMIPP_PIPE_CallbackIDTypeDef CallbackID, pDCMIPP_PIPE_CallbackTypeDef pCallback); HAL_StatusTypeDef HAL_DCMIPP_PIPE_UnRegisterCallback(DCMIPP_HandleTypeDef *hdcmipp, HAL_DCMIPP_PIPE_CallbackIDTypeDef CallbackID); #endif /* USE_HAL_DCMIPP_REGISTER_CALLBACKS */ /** * @} */ /** * @} */ /** @defgroup DCMIPP_Decimation_Functions DCMIPP Decimation Functions * @{ */ HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetBytesDecimationConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t SelectStart, uint32_t SelectMode); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetLinesDecimationConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t SelectStart, uint32_t SelectMode); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetISPDecimationConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, const DCMIPP_DecimationConfTypeDef *pDecConfig); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableISPDecimation(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableISPDecimation(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetDecimationConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, const DCMIPP_DecimationConfTypeDef *pDecConfig); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableDecimation(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableDecimation(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); /** * @} */ /** @defgroup DCMIPP_Crop_Functions DCMIPP Crop Functions * @{ */ HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetCropConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, const DCMIPP_CropConfTypeDef *pCropConfig); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableCrop(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableCrop(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); /** * @} */ /** @defgroup DCMIPP_Line_Event_Functions DCMIPP Line Event Functions * @{ */ HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableLineEvent(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t Line); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableLineEvent(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); /** * @} */ /** @defgroup DCMIPP_LimitEvent_Functions DCMIPP Limit Event Functions * @{ */ HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableLimitEvent(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t Limit); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableLimitEvent(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); /** * @} */ HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetISPStatisticExtractionConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint8_t ModuleID, const DCMIPP_StatisticExtractionConfTypeDef *pStatisticExtractionConfig); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetISPAreaStatisticExtractionConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, const DCMIPP_StatisticExtractionAreaConfTypeDef *pStatisticExtractionAreaConfig); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableISPStatisticExtraction(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint8_t ModuleID); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableISPStatisticExtraction(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint8_t ModuleID); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableISPAreaStatisticExtraction(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableISPAreaStatisticExtraction(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetDownsizeConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, const DCMIPP_DownsizeTypeDef *pDownsizeConfig); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableDownsize(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableDownsize(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetISPBlackLevelCalibrationConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, const DCMIPP_BlackLevelConfTypeDef *pBlackLevelConfig); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableISPBlackLevelCalibration(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableISPBlackLevelCalibration(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableGammaConversion(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableGammaConversion(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); uint32_t HAL_DCMIPP_PIPE_IsEnabledGammaConversion(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetISPBadPixelRemovalConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t Strength); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableISPBadPixelRemoval(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableISPBadPixelRemoval(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetISPCtrlContrastConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, const DCMIPP_ContrastConfTypeDef *pContrastConfig); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableISPCtrlContrast(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableISPCtrlContrast(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetRegionOfInterestConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, const DCMIPP_RegionOfInterestConfTypeDef *pROIConfig); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableRegionOfInterest(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t Region); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableRegionOfInterest(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t Region); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetLineWrappingConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t AddressWrap); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableLineWrapping(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableLineWrapping(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetISPExposureConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, const DCMIPP_ExposureConfTypeDef *pExposureConfig); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableISPExposure(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableISPExposure(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetISPRemovalStatisticConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t NbFirstLines, uint32_t NbLastLines); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableISPRemovalStatistic(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableISPRemovalStatistic(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetISPRawBayer2RGBConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, const DCMIPP_RawBayer2RGBConfTypeDef *pRawBayer2RGBConfig); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableISPRawBayer2RGB(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableISPRawBayer2RGB(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetYUVConversionConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, const DCMIPP_ColorConversionConfTypeDef *pColorConversionConfig); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableYUVConversion(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableYUVConversion(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetISPColorConversionConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, const DCMIPP_ColorConversionConfTypeDef *pColorConversionConfig); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableISPColorConversion(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableISPColorConversion(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); void HAL_DCMIPP_PIPE_GetISPDecimationConfig(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, DCMIPP_DecimationConfTypeDef *pDecConfig); void HAL_DCMIPP_PIPE_GetISPBlackLevelCalibrationConfig(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, DCMIPP_BlackLevelConfTypeDef *pBlackLevelConfig); uint32_t HAL_DCMIPP_PIPE_GetISPBadPixelRemovalConfig(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); void HAL_DCMIPP_PIPE_GetISPStatisticExtractionConfig(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint8_t ModuleID, DCMIPP_StatisticExtractionConfTypeDef *pStatisticExtractionConfig); void HAL_DCMIPP_PIPE_GetISPAreaStatisticExtractionConfig(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, DCMIPP_StatisticExtractionAreaConfTypeDef *pStatisticExtractionAreaConfig); void HAL_DCMIPP_PIPE_GetISPCtrlContrastConfig(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, DCMIPP_ContrastConfTypeDef *pContrastConfig); void HAL_DCMIPP_PIPE_GetISPExposureConfig(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, DCMIPP_ExposureConfTypeDef *pExposureConfig); void HAL_DCMIPP_PIPE_GetISPRawBayer2RGBConfig(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, DCMIPP_RawBayer2RGBConfTypeDef *pRawBayer2RGBConfig); void HAL_DCMIPP_PIPE_GetISPColorConversionConfig(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, DCMIPP_ColorConversionConfTypeDef *pColorConversionConfig); void HAL_DCMIPP_PIPE_GetISPRemovalStatisticConfig(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t *NbFirstLines, uint32_t *NbLastLines); uint32_t HAL_DCMIPP_PIPE_IsEnabledISPRemovalStatistic(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); uint32_t HAL_DCMIPP_PIPE_IsEnabledISPBadPixelRemoval(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); uint32_t HAL_DCMIPP_PIPE_IsEnabledISPDecimation(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); uint32_t HAL_DCMIPP_PIPE_IsEnabledISPBlackLevelCalibration(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); uint32_t HAL_DCMIPP_PIPE_IsEnabledISPExposure(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); uint32_t HAL_DCMIPP_PIPE_IsEnabledISPRawBayer2RGB(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); uint32_t HAL_DCMIPP_PIPE_IsEnabledISPColorConversion(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); uint32_t HAL_DCMIPP_PIPE_IsEnabledISPCtrlContrast(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); uint32_t HAL_DCMIPP_PIPE_IsEnabledISPStatisticExtraction(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint8_t ModuleID); uint32_t HAL_DCMIPP_PIPE_IsEnabledISPAreaStatisticExtraction(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); /** @defgroup DCMIPP_PeripheralControl_Functions DCMIPP Peripheral Control Functions * @{ */ HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetFrameRate(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t FrameRate); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetCaptureMode(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t CaptureMode); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableCapture(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetMemoryAddress(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t Memory, uint32_t DstAddress); HAL_StatusTypeDef HAL_DCMIPP_PIPE_PARALLEL_SetInputPixelFormat(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t InputPixelFormat); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetPitch(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t LinePitch); HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetPixelPackerFormat(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t PixelPackerFormat); HAL_StatusTypeDef HAL_DCMIPP_PIPE_CSI_EnableShare(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_CSI_DisableShare(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_CSI_ForceDataTypeFormat(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t DataTypeFormat); HAL_StatusTypeDef HAL_DCMIPP_PIPE_CSI_SetDTMode(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t DataTypeMode); HAL_StatusTypeDef HAL_DCMIPP_PIPE_CSI_SetDTSelection(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t DataTypeID, uint32_t DataType); HAL_StatusTypeDef HAL_DCMIPP_PIPE_CSI_EnableHeader(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_CSI_DisableHeader(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PARALLEL_SetSyncUnmask(DCMIPP_HandleTypeDef *hdcmipp, const DCMIPP_EmbeddedSyncUnmaskTypeDef *SyncUnmask); HAL_StatusTypeDef HAL_DCMIPP_CSI_SetLineByteCounterConfig(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Counter, const DCMIPP_CSI_LineByteCounterConfTypeDef *pLineByteConfig); HAL_StatusTypeDef HAL_DCMIPP_CSI_EnableLineByteCounter(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Counter); HAL_StatusTypeDef HAL_DCMIPP_CSI_DisableLineByteCounter(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Counter); HAL_StatusTypeDef HAL_DCMIPP_CSI_SetTimerConfig(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Timer, const DCMIPP_CSI_TimerConfTypeDef *TimerConfig); HAL_StatusTypeDef HAL_DCMIPP_CSI_EnableTimer(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Timer); HAL_StatusTypeDef HAL_DCMIPP_CSI_DisableTimer(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Timer); HAL_StatusTypeDef HAL_DCMIPP_CSI_SetWatchdogCounterConfig(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Counter); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableComponentsSwap(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableComponentsSwap(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableRedBlueSwap(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableRedBlueSwap(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_DisableYUVSwap(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_EnableYUVSwap(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); /** * @} */ /** @defgroup DCMIPP_Frame_Counter_Functions DCMIPP Frame Counter Functions * @{ */ HAL_StatusTypeDef HAL_DCMIPP_PIPE_SetFrameCounterConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_ResetFrameCounter(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); HAL_StatusTypeDef HAL_DCMIPP_PIPE_ReadFrameCounter(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t *pCounter); /** * @} */ /** @defgroup DCMIPP_Data_Counter_Functions DCMIPP Data Counter Functions * @{ */ HAL_StatusTypeDef HAL_DCMIPP_PIPE_GetDataCounter(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t *pCounter); /** * @} */ HAL_StatusTypeDef HAL_DCMIPP_PIPE_GetISPRemovedBadPixelCounter(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t *pCounter); HAL_StatusTypeDef HAL_DCMIPP_PIPE_GetISPAccumulatedStatisticsCounter(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint8_t ModuleID, uint32_t *pCounter); uint32_t HAL_DCMIPP_GetMode(const DCMIPP_HandleTypeDef *hdcmipp); uint32_t HAL_DCMIPP_PIPE_GetMemoryAddress(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t MemoryAddress); /** @addtogroup DCMIPP_State_and_Error_Functions DCMIPP State and Error Functions * @{ */ HAL_DCMIPP_StateTypeDef HAL_DCMIPP_GetState(const DCMIPP_HandleTypeDef *hdcmipp); HAL_DCMIPP_PipeStateTypeDef HAL_DCMIPP_PIPE_GetState(const DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe); uint32_t HAL_DCMIPP_GetError(const DCMIPP_HandleTypeDef *hdcmipp); /** * @} */ /** * @} */ /* Private macros ------------------------------------------------------------*/ /** @defgroup DCMIPP_Private_Macros DCMIPP Private Macros * @{ */ #define IS_DCMIPP_PIPE(PIPE) (((PIPE) == DCMIPP_PIPE0) || \ ((PIPE) == DCMIPP_PIPE1) || \ ((PIPE) == DCMIPP_PIPE2)) #define IS_DCMIPP_FORMAT(FORMAT) (((FORMAT) == DCMIPP_FORMAT_BYTE) ||\ ((FORMAT) == DCMIPP_FORMAT_YUV422) ||\ ((FORMAT) == DCMIPP_FORMAT_RGB565) ||\ ((FORMAT) == DCMIPP_FORMAT_RGB666) ||\ ((FORMAT) == DCMIPP_FORMAT_RGB888) ||\ ((FORMAT) == DCMIPP_FORMAT_RAW8 ) ||\ ((FORMAT) == DCMIPP_FORMAT_RAW10 ) ||\ ((FORMAT) == DCMIPP_FORMAT_RAW12 ) ||\ ((FORMAT) == DCMIPP_FORMAT_RAW14 ) ||\ ((FORMAT) == DCMIPP_FORMAT_MONOCHROME_8B) ||\ ((FORMAT) == DCMIPP_FORMAT_MONOCHROME_10B) ||\ ((FORMAT) == DCMIPP_FORMAT_MONOCHROME_12B) ||\ ((FORMAT) == DCMIPP_FORMAT_MONOCHROME_14B)) #define IS_DCMIPP_PIXEL_PACKER_FORMAT(FORMAT) (((FORMAT) == DCMIPP_PIXEL_PACKER_FORMAT_RGB888_YUV444_1) ||\ ((FORMAT) == DCMIPP_PIXEL_PACKER_FORMAT_RGB565_1) ||\ ((FORMAT) == DCMIPP_PIXEL_PACKER_FORMAT_ARGB8888) ||\ ((FORMAT) == DCMIPP_PIXEL_PACKER_FORMAT_RGBA888) ||\ ((FORMAT) == DCMIPP_PIXEL_PACKER_FORMAT_MONO_Y8_G8_1) ||\ ((FORMAT) == DCMIPP_PIXEL_PACKER_FORMAT_YUV444_1) ||\ ((FORMAT) == DCMIPP_PIXEL_PACKER_FORMAT_YUV422_1) ||\ ((FORMAT) == DCMIPP_PIXEL_PACKER_FORMAT_YUV422_2) ||\ ((FORMAT) == DCMIPP_PIXEL_PACKER_FORMAT_YUV420_2) ||\ ((FORMAT) == DCMIPP_PIXEL_PACKER_FORMAT_YUV420_3)) #define IS_DCMIPP_PIXEL_PIPE_PITCH(PITCH) ((((PITCH) & 0xFU) == 0U) && ((PITCH) <= 0x7FFFU)) #define IS_DCMIPP_PCKPOLARITY(POLARITY)(((POLARITY) == DCMIPP_PCKPOLARITY_FALLING) || \ ((POLARITY) == DCMIPP_PCKPOLARITY_RISING)) #define IS_DCMIPP_VSPOLARITY(POLARITY)(((POLARITY) == DCMIPP_VSPOLARITY_LOW) || \ ((POLARITY) == DCMIPP_VSPOLARITY_HIGH)) #define IS_DCMIPP_HSPOLARITY(POLARITY)(((POLARITY) == DCMIPP_HSPOLARITY_LOW) || \ ((POLARITY) == DCMIPP_HSPOLARITY_HIGH)) #define IS_DCMIPP_EXTENDED_DATA_MODE(INTERFACE)(((INTERFACE) == DCMIPP_INTERFACE_8BITS ) ||\ ((INTERFACE) == DCMIPP_INTERFACE_10BITS) ||\ ((INTERFACE) == DCMIPP_INTERFACE_12BITS) ||\ ((INTERFACE) == DCMIPP_INTERFACE_14BITS) ||\ ((INTERFACE) == DCMIPP_INTERFACE_16BITS)) #define IS_DCMIPP_SYNC_MODE(SYNC_MODE) (((SYNC_MODE) == DCMIPP_SYNCHRO_HARDWARE) ||\ ((SYNC_MODE) == DCMIPP_SYNCHRO_EMBEDDED)) #define IS_DCMIPP_SWAP_BITS(SWAP_BITS) (((SWAP_BITS) == DCMIPP_SWAPBITS_ENABLE) ||\ ((SWAP_BITS) == DCMIPP_SWAPBITS_DISABLE)) #define IS_DCMIPP_SWAP_CYCLES(SWAP_CYCLES) (((SWAP_CYCLES) == DCMIPP_SWAPCYCLES_ENABLE) ||\ ((SWAP_CYCLES) == DCMIPP_SWAPCYCLES_DISABLE)) #define IS_DCMIPP_VCID(VCID) (((VCID) == DCMIPP_VIRTUAL_CHANNEL0) ||\ ((VCID) == DCMIPP_VIRTUAL_CHANNEL1) ||\ ((VCID) == DCMIPP_VIRTUAL_CHANNEL2) ||\ ((VCID) == DCMIPP_VIRTUAL_CHANNEL3)) #define IS_DCMIPP_DATA_TYPE_MODE(DATA_TYPE_MODE) (((DATA_TYPE_MODE) == DCMIPP_DTMODE_DTIDA) ||\ ((DATA_TYPE_MODE) == DCMIPP_DTMODE_DTIDA_OR_DTIDB) ||\ ((DATA_TYPE_MODE) == DCMIPP_DTMODE_ALL_EXCEPT_DTIA_DTIB) ||\ ((DATA_TYPE_MODE) == DCMIPP_DTMODE_ALL)) #define IS_DCMIPP_DATA_TYPE(DATA_TYPE) (((DATA_TYPE) == DCMIPP_DT_RGB565) ||\ ((DATA_TYPE) == DCMIPP_DT_RGB444) ||\ ((DATA_TYPE) == DCMIPP_DT_RGB555) ||\ ((DATA_TYPE) == DCMIPP_DT_RGB666) ||\ ((DATA_TYPE) == DCMIPP_DT_RGB888) ||\ ((DATA_TYPE) == DCMIPP_DT_YUV420_8) ||\ ((DATA_TYPE) == DCMIPP_DT_YUV420_10) ||\ ((DATA_TYPE) == DCMIPP_DT_YUV422_8) ||\ ((DATA_TYPE) == DCMIPP_DT_YUV422_10) ||\ ((DATA_TYPE) == DCMIPP_DT_RAW8) ||\ ((DATA_TYPE) == DCMIPP_DT_RAW10) ||\ ((DATA_TYPE) == DCMIPP_DT_RAW12) ||\ ((DATA_TYPE) == DCMIPP_DT_RAW14)) #define IS_DCMIPP_NUMBER_OF_LANES(DATA_LANE_NB) (((DATA_LANE_NB) == DCMIPP_CSI_ONE_DATA_LANE) ||\ ((DATA_LANE_NB) == DCMIPP_CSI_TWO_DATA_LANES)) #define IS_DCMIPP_CSI_DATA_LANE_MAPPING(DATA_LANE_MAP) (((DATA_LANE_MAP) == DCMIPP_CSI_PHYSICAL_DATA_LANES) ||\ ((DATA_LANE_MAP) == DCMIPP_CSI_INVERTED_DATA_LANES)) #define IS_DCMIPP_CSI_DATA_PHY_BITRATE(PHY_BITRATE) ((PHY_BITRATE) <= DCMIPP_CSI_PHY_BT_2500) #define IS_DCMIPP_CSI_DATA_TYPE_NB(DATA_TYPE_NB) ((DATA_TYPE_NB) <= MAX_DATATYPE_NB) #define IS_DCMIPP_CSI_DATA_TYPE_FORMAT(DATA_TYPE_FORMAT) (((DATA_TYPE_FORMAT) == DCMIPP_CSI_DT_BPP6) ||\ ((DATA_TYPE_FORMAT) == DCMIPP_CSI_DT_BPP7) ||\ ((DATA_TYPE_FORMAT) == DCMIPP_CSI_DT_BPP8) ||\ ((DATA_TYPE_FORMAT) == DCMIPP_CSI_DT_BPP10) ||\ ((DATA_TYPE_FORMAT) == DCMIPP_CSI_DT_BPP12) ||\ ((DATA_TYPE_FORMAT) == DCMIPP_CSI_DT_BPP14) ||\ ((DATA_TYPE_FORMAT) == DCMIPP_CSI_DT_BPP16)) #define IS_DCMIPP_CSI_DATA_CLASS(DATA_TYPE_CLASS)((DATA_TYPE_CLASS) <= 0x3FU) #define IS_DCMIPP_CSI_COUNTER(COUNTER) (((COUNTER) == DCMIPP_CSI_COUNTER0) ||\ ((COUNTER) == DCMIPP_CSI_COUNTER1) ||\ ((COUNTER) == DCMIPP_CSI_COUNTER2) ||\ ((COUNTER) == DCMIPP_CSI_COUNTER3)) #define IS_DCMIPP_CSI_LINE_COUNTER(LINE_COUNTER)((LINE_COUNTER) <= 0xFFFFU) #define IS_DCMIPP_CSI_BYTE_COUNTER(BYTE_COUNTER)((BYTE_COUNTER) <= 0xFFFFU) #define IS_DCMIPP_CSI_TIMER(TIMER) (((TIMER) == DCMIPP_CSI_TIMER0) ||\ ((TIMER) == DCMIPP_CSI_TIMER1) ||\ ((TIMER) == DCMIPP_CSI_TIMER2) ||\ ((TIMER) == DCMIPP_CSI_TIMER3)) #define IS_DCMIPP_CSI_TIMER_START(TIMER_START) (((TIMER_START) == DCMIPP_CSI_TIMER_START_SOF)||\ ((TIMER_START) == DCMIPP_CSI_TIMER_START_EOF)) #define IS_DCMIPP_FRAME_RATE(FRAME_RATE) (((FRAME_RATE) == DCMIPP_FRAME_RATE_ALL) ||\ ((FRAME_RATE) == DCMIPP_FRAME_RATE_1_OVER_2) ||\ ((FRAME_RATE) == DCMIPP_FRAME_RATE_1_OVER_4) ||\ ((FRAME_RATE) == DCMIPP_FRAME_RATE_1_OVER_8)) #define IS_DCMIPP_CLIENT(CLIENT) (((CLIENT) == DCMIPP_CLIENT1) ||\ ((CLIENT) == DCMIPP_CLIENT2) ||\ ((CLIENT) == DCMIPP_CLIENT3) ||\ ((CLIENT) == DCMIPP_CLIENT4) ||\ ((CLIENT) == DCMIPP_CLIENT5)) #define IS_DCMIPP_DPREG_END(DPREG_END) ((DPREG_END) <= 0x3FFU) #define IS_DCMIPP_DPREG_START(DPREG_START) ((DPREG_START) <= 0x3FFU) #define IS_DCMIPP_MAX_OUTSTANDING_TRANSACTIONS(OUTS_TRANS) (((OUTS_TRANS) == DCMIPP_OUTSTANDING_TRANSACTION_NONE )||\ ((OUTS_TRANS) == DCMIPP_OUTSTANDING_TRANSACTION_2 )||\ ((OUTS_TRANS) == DCMIPP_OUTSTANDING_TRANSACTION_3 )||\ ((OUTS_TRANS) == DCMIPP_OUTSTANDING_TRANSACTION_4 )||\ ((OUTS_TRANS) == DCMIPP_OUTSTANDING_TRANSACTION_5 )||\ ((OUTS_TRANS) == DCMIPP_OUTSTANDING_TRANSACTION_6 )||\ ((OUTS_TRANS) == DCMIPP_OUTSTANDING_TRANSACTION_7 )||\ ((OUTS_TRANS) == DCMIPP_OUTSTANDING_TRANSACTION_8 )||\ ((OUTS_TRANS) == DCMIPP_OUTSTANDING_TRANSACTION_9 )||\ ((OUTS_TRANS) == DCMIPP_OUTSTANDING_TRANSACTION_10 )||\ ((OUTS_TRANS) == DCMIPP_OUTSTANDING_TRANSACTION_11 )||\ ((OUTS_TRANS) == DCMIPP_OUTSTANDING_TRANSACTION_12 )||\ ((OUTS_TRANS) == DCMIPP_OUTSTANDING_TRANSACTION_13 )||\ ((OUTS_TRANS) == DCMIPP_OUTSTANDING_TRANSACTION_14 )||\ ((OUTS_TRANS) == DCMIPP_OUTSTANDING_TRANSACTION_15 )||\ ((OUTS_TRANS) == DCMIPP_OUTSTANDING_TRANSACTION_16 )) #define IS_DCMIPP_MEMORY_PAGE_SIZE(MEMORY_PAGE_SIZE) (((MEMORY_PAGE_SIZE) == DCMIPP_MEMORY_PAGE_SIZE_64BYTES) ||\ ((MEMORY_PAGE_SIZE) == DCMIPP_MEMORY_PAGE_SIZE_128BYTES) ||\ ((MEMORY_PAGE_SIZE) == DCMIPP_MEMORY_PAGE_SIZE_256BYTES) ||\ ((MEMORY_PAGE_SIZE) == DCMIPP_MEMORY_PAGE_SIZE_512BYTES) ||\ ((MEMORY_PAGE_SIZE) == DCMIPP_MEMORY_PAGE_SIZE_1KBYTES) ||\ ((MEMORY_PAGE_SIZE) == DCMIPP_MEMORY_PAGE_SIZE_2KBYTES) ||\ ((MEMORY_PAGE_SIZE) == DCMIPP_MEMORY_PAGE_SIZE_4KBYTES) ||\ ((MEMORY_PAGE_SIZE) == DCMIPP_MEMORY_PAGE_SIZE_8KBYTES)) #define IS_DCMIPP_TRAFFIC(TRAFFIC) (((TRAFFIC) == DCMIPP_TRAFFIC_BURST_SIZE_8BYTES ) ||\ ((TRAFFIC) == DCMIPP_TRAFFIC_BURST_SIZE_16BYTES) ||\ ((TRAFFIC) == DCMIPP_TRAFFIC_BURST_SIZE_32BYTES) ||\ ((TRAFFIC) == DCMIPP_TRAFFIC_BURST_SIZE_64BYTES) ||\ ((TRAFFIC) == DCMIPP_TRAFFIC_BURST_SIZE_128BYTES)) #define IS_DCMIPP_WLRU_RATIO(WLRU_RATIO) ((WLRU_RATIO)<= 0xFU) #define IS_DCMIPP_CAPTURE_MODE(CAPTURE_MODE) (((CAPTURE_MODE) == DCMIPP_MODE_CONTINUOUS)||\ ((CAPTURE_MODE) == DCMIPP_MODE_SNAPSHOT)) #define IS_DCMIPP_PIPE_CROP_AREA(CROP_AREA)(((CROP_AREA) == DCMIPP_POSITIVE_AREA) ||\ ((CROP_AREA) == DCMIPP_NEGATIVE_AREA)) #define IS_DCMIPP_PIPE_CROP_HSIZE(CROP_HSIZE) (((CROP_HSIZE) >= 0x1U) && ((CROP_HSIZE) <= 0xFFFU)) #define IS_DCMIPP_PIPE_CROP_VSIZE(CROP_VSIZE) (((CROP_VSIZE) >= 0x1U) && ((CROP_VSIZE) <= 0xFFFU)) #define IS_DCMIPP_PIPE_CROP_VSTART(CROP_VSTART) ((CROP_VSTART) <= 0xFFFU) #define IS_DCMIPP_PIPE_CROP_HSTART(CROP_HSTART) ((CROP_HSTART) <= 0xFFFU) #define IS_DCMIPP_BYTE_SELECT_MODE(BYTE_SELECT) (((BYTE_SELECT) == DCMIPP_BSM_ALL) ||\ ((BYTE_SELECT) == DCMIPP_BSM_DATA_OUT_2) ||\ ((BYTE_SELECT) == DCMIPP_BSM_BYTE_OUT_4) ||\ ((BYTE_SELECT) == DCMIPP_BSM_2BYTE_OUT_4)) #define IS_DCMIPP_BYTE_SELECT_START(BYTE_START)(((BYTE_START) == DCMIPP_OEBS_ODD) ||\ ((BYTE_START) == DCMIPP_OEBS_EVEN)) #define IS_DCMIPP_LINE_SELECT_MODE(LINE_SELECT) (((LINE_SELECT) == DCMIPP_LSM_ALL) ||\ ((LINE_SELECT) == DCMIPP_LSM_ALTERNATE_2)) #define IS_DCMIPP_LINE_SELECT_START(LINE__START)(((LINE__START) == DCMIPP_OELS_ODD) ||\ ((LINE__START) == DCMIPP_OELS_EVEN)) #define IS_DCMIPP_MEMORY_ADDRESS(MEMORY_ADDRESS) (((MEMORY_ADDRESS) == DCMIPP_MEMORY_ADDRESS_0) ||\ ((MEMORY_ADDRESS) == DCMIPP_MEMORY_ADDRESS_1)) #define IS_DCMIPP_DATA_LIMIT(DATA_LIMIT) (((DATA_LIMIT) >=1U ) && ((DATA_LIMIT) <= 0xFFFFFFU)) #define IS_DCMIPP_PIPE_MULTILINE(MULTILINE) (((MULTILINE) == DCMIPP_MULTILINE_1_LINE ) ||\ ((MULTILINE) == DCMIPP_MULTILINE_2_LINES) ||\ ((MULTILINE) == DCMIPP_MULTILINE_4_LINES) ||\ ((MULTILINE) == DCMIPP_MULTILINE_8_LINES) ||\ ((MULTILINE) == DCMIPP_MULTILINE_16_LINES) ||\ ((MULTILINE) == DCMIPP_MULTILINE_32_LINES) ||\ ((MULTILINE) == DCMIPP_MULTILINE_64_LINES) ||\ ((MULTILINE) == DCMIPP_MULTILINE_128_LINES)) #define IS_DCMIPP_VRATIO(VRATIO) (((VRATIO) == DCMIPP_VDEC_ALL) ||\ ((VRATIO) == DCMIPP_VDEC_1_OUT_2) ||\ ((VRATIO) == DCMIPP_VDEC_1_OUT_4) ||\ ((VRATIO) == DCMIPP_VDEC_1_OUT_8)) #define IS_DCMIPP_HRATIO(HRATIO) (((HRATIO) == DCMIPP_HDEC_ALL) ||\ ((HRATIO) == DCMIPP_HDEC_1_OUT_2) ||\ ((HRATIO) == DCMIPP_HDEC_1_OUT_4) ||\ ((HRATIO) == DCMIPP_HDEC_1_OUT_8)) #define IS_DCMIPP_DOWSIZE_DIV_FACTOR(DIV_FACTOR) (((DIV_FACTOR)>=0x80U) && ((DIV_FACTOR)<= 0x3FFU)) #define IS_DCMIPP_DOWSIZE_RATIO(RATIO) ((RATIO)<= 0xFFFFU) #define IS_DCMIPP_DOWSIZE_SIZE(SIZE) ((SIZE) <= 0xFFFU) #define IS_DCMIPP_RAWBAYER2RGB_RAW_TYPE(RAW_TYPE) (((RAW_TYPE) == DCMIPP_RAWBAYER_RGGB) ||\ ((RAW_TYPE) == DCMIPP_RAWBAYER_GRBG) ||\ ((RAW_TYPE) == DCMIPP_RAWBAYER_GBRG) ||\ ((RAW_TYPE) == DCMIPP_RAWBAYER_BGGR)) #define IS_DCMIPP_RAWBAYER2RGB_STRENGTH(STRENGTH) (((STRENGTH) == DCMIPP_RAWBAYER_ALGO_NONE) ||\ ((STRENGTH) == DCMIPP_RAWBAYER_ALGO_STRENGTH_3) ||\ ((STRENGTH) == DCMIPP_RAWBAYER_ALGO_STRENGTH_4) ||\ ((STRENGTH) == DCMIPP_RAWBAYER_ALGO_STRENGTH_6) ||\ ((STRENGTH) == DCMIPP_RAWBAYER_ALGO_STRENGTH_8) ||\ ((STRENGTH) == DCMIPP_RAWBAYER_ALGO_STRENGTH_12)||\ ((STRENGTH) == DCMIPP_RAWBAYER_ALGO_STRENGTH_16)||\ ((STRENGTH) == DCMIPP_RAWBAYER_ALGO_STRENGTH_24)) #define IS_DCMIPP_NB_FIRST_LINES(NB_FIRST_LINES) ((NB_FIRST_LINES) <= 7U) #define IS_DCMIPP_NB_LAST_LINES(NB_LAST_LINES) ((NB_LAST_LINES) <= 0xFFFU) #define IS_DCMIPP_BAD_PXL_REMOVAL_STRENGTH(STRENGTH) (((STRENGTH) == DCMIPP_BAD_PXL_REM_SRENGTH_0) ||\ ((STRENGTH) == DCMIPP_BAD_PXL_REM_SRENGTH_1) ||\ ((STRENGTH) == DCMIPP_BAD_PXL_REM_SRENGTH_2) ||\ ((STRENGTH) == DCMIPP_BAD_PXL_REM_SRENGTH_3) ||\ ((STRENGTH) == DCMIPP_BAD_PXL_REM_SRENGTH_4) ||\ ((STRENGTH) == DCMIPP_BAD_PXL_REM_SRENGTH_5) ||\ ((STRENGTH) == DCMIPP_BAD_PXL_REM_SRENGTH_6) ||\ ((STRENGTH) == DCMIPP_BAD_PXL_REM_SRENGTH_7)) #define IS_DCMIPP_ROI_COLOR(COLOR) ((COLOR) <= 3U) #define IS_DCMIPP_ROI_SIZE(SIZE) ((SIZE) <= 3U) #define IS_DCMIPP_ROI_START(START) ((START) <= 3U) #define IS_DCMIPP_ROI_LINE_WIDTH(LINE_WIDTH) ((LINE_WIDTH) <= DCMIPP_LINE_WIDTH_8PXL) #define IS_DCMIPP_ROI(REGION_OF_INTEREST) ((REGION_OF_INTEREST) <= DCMIPP_REGION_OF_INTEREST8) #define IS_DCMIPP_ADDRESS_WRAP(ADDRESS_WRAP) (((ADDRESS_WRAP) == DCMIPP_WRAP_ADDRESS_1_LINE) ||\ ((ADDRESS_WRAP) == DCMIPP_WRAP_ADDRESS_2_LINES) ||\ ((ADDRESS_WRAP) == DCMIPP_WRAP_ADDRESS_4_LINES) ||\ ((ADDRESS_WRAP) == DCMIPP_WRAP_ADDRESS_8_LINES) ||\ ((ADDRESS_WRAP) == DCMIPP_WRAP_ADDRESS_16_LINES) ||\ ((ADDRESS_WRAP) == DCMIPP_WRAP_ADDRESS_32_LINES) ||\ ((ADDRESS_WRAP) == DCMIPP_WRAP_ADDRESS_64_LINES) ||\ ((ADDRESS_WRAP) == DCMIPP_WRAP_ADDRESS_128_LINES)) #define IS_DCMIPP_OUTPUT_SAMPLES_TYPES(OUTPUT_SAMPLES_TYPES) (((OUTPUT_SAMPLES_TYPES) == DCMIPP_CLAMP_YUV) ||\ ((OUTPUT_SAMPLES_TYPES) == DCMIPP_CLAMP_RGB)) #define IS_DCMIPP_COLOR_CONVERSION_COEF(COLOR_CONV_CONF) ((COLOR_CONV_CONF) <= 0x7FF) #define IS_DCMIPP_STAT_EXTRACTION_MODULE(MODULE) (((MODULE) == DCMIPP_STATEXT_MODULE1)||\ ((MODULE) == DCMIPP_STATEXT_MODULE2)||\ ((MODULE) == DCMIPP_STATEXT_MODULE3)) #define IS_DCMIPP_LUMINANCE(LUMINANCE) ((LUMINANCE) <= 0x3FU) #define IS_DCMIPP_EXPOSURE_SHF(CHIFT) ((CHIFT) <= 0x7U) #define IS_DCMIPP_STAT_EXTRACTION_BINS(BINS) (((BINS) == DCMIPP_STAT_EXT_BINS_MODE_LOWER_BINS) ||\ ((BINS) == DCMIPP_STAT_EXT_BINS_MODE_LOWMID_BINS) ||\ ((BINS) == DCMIPP_STAT_EXT_BINS_MODE_UPMID_BINS ) ||\ ((BINS) == DCMIPP_STAT_EXT_BINS_MODE_UP_BINS ) ||\ ((BINS) == DCMIPP_STAT_EXT_AVER_MODE_ALL_PIXELS ) ||\ ((BINS) == DCMIPP_STAT_EXT_AVER_MODE_NOEXT16 ) ||\ ((BINS) == DCMIPP_STAT_EXT_AVER_MODE_NOEXT32 ) ||\ ((BINS) == DCMIPP_STAT_EXT_AVER_MODE_NOEXT64 )) #define IS_DCMIPP_STAT_EXTRACTION_SOURCE(SOURCE) (((SOURCE) == DCMIPP_STAT_EXT_SOURCE_PRE_BLKLVL_R) ||\ ((SOURCE) == DCMIPP_STAT_EXT_SOURCE_PRE_BLKLVL_G) ||\ ((SOURCE) == DCMIPP_STAT_EXT_SOURCE_PRE_BLKLVL_B) ||\ ((SOURCE) == DCMIPP_STAT_EXT_SOURCE_PRE_BLKLVL_L) ||\ ((SOURCE) == DCMIPP_STAT_EXT_SOURCE_POST_DEMOS_R) ||\ ((SOURCE) == DCMIPP_STAT_EXT_SOURCE_POST_DEMOS_G) ||\ ((SOURCE) == DCMIPP_STAT_EXT_SOURCE_POST_DEMOS_B) ||\ ((SOURCE) == DCMIPP_STAT_EXT_SOURCE_POST_DEMOS_L)) #define IS_DCMIPP_STAT_EXTRACTION_MODE(MODE) (((MODE) == DCMIPP_STAT_EXT_MODE_AVERAGE) ||\ ((MODE) == DCMIPP_STAT_EXT_MODE_BINS)) #define IS_DCMIPP_PIPE_STAT_EXTRACTION_START(START) ((START) <= 0xFFFU) #define IS_DCMIPP_PIPE_STAT_EXTRACTION_SIZE(SIZE) ((SIZE) <= 0xFFFU) /** * @} */ /** * @} */ #endif /* DCMIPP */ /** * @} */ #ifdef __cplusplus } #endif #endif /* __STM32N6xx_HAL_DCMIPP_H */