cap.h 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. /**************************************************************************//**
  2. * @file cap.h
  3. * @version V0.10
  4. * $Revision: 17 $
  5. * $Date: 15/10/22 10:00a $
  6. * @brief NUC470 series Image Capture Driver Header File
  7. *
  8. * @note
  9. * Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved.
  10. *
  11. ******************************************************************************/
  12. #ifndef __CAP_H__
  13. #define __CAP_H__
  14. #ifdef __cplusplus
  15. extern "C"
  16. {
  17. #endif
  18. /** @addtogroup NUC472_442_Device_Driver NUC472/NUC442 Device Driver
  19. @{
  20. */
  21. /** @addtogroup NUC472_442_CAP_Driver CAP Driver
  22. @{
  23. */
  24. /** @addtogroup NUC472_442_CAP_EXPORTED_CONSTANTS CAP Exported Constants
  25. @{
  26. */
  27. /*---------------------------------------------------------------------------------------------------------*/
  28. /* VINCTRL constant definitions */
  29. /*---------------------------------------------------------------------------------------------------------*/
  30. #define CAP_CTL_CAPEN (1ul<<CAP_CTL_CAPEN_Pos) /*!< CAP CTL setting for enabling capture engine mode \hideinitializer */
  31. #define CAP_CTL_ADDRSW (1ul<<CAP_CTL_ADDRSW_Pos) /*!< CAP CTL setting for packet buffer address switch \hideinitializer */
  32. #define CAP_CTL_PKTEN (1ul<<CAP_CTL_PKTEN_Pos) /*!< CAP CTL setting for enabling packet output mode \hideinitializer */
  33. #define CAP_CTL_PLNEN (1ul<<CAP_CTL_PLNEN_Pos) /*!< CAP CTL setting for enabling planar output mode \hideinitializer */
  34. #define CAP_CTL_SHUTTER (1ul<<CAP_CTL_SHUTTER_Pos) /*!< CAP CTL setting for enabling shutter mode \hideinitializer */
  35. #define CAP_CTL_UPDATE (1ul<<CAP_CTL_UPDATE_Pos) /*!< CAP CTL setting for enabling update register at new frame \hideinitializer */
  36. #define CAP_CTL_RESET (1ul<<CAP_CTL_VPRST_Pos) /*!< CAP CTL setting for capture reset \hideinitializer */
  37. /*---------------------------------------------------------------------------------------------------------*/
  38. /* CAPPAR constant definitions */
  39. /*---------------------------------------------------------------------------------------------------------*/
  40. #define CAP_PAR_INFMT_YUV422 (0ul<<CAP_PAR_INFMT_Pos) /*!< CAP PAR setting for Sensor Input Data YUV422 Format \hideinitializer */
  41. #define CAP_PAR_INFMT_RGB565 (1ul<<CAP_PAR_INFMT_Pos) /*!< CAP PAR setting for Sensor Input Data RGB565 Format \hideinitializer */
  42. #define CAP_PAR_SENTYPE_CCIR601 (0ul<<CAP_PAR_SENTYPE_Pos) /*!< CAP PAR setting for Sensor Input CCIR601 Type \hideinitializer */
  43. #define CAP_PAR_SENTYPE_CCIR656 (1ul<<CAP_PAR_SENTYPE_Pos) /*!< CAP PAR setting for Sensor Input CCIR656 Type \hideinitializer */
  44. #define CAP_PAR_INDATORD_YUYV (0x0ul<<CAP_PAR_INDATORD_Pos) /*!< CAP PAR setting for Sensor Input Data Order, YUYV \hideinitializer */
  45. #define CAP_PAR_INDATORD_YVYU (0x1ul<<CAP_PAR_INDATORD_Pos) /*!< CAP PAR setting for Sensor Input Data Order, YVYU \hideinitializer */
  46. #define CAP_PAR_INDATORD_UYVY (0x2ul<<CAP_PAR_INDATORD_Pos) /*!< CAP PAR setting for Sensor Input Data Order, UYVY \hideinitializer */
  47. #define CAP_PAR_INDATORD_VYUY (0x3ul<<CAP_PAR_INDATORD_Pos) /*!< CAP PAR setting for Sensor Input Data Order, VYUY \hideinitializer */
  48. #define CAP_PAR_INDATORD_RGGB (0x0ul<<CAP_PAR_INDATORD_Pos) /*!< CAP PAR setting for Sensor Input Data Order, 0byte: R[0:4] G[5:8], 1byte G[0:2] R[3:8] \hideinitializer */
  49. #define CAP_PAR_INDATORD_BGGR (0x1ul<<CAP_PAR_INDATORD_Pos) /*!< CAP PAR setting for Sensor Input Data Order, 0byte: b[0:4] G[5:8], 1byte G[0:2] R[3:8] \hideinitializer */
  50. #define CAP_PAR_INDATORD_GBRG (0x2ul<<CAP_PAR_INDATORD_Pos) /*!< CAP PAR setting for Sensor Input Data Order, 0byte: G[0:3] G[4:8], 1byte G[0:4] G[5:8] \hideinitializer */
  51. #define CAP_PAR_INDATORD_GRBG (0x3ul<<CAP_PAR_INDATORD_Pos) /*!< CAP PAR setting for Sensor Input Data Order, 0byte: G[0:3] G[4:8], 1byte G[0:4] G[5:8] \hideinitializer */
  52. #define CAP_PAR_OUTFMT_YUV422 (0x0ul<<CAP_PAR_OUTFMT_Pos) /*!< CAP PAR setting for Image Data YUV422 Format Output to System Memory \hideinitializer */
  53. #define CAP_PAR_OUTFMT_ONLY_Y (0x1ul<<CAP_PAR_OUTFMT_Pos) /*!< CAP PAR setting for Image Data ONLY_Y Format Output to System Memory \hideinitializer */
  54. #define CAP_PAR_OUTFMT_RGB555 (0x2ul<<CAP_PAR_OUTFMT_Pos) /*!< CAP PAR setting for Image Data RGB555 Format Output to System Memory \hideinitializer */
  55. #define CAP_PAR_OUTFMT_RGB565 (0x3ul<<CAP_PAR_OUTFMT_Pos) /*!< CAP PAR setting for Image Data RGB565 Format Output to System Memory \hideinitializer */
  56. #define CAP_PAR_PLNFMT_YUV422 (0x0ul<<CAP_PAR_PLNFMT_Pos) /*!< CAP PAR setting for Planar Output YUV422 Format \hideinitializer */
  57. #define CAP_PAR_PLNFMT_YUV420 (0x1ul<<CAP_PAR_PLNFMT_Pos) /*!< CAP PAR setting for Planar Output YUV420 Format \hideinitializer */
  58. #define CAP_PAR_VSP_LOW (0x0ul<<CAP_PAR_VSP_Pos) /*!< CAP PAR setting for Sensor Vsync Polarity \hideinitializer */
  59. #define CAP_PAR_VSP_HIGH (0x1ul<<CAP_PAR_VSP_Pos) /*!< CAP PAR setting for Sensor Vsync Polarity \hideinitializer */
  60. #define CAP_PAR_HSP_LOW (0x0ul<<CAP_PAR_HSP_Pos) /*!< CAP PAR setting for Sensor Hsync Polarity \hideinitializer */
  61. #define CAP_PAR_HSP_HIGH (0x1ul<<CAP_PAR_HSP_Pos) /*!< CAP PAR setting for Sensor Hsync Polarity \hideinitializer */
  62. #define CAP_PAR_PCLKP_LOW (0x0ul<<CAP_PAR_PCLKP_Pos) /*!< CAP PAR setting for Sensor Pixel Clock Polarity \hideinitializer */
  63. #define CAP_PAR_PCLKP_HIGH (0x1ul<<CAP_PAR_PCLKP_Pos) /*!< CAP PAR setting for Sensor Pixel Clock Polarity \hideinitializer */
  64. /*---------------------------------------------------------------------------------------------------------*/
  65. /* VININT constant definitions */
  66. /*---------------------------------------------------------------------------------------------------------*/
  67. #define CAP_INT_VIEN_ENABLE (0x1ul<<CAP_INT_VIEN_Pos) /*!< VININT setting for Frame End Interrupt enable \hideinitializer */
  68. #define CAP_INT_MEIEN_ENABLE (0x1ul<<CAP_INT_MEIEN_Pos) /*!< VININT setting for Bus Master Transfer Error Interrupt enable \hideinitializer */
  69. #define CAP_INT_ADDRMIEN_ENABLE (0x1ul<<CAP_INT_ADDRMIEN_Pos) /*!< VININT setting for Memory Address Match Interrupt enable \hideinitializer */
  70. #define CAP_INT_MDIEN_ENABLE (0x1ul<<CAP_INT_MDIEN_Pos) /*!< VININT setting for Motion Detection Output Finish Interrupt Enable enable \hideinitializer */
  71. static uint32_t u32EscapeFrame = 0;
  72. /*---------------------------------------------------------------------------------------------------------*/
  73. /* Define Error Code */
  74. /*---------------------------------------------------------------------------------------------------------*/
  75. #define CAP_INVALID_INT ((int32_t)(0xFFFFFFFF-1))
  76. #define CAP_INVALID_BUF ((int32_t)(0xFFFFFFFF-2))
  77. #define CAP_INVALID_PIPE ((int32_t)(0xFFFFFFFF-3))
  78. /*@}*/ /* end of group NUC472_442_CAP_EXPORTED_CONSTANTS */
  79. /** @addtogroup NUC472_442_CAP_EXPORTED_FUNCTIONS CAP Exported Functions
  80. @{
  81. */
  82. /**
  83. * @brief Is CAP module Enable
  84. *
  85. * @return FALSE(Enable) or TRUE(Disable)
  86. *
  87. * @details Check Image Capture Interface module Enable or Disable
  88. * \hideinitializer
  89. */
  90. #define CAP_IS_STOPPED() ((ICAP->CTL & CAP_CTL_CAPEN_Msk)?0:1)
  91. /**
  92. * @brief Clear CAP flag
  93. *
  94. * @param[in] u32IntMask interrupt flags settings. It could be
  95. * - \ref CAP_INT_VINTF_Msk
  96. * - \ref CAP_INT_MEINTF_Msk
  97. * - \ref CAP_INT_ADDRMINTF_Msk
  98. * - \ref CAP_INT_MDINTF_Msk
  99. *
  100. * @return TRUE(Enable) or FALSE(Disable)
  101. *
  102. * @details Clear Image Capture Interface interrupt flag
  103. * \hideinitializer
  104. */
  105. #define CAP_CLR_INT_FLAG(u32IntMask) (ICAP->INT |=u32IntMask)
  106. /**
  107. * @brief Get CAP Interrupt status
  108. *
  109. * @return TRUE(Enable) or FALSE(Disable)
  110. *
  111. * @details Get Image Capture Interface interrupt status.
  112. * \hideinitializer
  113. */
  114. #define CAP_GET_INT_STS() (ICAP->INT)
  115. void CAP_Open(uint32_t u32InFormat, uint32_t u32OutFormet);
  116. void CAP_SetCroppingWindow(uint32_t u32VStart,uint32_t u32HStart, uint32_t u32Height, uint32_t u32Width);
  117. void CAP_SetPacketBuf(uint32_t u32Address );
  118. void CAP_SetPlanarBuf(uint32_t u32YAddr, uint32_t u32UAddr, uint32_t u32VAddr);
  119. void CAP_Close(void);
  120. void CAP_EnableInt(uint32_t u32IntMask);
  121. void CAP_DisableInt(uint32_t u32IntMask);
  122. void CAP_Start(void);
  123. void CAP_Stop(uint32_t u32FrameComplete);
  124. void CAP_SetPacketScaling(uint32_t u32VNumerator, uint32_t u32VDenominator, uint32_t u32HNumerator, uint32_t u32HDenominator);
  125. void CAP_SetPlanarScaling(uint32_t u32VNumerator, uint32_t u32VDenominator, uint32_t u32HNumerator, uint32_t u32HDenominator);
  126. void CAP_SetPacketStride(uint32_t u32Stride );
  127. void CAP_SetPlanarStride(uint32_t u32Stride );
  128. void CAP_EnableMotionDet(uint32_t u32Freq, uint32_t u32BlockSize, uint32_t u32Format, uint32_t u32Threshold, uint32_t u32YDetAddr, uint32_t u32DetAddr);
  129. void CAP_DisableMotionDet(void);
  130. /*@}*/ /* end of group NUC472_442_CAP_EXPORTED_FUNCTIONS */
  131. /*@}*/ /* end of group NUC472_442_CAP_Driver */
  132. /*@}*/ /* end of group NUC472_442_Device_Driver */
  133. #ifdef __cplusplus
  134. }
  135. #endif
  136. #endif //__CAP_H__
  137. /*** (C) COPYRIGHT 2013 Nuvoton Technology Corp. ***/