1 /**************************************************************************//** 2 * @file ccap.h 3 * @version V1.00 4 * @brief M480 Series CCAP Driver Header File 5 * 6 * SPDX-License-Identifier: Apache-2.0 7 * @copyright (C) 2016-2020 Nuvoton Technology Corp. All rights reserved. 8 ******************************************************************************/ 9 #ifndef __CCAP_H__ 10 #define __CCAP_H__ 11 12 #ifdef __cplusplus 13 extern "C" 14 { 15 #endif 16 17 /** @addtogroup Standard_Driver Standard Driver 18 @{ 19 */ 20 21 /** @addtogroup CCAP_Driver CCAP Driver 22 @{ 23 */ 24 25 /** @addtogroup CCAP_EXPORTED_CONSTANTS CCAP Exported Constants 26 @{ 27 */ 28 29 /*---------------------------------------------------------------------------------------------------------*/ 30 /* CTL constant definitions */ 31 /*---------------------------------------------------------------------------------------------------------*/ 32 #define CCAP_CTL_CCAPEN (1ul<<CCAP_CTL_CCAPEN_Pos) /*!< CCAP CTL setting for enabling capture engine mode \hideinitializer */ 33 #define CCAP_CTL_ADDRSW (1ul<<CCAP_CTL_ADDRSW_Pos) /*!< CCAP CTL setting for packet buffer address switch \hideinitializer */ 34 #define CCAP_CTL_PKTEN (1ul<<CCAP_CTL_PKTEN_Pos) /*!< CCAP CTL setting for enabling packet output mode \hideinitializer */ 35 #define CCAP_CTL_PLNEN (1ul<<CCAP_CTL_PLNEN_Pos) /*!< CCAP CTL setting for enabling planar output mode \hideinitializer */ 36 #define CCAP_CTL_SHUTTER (1ul<<CCAP_CTL_SHUTTER_Pos) /*!< CCAP CTL setting for enabling shutter mode \hideinitializer */ 37 #define CCAP_CTL_UPDATE (1ul<<CCAP_CTL_UPDATE_Pos) /*!< CCAP CTL setting for enabling update register at new frame \hideinitializer */ 38 #define CCAP_CTL_RESET (1ul<<CCAP_CTL_VPRST_Pos) /*!< CCAP CTL setting for capture reset \hideinitializer */ 39 #define CCAP_CTL_MY8_MY4 (0ul<<CCAP_CTL_MY8_MY4_Pos) /*!< CCAP CTL setting for 4-bit data I/O interface with Mono \hideinitializer */ 40 #define CCAP_CTL_MY8_MY8 (1ul<<CCAP_CTL_MY8_MY4_Pos) /*!< CCAP CTL setting for 8-bit data I/O interface with Mono \hideinitializer */ 41 42 /*---------------------------------------------------------------------------------------------------------*/ 43 /* PAR constant definitions */ 44 /*---------------------------------------------------------------------------------------------------------*/ 45 #define CCAP_PAR_INFMT_YUV422 (0ul<<CCAP_PAR_INFMT_Pos) /*!< CCAP PAR setting for Sensor Input Data YUV422 Format \hideinitializer */ 46 #define CCAP_PAR_INFMT_RGB565 (1ul<<CCAP_PAR_INFMT_Pos) /*!< CCAP PAR setting for Sensor Input Data RGB565 Format \hideinitializer */ 47 48 #define CCAP_PAR_SENTYPE_CCIR601 (0ul<<CCAP_PAR_SENTYPE_Pos) /*!< CCAP PAR setting for Sensor Input CCIR601 Type \hideinitializer */ 49 #define CCAP_PAR_SENTYPE_CCIR656 (1ul<<CCAP_PAR_SENTYPE_Pos) /*!< CCAP PAR setting for Sensor Input CCIR656 Type \hideinitializer */ 50 51 #define CCAP_PAR_INDATORD_YUYV (0x0ul<<CCAP_PAR_INDATORD_Pos) /*!< CCAP PAR setting for Sensor Input Data Order, YUYV \hideinitializer */ 52 #define CCAP_PAR_INDATORD_YVYU (0x1ul<<CCAP_PAR_INDATORD_Pos) /*!< CCAP PAR setting for Sensor Input Data Order, YVYU \hideinitializer */ 53 #define CCAP_PAR_INDATORD_UYVY (0x2ul<<CCAP_PAR_INDATORD_Pos) /*!< CCAP PAR setting for Sensor Input Data Order, UYVY \hideinitializer */ 54 #define CCAP_PAR_INDATORD_VYUY (0x3ul<<CCAP_PAR_INDATORD_Pos) /*!< CCAP PAR setting for Sensor Input Data Order, VYUY \hideinitializer */ 55 56 #define CCAP_PAR_INDATORD_RGGB (0x0ul<<CCAP_PAR_INDATORD_Pos) /*!< CCAP PAR setting for Sensor Input Data Order, 0byte: R[0:4] G[5:8], 1byte G[0:2] R[3:8] \hideinitializer */ 57 #define CCAP_PAR_INDATORD_BGGR (0x1ul<<CCAP_PAR_INDATORD_Pos) /*!< CCAP PAR setting for Sensor Input Data Order, 0byte: b[0:4] G[5:8], 1byte G[0:2] R[3:8] \hideinitializer */ 58 #define CCAP_PAR_INDATORD_GBRG (0x2ul<<CCAP_PAR_INDATORD_Pos) /*!< CCAP PAR setting for Sensor Input Data Order, 0byte: G[0:3] G[4:8], 1byte G[0:4] G[5:8] \hideinitializer */ 59 #define CCAP_PAR_INDATORD_GRBG (0x3ul<<CCAP_PAR_INDATORD_Pos) /*!< CCAP PAR setting for Sensor Input Data Order, 0byte: G[0:3] G[4:8], 1byte G[0:4] G[5:8] \hideinitializer */ 60 61 #define CCAP_PAR_OUTFMT_YUV422 (0x0ul<<CCAP_PAR_OUTFMT_Pos) /*!< CCAP PAR setting for Image Data YUV422 Format Output to System Memory \hideinitializer */ 62 #define CCAP_PAR_OUTFMT_ONLY_Y (0x1ul<<CCAP_PAR_OUTFMT_Pos) /*!< CCAP PAR setting for Image Data ONLY_Y Format Output to System Memory \hideinitializer */ 63 #define CCAP_PAR_OUTFMT_RGB555 (0x2ul<<CCAP_PAR_OUTFMT_Pos) /*!< CCAP PAR setting for Image Data RGB555 Format Output to System Memory \hideinitializer */ 64 #define CCAP_PAR_OUTFMT_RGB565 (0x3ul<<CCAP_PAR_OUTFMT_Pos) /*!< CCAP PAR setting for Image Data RGB565 Format Output to System Memory \hideinitializer */ 65 66 #define CCAP_PAR_PLNFMT_YUV422 (0x0ul<<CCAP_PAR_PLNFMT_Pos) /*!< CCAP PAR setting for Planar Output YUV422 Format \hideinitializer */ 67 #define CCAP_PAR_PLNFMT_YUV420 (0x1ul<<CCAP_PAR_PLNFMT_Pos) /*!< CCAP PAR setting for Planar Output YUV420 Format \hideinitializer */ 68 69 #define CCAP_PAR_VSP_LOW (0x0ul<<CCAP_PAR_VSP_Pos) /*!< CCAP PAR setting for Sensor Vsync Polarity \hideinitializer */ 70 #define CCAP_PAR_VSP_HIGH (0x1ul<<CCAP_PAR_VSP_Pos) /*!< CCAP PAR setting for Sensor Vsync Polarity \hideinitializer */ 71 #define CCAP_PAR_HSP_LOW (0x0ul<<CCAP_PAR_HSP_Pos) /*!< CCAP PAR setting for Sensor Hsync Polarity \hideinitializer */ 72 #define CCAP_PAR_HSP_HIGH (0x1ul<<CCAP_PAR_HSP_Pos) /*!< CCAP PAR setting for Sensor Hsync Polarity \hideinitializer */ 73 #define CCAP_PAR_PCLKP_LOW (0x0ul<<CCAP_PAR_PCLKP_Pos) /*!< CCAP PAR setting for Sensor Pixel Clock Polarity \hideinitializer */ 74 #define CCAP_PAR_PCLKP_HIGH (0x1ul<<CCAP_PAR_PCLKP_Pos) /*!< CCAP PAR setting for Sensor Pixel Clock Polarity \hideinitializer */ 75 76 /*---------------------------------------------------------------------------------------------------------*/ 77 /* INT constant definitions */ 78 /*---------------------------------------------------------------------------------------------------------*/ 79 #define CCAP_INT_VIEN_ENABLE (0x1ul<<CCAP_INT_VIEN_Pos) /*!< VININT setting for Frame End Interrupt enable \hideinitializer */ 80 #define CCAP_INT_MEIEN_ENABLE (0x1ul<<CCAP_INT_MEIEN_Pos) /*!< VININT setting for Bus Master Transfer Error Interrupt enable \hideinitializer */ 81 #define CCAP_INT_ADDRMIEN_ENABLE (0x1ul<<CCAP_INT_ADDRMIEN_Pos) /*!< VININT setting for Memory Address Match Interrupt enable \hideinitializer */ 82 #define CCAP_INT_MDIEN_ENABLE (0x1ul<<CCAP_INT_MDIEN_Pos) /*!< VININT setting for Motion Detection Output Finish Interrupt Enable enable \hideinitializer */ 83 84 85 /*---------------------------------------------------------------------------------------------------------*/ 86 /* Define Error Code */ 87 /*---------------------------------------------------------------------------------------------------------*/ 88 #define CCAP_INVALID_INT ((int32_t)(0xFFFFFFFF-1)) 89 #define CCAP_INVALID_BUF ((int32_t)(0xFFFFFFFF-2)) 90 #define CCAP_INVALID_PIPE ((int32_t)(0xFFFFFFFF-3)) 91 92 93 /*@}*/ /* end of group NUC472_442_CCAP_EXPORTED_CONSTANTS */ 94 95 96 97 /** @addtogroup CCAP_EXPORTED_FUNCTIONS CCAP Exported Functions 98 @{ 99 */ 100 101 /** 102 * @brief Is CCAP module Enable 103 * 104 * @return FALSE(Enable) or TRUE(Disable) 105 * 106 * @details Check Camera Capture Interface module Enable or Disable 107 * \hideinitializer 108 */ 109 #define CCAP_IS_STOPPED() ((CCAP->CTL & CCAP_CTL_CCAPEN_Msk)?0:1) 110 111 /** 112 * @brief Clear CCAP flag 113 * 114 * @param[in] u32IntMask interrupt flags settings. It could be 115 * - \ref CCAP_INT_VINTF_Msk 116 * - \ref CCAP_INT_MEINTF_Msk 117 * - \ref CCAP_INT_ADDRMINTF_Msk 118 * - \ref CCAP_INT_MDINTF_Msk 119 * 120 * @return TRUE(Enable) or FALSE(Disable) 121 * 122 * @details Clear Image Capture Interface interrupt flag 123 * \hideinitializer 124 */ 125 #define CCAP_CLR_INT_FLAG(u32IntMask) (CCAP->INT |=u32IntMask) 126 127 /** 128 * @brief Get CCAP Interrupt status 129 * 130 * @return TRUE(Enable) or FALSE(Disable) 131 * 132 * @details Get Image Capture Interface interrupt status. 133 * \hideinitializer 134 */ 135 #define CCAP_GET_INT_STS() (CCAP->INT) 136 137 void CCAP_Open(uint32_t u32InFormat, uint32_t u32OutFormet); 138 void CCAP_SetCroppingWindow(uint32_t u32VStart,uint32_t u32HStart, uint32_t u32Height, uint32_t u32Width); 139 void CCAP_SetPacketBuf(uint32_t u32Address ); 140 void CCAP_Close(void); 141 void CCAP_EnableInt(uint32_t u32IntMask); 142 void CCAP_DisableInt(uint32_t u32IntMask); 143 void CCAP_Start(void); 144 void CCAP_Stop(uint32_t u32FrameComplete); 145 void CCAP_SetPacketScaling(uint32_t u32VNumerator, uint32_t u32VDenominator, uint32_t u32HNumerator, uint32_t u32HDenominator); 146 void CCAP_SetPacketStride(uint32_t u32Stride ); 147 void CCAP_EnableMono(uint32_t u32Interface); 148 void CCAP_DisableMono(void); 149 void CCAP_EnableLumaYOne(uint32_t u32th); 150 void CCAP_DisableLumaYOne(void); 151 152 /*@}*/ /* end of group CCAP_EXPORTED_FUNCTIONS */ 153 154 155 156 /*@}*/ /* end of group CCAP_Driver */ 157 158 /*@}*/ /* end of group Standard_Driver */ 159 160 #ifdef __cplusplus 161 } 162 #endif 163 164 #endif //__CCAP_H__ 165 166 /*** (C) COPYRIGHT 2016 Nuvoton Technology Corp. ***/ 167