NUC472_NUC442_BSP V3.03.004
The Board Support Package for NUC472/NUC442
cap.c
Go to the documentation of this file.
1/**************************************************************************/
13#include "NUC472_442.h"
22int32_t g_CAP_i32ErrCode = 0;
63void CAP_Open(uint32_t u32InFormat, uint32_t u32OutFormet)
64{
65 ICAP->PAR = (ICAP->PAR & ~0x000007BF) | u32InFormat;
66 ICAP->CTL = (ICAP->CTL & ~0x00000060) | u32OutFormet;
67}
68
84void CAP_SetCroppingWindow(uint32_t u32VStart,uint32_t u32HStart, uint32_t u32Height, uint32_t u32Width)
85{
87 | (((u32VStart << 16) | u32HStart));
88
89 ICAP->CWS = (ICAP->CWS & ~(CAP_CWS_CWH_Msk | CAP_CWS_CWW_Msk))
90 | ((u32Height << 16)| u32Width);
91}
92
93
103void CAP_SetPacketBuf(uint32_t u32Address )
104{
105 ICAP->PKTBA0 = u32Address;
106 ICAP->CTL |= CAP_CTL_UPDATE_Msk;
107}
108
122void CAP_SetPlanarBuf(uint32_t u32YAddr, uint32_t u32UAddr, uint32_t u32VAddr)
123{
124 ICAP->YBA = u32YAddr;
125 ICAP->UBA = u32UAddr;
126 ICAP->VBA = u32VAddr;
127 ICAP->CTL |= CAP_CTL_UPDATE_Msk;
128}
129
130
136void CAP_Close(void)
137{
138 ICAP->CTL &= ~CAP_CTL_CAPEN;
139}
140
141
157void CAP_EnableInt(uint32_t u32IntMask)
158{
160 | u32IntMask;
161}
162
178void CAP_DisableInt(uint32_t u32IntMask)
179{
180 ICAP->INT = (ICAP->INT & ~(u32IntMask) ) ;
181}
182
188void CAP_Start(void)
189{
190 ICAP->CTL |= CAP_CTL_CAPEN;
191}
192
203void CAP_Stop(uint32_t u32FrameComplete)
204{
205 uint32_t u32Delay = SystemCoreClock * 2; /* 2 second */
206
207 if(u32FrameComplete==FALSE)
208 ICAP->CTL &= ~CAP_CTL_CAPEN;
209 else
210 {
212 while(!CAP_IS_STOPPED()){
213 u32Delay--;
214 if(u32Delay == 0){
216 break;
217 }
218 }
219 }
220}
221
236void CAP_SetPacketScaling(uint32_t u32VNumerator, uint32_t u32VDenominator, uint32_t u32HNumerator, uint32_t u32HDenominator)
237{
238 uint32_t u32NumeratorL, u32NumeratorH;
239 uint32_t u32DenominatorL, u32DenominatorH;
240
241 u32NumeratorL = u32VNumerator&0xFF;
242 u32NumeratorH=u32VNumerator>>8;
243 u32DenominatorL = u32VDenominator&0xFF;
244 u32DenominatorH = u32VDenominator>>8;
246 | ((u32NumeratorL << 24)| (u32DenominatorL << 16));
248 | ((u32NumeratorH << 24) | (u32DenominatorH << 16));
249
250 u32NumeratorL = u32HNumerator&0xFF;
251 u32NumeratorH=u32HNumerator>>8;
252 u32DenominatorL = u32HDenominator&0xFF;
253 u32DenominatorH = u32HDenominator>>8;
255 | ((u32NumeratorL << 8)| u32DenominatorL);
257 | ((u32NumeratorH << 8) | u32DenominatorH);
258}
259
274void CAP_SetPlanarScaling(uint32_t u32VNumerator, uint32_t u32VDenominator, uint32_t u32HNumerator, uint32_t u32HDenominator)
275{
276 uint32_t u32NumeratorL, u32NumeratorH;
277 uint32_t u32DenominatorL, u32DenominatorH;
278
279 u32NumeratorL = u32VNumerator&0xFF;
280 u32NumeratorH = u32VNumerator>>8;
281 u32DenominatorL = u32VDenominator&0xFF;
282 u32DenominatorH = u32VDenominator>>8;
284 | ((u32NumeratorL << 24)| (u32DenominatorL << 16));
286 | ((u32NumeratorH << 24)| (u32DenominatorH << 16));
287
288 u32NumeratorL = u32HNumerator&0xFF;
289 u32NumeratorH = u32HNumerator>>8;
290 u32DenominatorL = u32HDenominator&0xFF;
291 u32DenominatorH = u32HDenominator>>8;
293 | ((u32NumeratorL << 8)| u32DenominatorL);
295 | ((u32NumeratorH << 8)| u32DenominatorH);
296}
297
307void CAP_SetPacketStride(uint32_t u32Stride )
308{
309 ICAP->STRIDE = (ICAP->STRIDE & ~CAP_STRIDE_PKTSTRIDE_Msk) | u32Stride;
310}
311
321void CAP_SetPlanarStride(uint32_t u32Stride )
322{
323 ICAP->STRIDE = (ICAP->STRIDE & ~CAP_STRIDE_PLNSTRIDE_Msk) | u32Stride<<CAP_STRIDE_PLNSTRIDE_Pos;
324}
325
326
350void CAP_EnableMotionDet(uint32_t u32Freq, uint32_t u32BlockSize, uint32_t u32Format, uint32_t u32Threshold, uint32_t u32YDetAddr, uint32_t u32DetAddr)
351{
353 ((CAP_MD_MDEN_Msk | (u32BlockSize?CAP_MD_MDBS_Msk:0)) |
354 (u32Format?CAP_MD_MDSM_Msk:0));
355
356 ICAP->MD = (ICAP->MD & ~CAP_MD_MDDF_Msk) | (u32Freq<<CAP_MD_MDDF_Pos);
357 ICAP->MD = (ICAP->MD & ~CAP_MD_MDTHR_Msk) | (u32Threshold<<CAP_MD_MDTHR_Pos);
358
359 ICAP->MDYADDR = u32YDetAddr;
360 ICAP->MDADDR = u32DetAddr;
361}
362
371{
372 ICAP->MD &= ~CAP_MD_MDEN_Msk;
373}
374 /* end of group NUC472_442_CAP_EXPORTED_FUNCTIONS */
376 /* end of group NUC472_442_CAP_Driver */
378 /* end of group NUC472_442_Device_Driver */
380
381/*** (C) COPYRIGHT 2013 Nuvoton Technology Corp. ***/
NUC472/NUC442 peripheral access layer header file. This file contains all the peripheral register's d...
#define CAP_PKTSM_PKTSVMH_Msk
Definition: NUC472_442.h:2368
#define CAP_CWS_CWW_Msk
Definition: NUC472_442.h:2302
#define CAP_INT_MDIEN_Msk
Definition: NUC472_442.h:2257
#define CAP_CWSP_CWSADDRV_Msk
Definition: NUC472_442.h:2299
#define CAP_PKTSL_PKTSVNL_Msk
Definition: NUC472_442.h:2317
#define CAP_CTL_UPDATE_Msk
Definition: NUC472_442.h:2197
#define CAP_PLNSM_PLNSHMH_Msk
Definition: NUC472_442.h:2374
#define CAP_CWS_CWH_Msk
Definition: NUC472_442.h:2305
#define CAP_CWSP_CWSADDRH_Msk
Definition: NUC472_442.h:2296
#define CAP_INT_MEIEN_Msk
Definition: NUC472_442.h:2251
#define CAP_MD_MDEN_Msk
Definition: NUC472_442.h:2269
#define CAP_PLNSM_PLNSVMH_Msk
Definition: NUC472_442.h:2380
#define CAP_INT_VIEN_Msk
Definition: NUC472_442.h:2248
#define CAP_PKTSL_PKTSHML_Msk
Definition: NUC472_442.h:2308
#define CAP_MD_MDTHR_Pos
Definition: NUC472_442.h:2280
#define CAP_MD_MDSM_Msk
Definition: NUC472_442.h:2275
#define CAP_PLNSM_PLNSHNH_Msk
Definition: NUC472_442.h:2377
#define CAP_PLNSL_PLNSHNL_Msk
Definition: NUC472_442.h:2323
#define CAP_PLNSM_PLNSVNH_Msk
Definition: NUC472_442.h:2383
#define CAP_MD_MDDF_Pos
Definition: NUC472_442.h:2277
#define CAP_STRIDE_PLNSTRIDE_Pos
Definition: NUC472_442.h:2340
#define CAP_PKTSM_PKTSHNH_Msk
Definition: NUC472_442.h:2365
#define CAP_PLNSL_PLNSVML_Msk
Definition: NUC472_442.h:2326
#define CAP_PKTSL_PKTSHNL_Msk
Definition: NUC472_442.h:2311
#define CAP_PKTSM_PKTSHMH_Msk
Definition: NUC472_442.h:2362
#define CAP_PKTSM_PKTSVNH_Msk
Definition: NUC472_442.h:2371
#define CAP_INT_ADDRMIEN_Msk
Definition: NUC472_442.h:2254
#define CAP_MD_MDBS_Msk
Definition: NUC472_442.h:2272
#define CAP_PKTSL_PKTSVML_Msk
Definition: NUC472_442.h:2314
#define CAP_PLNSL_PLNSHML_Msk
Definition: NUC472_442.h:2320
#define CAP_CTL_SHUTTER_Msk
Definition: NUC472_442.h:2194
#define CAP_PLNSL_PLNSVNL_Msk
Definition: NUC472_442.h:2329
int32_t g_CAP_i32ErrCode
Definition: cap.c:22
#define CAP_CTL_CAPEN
Definition: cap.h:36
#define CAP_TIMEOUT_ERR
Definition: cap.h:95
void CAP_Stop(uint32_t u32FrameComplete)
Stop Image Capture Interface.
Definition: cap.c:203
void CAP_DisableMotionDet(void)
Enable Motion Detection Function.
Definition: cap.c:370
void CAP_SetPlanarScaling(uint32_t u32VNumerator, uint32_t u32VDenominator, uint32_t u32HNumerator, uint32_t u32HDenominator)
Set Planar Scaling Vertical and Horizontal Factor Register.
Definition: cap.c:274
void CAP_EnableMotionDet(uint32_t u32Freq, uint32_t u32BlockSize, uint32_t u32Format, uint32_t u32Threshold, uint32_t u32YDetAddr, uint32_t u32DetAddr)
Enable Motion Detection Function.
Definition: cap.c:350
void CAP_EnableInt(uint32_t u32IntMask)
Set CAP Interrupt.
Definition: cap.c:157
void CAP_SetPlanarBuf(uint32_t u32YAddr, uint32_t u32UAddr, uint32_t u32VAddr)
Set System Memory Planar Y, U and V Base Address Registers.
Definition: cap.c:122
void CAP_DisableInt(uint32_t u32IntMask)
Disable CAP Interrupt.
Definition: cap.c:178
void CAP_SetCroppingWindow(uint32_t u32VStart, uint32_t u32HStart, uint32_t u32Height, uint32_t u32Width)
Set Cropping Window Starting Address and Size.
Definition: cap.c:84
#define CAP_IS_STOPPED()
Is CAP module Enable.
Definition: cap.h:113
void CAP_SetPacketStride(uint32_t u32Stride)
Set Packet Frame Output Pixel Stride Width.
Definition: cap.c:307
void CAP_Start(void)
Start Image Capture Interface.
Definition: cap.c:188
void CAP_Open(uint32_t u32InFormat, uint32_t u32OutFormet)
Open engine clock and sensor clock.
Definition: cap.c:63
void CAP_Close(void)
Close Image Capture Interface.
Definition: cap.c:136
void CAP_SetPlanarStride(uint32_t u32Stride)
Set Planar Frame Output Pixel Stride Width.
Definition: cap.c:321
void CAP_SetPacketBuf(uint32_t u32Address)
Set System Memory Packet Base Address0 Register.
Definition: cap.c:103
void CAP_SetPacketScaling(uint32_t u32VNumerator, uint32_t u32VDenominator, uint32_t u32HNumerator, uint32_t u32HDenominator)
Set Packet Scaling Vertical and Horizontal Factor Register.
Definition: cap.c:236
#define ICAP
Definition: NUC472_442.h:28823
#define FALSE
Boolean false, define to use in API parameters or return value.
Definition: NUC472_442.h:29022
uint32_t SystemCoreClock