提交 972aa93a 编写于 作者: W Wayne Lin

Update N9H30 porting.

上级 d3131ee5
此差异已折叠。
/**************************************************************************//**
* @file NuMicro.h
* @version V1.00
* @brief NuMicro peripheral access layer header file.
*
* SPDX-License-Identifier: Apache-2.0
* @copyright (C) 2017-2020 Nuvoton Technology Corp. All rights reserved.
*****************************************************************************/
#ifndef __NUMICRO_H__
#define __NUMICRO_H__
#include "N9H30.h"
#include "nu_adc.h"
#include "nu_uart.h"
#include "nu_spi.h"
#include "nu_i2c.h"
#include "nu_etimer.h"
#include "nu_emac.h"
#include "nu_sdh.h"
#include "nu_gpio.h"
#include "nu_rtc.h"
#include "nu_wdt.h"
//#include "nu_ebi.h"
#include "nu_scuart.h"
#include "nu_pwm.h"
//#include "nu_crypto.h"
#include "nu_can.h"
#include "nu_i2s.h"
#include "nu_usbd.h"
#include "nu_lcd.h"
#include "nu_jpegcodec.h"
#include "nu_2d.h"
#include "nu_crypto.h"
#include "nu_sys.h"
#ifndef __STATIC_INLINE
#define __STATIC_INLINE static __inline
#endif
#ifndef __CLZ
#if defined(__CC_ARM)
#define __CLZ __clz
#else
#define __CLZ __builtin_clz
#endif
#endif
#endif /* __NUMICRO_H__ */
此差异已折叠。
/**************************************************************************//**
* @file 2d.h
* @brief N9H30 2DGE driver header file
*
* @note
* SPDX-License-Identifier: Apache-2.0
* Copyright (C) 2018 Nuvoton Technology Corp. All rights reserved.
*****************************************************************************/
#ifndef __NU_2D_H__
#define __NU_2D_H__
#ifdef __cplusplus
extern "C"
{
#endif
/** @addtogroup N9H30_Device_Driver N9H30 Device Driver
@{
*/
/** @addtogroup N9H30_GE2D_Driver GE2D Driver
@{
*/
/** @addtogroup N9H30_GE2D_EXPORTED_CONSTANTS GE2D Exported Constants
@{
*/
/// @cond HIDDEN_SYMBOLS
typedef struct
{
UINT32 PatternA;
UINT32 PatternB;
} MONOPATTERN;
#define COLOR_KEY 0xFF000000
/// @endcond HIDDEN_SYMBOLS
///////////////////////////////////////////////////////////////////////////////
// Definition of ROP2
///////////////////////////////////////////////////////////////////////////////
#define BLACKNESS 0x00 /*!< rop code: 0 */
#define DSTINVERT 0x55 /*!< rop code: Dn */
#define MERGECOPY 0xC0 /*!< rop code: PSa */
#define MERGEPAINT 0xBB /*!< rop code: DSno */
#define NOTSRCCOPY 0x33 /*!< rop code: Sn */
#define NOTSRCERASE 0x11 /*!< rop code: DSon */
#define PATCOPY 0xF0 /*!< rop code: P */
#define PATINVERT 0x5A /*!< rop code: DPx */
#define PATPAINT 0xFB /*!< rop code: DPSnoo */
#define SRCAND 0x88 /*!< rop code: DSa */
#define SRCCOPY 0xCC /*!< rop code: S */
#define SRCERASE 0x44 /*!< rop code: SDna */
#define SRCINVERT 0x66 /*!< rop code: DSx */
#define SRCPAINT 0xEE /*!< rop code: DSo */
#define WHITENESS 0xFF /*!< rop code: 1 */
///////////////////////////////////////////////////////////////////////////////
// Definition of Pen Styles
///////////////////////////////////////////////////////////////////////////////
#define PS_SOLID 0xffff /*!< pan style: solid */ //1111111111111111 (1111111111111111)
#define PS_DASH 0xcccc /*!< pan style: dash */ //1100110011001100 (1111000011110000)
#define PS_DOT 0xaaaa /*!< pan style: dot */ //1010101010101010 (1100110011001100)
#define PS_DASHDOT 0xe4e4 /*!< pan style: dash and dot */ //1110010011100100 (1111110000110000)
#define PS_DASHDOTDOT 0xeaea /*!< pan style: dash and two dots */ //1110101011101010 (1111110011001100)
#define PS_NULL 0x0000 /*!< pan style: null */ //0000000000000000 (0000000000000000)
///////////////////////////////////////////////////////////////////////////////
// Definition of Brush Styles
//
// HS_HORIZONTAL: 00000000 HS_BDIAGONAL: 00000001
// 00000000 00000010
// 00000000 00000100
// 00000000 00001000
// 11111111 00010000
// 00000000 00100000
// 00000000 01000000
// 00000000 10000000
//
// HS_VERTICAL: 00001000 HS_CROSS: 00001000
// 00001000 00001000
// 00001000 00001000
// 00001000 00001000
// 00001000 11111111
// 00001000 00001000
// 00001000 00001000
// 00001000 00001000
//
// HS_FDIAGONAL: 10000000 HS_DIAGCROSS: 10000001
// 01000000 01000010
// 00100000 00100100
// 00010000 00011000
// 00001000 00011000
// 00000100 00100100
// 00000010 01000010
// 00000001 10000001
///////////////////////////////////////////////////////////////////////////////
#define HS_HORIZONTAL 0 /*!< brush style: horizontal */
#define HS_VERTICAL 1 /*!< brush style: vertical */
#define HS_FDIAGONAL 2 /*!< brush style: fdiagonal */
#define HS_BDIAGONAL 3 /*!< brush style: bdiagonal */
#define HS_CROSS 4 /*!< brush style: cross */
#define HS_DIAGCROSS 5 /*!< brush style: diagcross */
#define MODE_OPAQUE 0 /*!< opaque mode */
#define MODE_TRANSPARENT 1 /*!< transparent mode */
#define MODE_SRC_TRANSPARENT MODE_TRANSPARENT /*!< source transparent mode */
#define MODE_DEST_TRANSPARENT 2 /*!< destination transparent mode */
#define MODE_INSIDE_CLIP 0 /*!< clip inside */
#define MODE_OUTSIDE_CLIP 1 /*!< clip outside */
#define TYPE_MONO 0 /*!< mono */
#define TYPE_COLOR 1 /*!< color */
#define GE_BPP_8 0x00000000 /*!< 8bpp display */
#define GE_BPP_16 0x00000010 /*!< 16bpp display */
#define GE_BPP_32 0x00000020 /*!< 32bpp display */
#define RGB332 1 /*!< 8bpp display */
#define RGB565 2 /*!< 16bpp display */
#define RGB888 3 /*!< 24bpp display */
#define F8x8 0 /*!< 8x8 font support */
#define F8x16 1 /*!< 8x16 font support */
/*@}*/ /* end of group N9H30_GE2D_EXPORTED_CONSTANTS */
/** @addtogroup N9H30_GE2D_EXPORTED_FUNCTIONS GE2D Exported Functions
@{
*/
void ge2dClearScreen(int color);
void ge2dSetWriteMask(int mask);
void ge2dSetSourceOriginStarting(void *ptr);
void ge2dSetDestinationOriginStarting(void *ptr);
void ge2dInit(int bpp, int width, int height, void *destination);
void ge2dReset(void);
void ge2dResetFIFO(void);
void ge2dBitblt_SetDrawMode(int opt, int ckey, int mask);
int ge2dBitblt_SetAlphaMode(int opt, int ks, int kd);
void ge2dBitblt_ScreenToScreen(int srcx, int srcy, int destx, int desty, int width, int height);
void ge2dBitblt_ScreenToScreenRop(int srcx, int srcy, int destx, int desty, int width, int height, int rop);
void ge2dBitblt_SourceToDestination(int srcx, int srcy, int destx, int desty, int width, int height, int srcpitch, int destpitch);
void ge2dClip_SetClip(int x1, int y1, int x2, int y2);
void ge2dClip_SetClipMode(int opt);
void ge2dDrawFrame(int x1, int y1, int x2, int y2, int color, int opt);
void ge2dLine_DrawSolidLine(int x1, int y1, int x2, int y2, int color);
void ge2dLine_DrawSolidLine_RGB565(int x1, int y1, int x2, int y2, int color);
void ge2dLine_DrawStyledLine(int x1, int y1, int x2, int y2, int style, int fgcolor, int bkcolor, int draw_mode);
void ge2dLine_DrawStyledLine_RGB565(int x1, int y1, int x2, int y2, int style, int fgcolor, int bkcolor, int draw_mode);
void ge2dFill_Solid(int dx, int dy, int width, int height, int color);
void ge2dFill_Solid_RGB565(int dx, int dy, int width, int height, int color);
void ge2dFill_SolidBackground(int dx, int dy, int width, int height, int color);
void ge2dFill_ColorPattern(int dx, int dy, int width, int height);
void ge2dFill_MonoPattern(int dx, int dy, int width, int height, int opt);
void ge2dFill_ColorPatternROP(int sx, int sy, int width, int height, int rop);
void ge2dFill_MonoPatternROP(int sx, int sy, int width, int height, int rop, int opt);
void ge2dFill_TileBlt(int srcx, int srcy, int destx, int desty, int width, int height, int x_count, int y_count);
void ge2dHostBlt_Write(int x, int y, int width, int height, void *buf);
void ge2dHostBlt_Read(int x, int y, int width, int height, void *buf);
void ge2dHostBlt_Sprite(int x, int y, int width, int height, void *buf);
void ge2dRotation(int srcx, int srcy, int destx, int desty, int width, int height, int ctl);
void ge2dSpriteBlt_Screen(int destx, int desty, int sprite_width, int sprite_height, void *buf);
void ge2dSpriteBltx_Screen(int x, int y, int sprite_sx, int sprite_sy, int width, int height, int sprite_width, int sprite_height, void *buf);
void ge2dSpriteBlt_ScreenRop(int x, int y, int sprite_width, int sprite_height, void *buf, int rop);
void ge2dSpriteBltx_ScreenRop(int x, int y, int sprite_sx, int sprite_sy, int width, int height, int sprite_width, int sprite_height, void *buf, int rop);
void ge2dColorExpansionBlt(int x, int y, int width, int height, int fore_color, int back_color, int opt, void *buf);
void ge2dHostColorExpansionBlt(int x, int y, int width, int height, int fore_color, int back_color, int opt, void *buf);
void ge2dInitMonoPattern(int opt, int fore_color, int back_color);
void ge2dInitMonoInputPattern(UINT32 PatternA, UINT32 PatternB, int fore_color, int back_color);
void ge2dInitColorPattern(int patformat, void *patdata);
void ge2dFont_PutChar(int x, int y, char asc_code, int fore_color, int back_color, int draw_mode, int font_id);
void ge2dFont_PutString(int x, int y, char *str, int fore_color, int back_color, int draw_mode, int font_id);
/*@}*/ /* end of group N9H30_GE2D_EXPORTED_FUNCTIONS */
/*@}*/ /* end of group N9H30_GE2D_Driver */
/*@}*/ /* end of group N9H30_Device_Driver */
#ifdef __cplusplus
}
#endif
#endif //__NU_2D_H__
/*** (C) COPYRIGHT 2018 Nuvoton Technology Corp. ***/
/**************************************************************************//**
* @file adc.h
* @brief N9H30 ADC driver header file
*
* @note
* SPDX-License-Identifier: Apache-2.0
* Copyright (C) 2018 Nuvoton Technology Corp. All rights reserved.
*****************************************************************************/
#ifndef __NU_ADC_H__
#define __NU_ADC_H__
#ifdef __cplusplus
extern "C"
{
#endif
/** @addtogroup N9H30_Device_Driver N9H30 Device Driver
@{
*/
/** @addtogroup N9H30_ADC_Driver ADC Driver
@{
*/
/** @addtogroup N9H30_ADC_EXPORTED_CONSTANTS ADC Exported Constants
@{
*/
#define ADC_ERR_ARGS 1 /*!< The arguments is wrong */
#define ADC_ERR_CMD 2 /*!< The command is wrong */
/// @cond HIDDEN_SYMBOLS
typedef int32_t(*ADC_CALLBACK)(uint32_t status, uint32_t userData);
/// @endcond HIDDEN_SYMBOLS
/*---------------------------------------------------------------------------------------------------------*/
/* ADC_CTL constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define ADC_CTL_ADEN 0x00000001 /*!< ADC Power Control */
#define ADC_CTL_VBGEN 0x00000002 /*!< ADC Internal Bandgap Power Control */
#define ADC_CTL_PWKPEN 0x00000004 /*!< ADC Keypad Power Enable Control */
#define ADC_CTL_MST 0x00000100 /*!< Menu Start Conversion */
#define ADC_CTL_PEDEEN 0x00000200 /*!< Pen Down Event Enable */
#define ADC_CTL_WKPEN 0x00000400 /*!< Keypad Press Wake Up Enable */
#define ADC_CTL_WKTEN 0x00000800 /*!< Touch Wake Up Enable */
#define ADC_CTL_WMSWCH 0x00010000 /*!< Wire Mode Switch For 5-Wire/4-Wire Configuration */
/*---------------------------------------------------------------------------------------------------------*/
/* ADC_CONF constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define ADC_CONF_TEN 0x00000001 /*!< Touch Enable */
#define ADC_CONF_ZEN 0x00000002 /*!< Press Enable */
#define ADC_CONF_NACEN 0x00000004 /*!< Normal AD Conversion Enable */
#define ADC_CONF_VBATEN 0x00000100 /*!< Voltage Battery Enable */
#define ADC_CONF_KPCEN 0x00000200 /*!< Keypad Press Conversion Enable */
#define ADC_CONF_SELFTEN 0x00000400 /*!< Selft Test Enable */
#define ADC_CONF_DISTMAVEN (1<<20) /*!< Display T Mean Average Enable */
#define ADC_CONF_DISZMAVEN (1<<21) /*!< Display Z Mean Average Enable */
#define ADC_CONF_HSPEED (1<<22) /*!< High Speed Enable */
#define ADC_CONF_CHSEL_Pos 3 /*!< Channel Selection Position */
#define ADC_CONF_CHSEL_Msk (7<<3) /*!< Channel Selection Mask */
#define ADC_CONF_CHSEL_VBT (0<<3) /*!< ADC input channel select VBT */
#define ADC_CONF_CHSEL_VHS (1<<3) /*!< ADC input channel select VHS */
#define ADC_CONF_CHSEL_A2 (2<<3) /*!< ADC input channel select A2 */
#define ADC_CONF_CHSEL_A3 (3<<3) /*!< ADC input channel select A3 */
#define ADC_CONF_CHSEL_YM (4<<3) /*!< ADC input channel select YM */
#define ADC_CONF_CHSEL_YP (5<<3) /*!< ADC input channel select YP */
#define ADC_CONF_CHSEL_XM (6<<3) /*!< ADC input channel select XM */
#define ADC_CONF_CHSEL_XP (7<<3) /*!< ADC input channel select XP */
#define ADC_CONF_REFSEL_Pos 6 /*!< Reference Selection Position */
#define ADC_CONF_REFSEL_Msk (3<<6) /*!< Reference Selection Mask */
#define ADC_CONF_REFSEL_VREF (0<<6) /*!< ADC reference select VREF input or 2.5v buffer output */
#define ADC_CONF_REFSEL_YMYP (1<<6) /*!< ADC reference select YM vs YP */
#define ADC_CONF_REFSEL_XMXP (2<<6) /*!< ADC reference select XM vs XP */
#define ADC_CONF_REFSEL_AVDD33 (3<<6) /*!< ADC reference select AGND33 vs AVDD33 */
/*---------------------------------------------------------------------------------------------------------*/
/* ADC_IER constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define ADC_IER_MIEN 0x00000001 /*!< Menu Interrupt Enable */
#define ADC_IER_KPEIEN 0x00000002 /*!< Keypad Press Event Interrupt Enable */
#define ADC_IER_PEDEIEN 0x00000004 /*!< Pen Down Even Interrupt Enable */
#define ADC_IER_WKTIEN 0x00000008 /*!< Wake Up Touch Interrupt Enable */
#define ADC_IER_WKPIEN 0x00000010 /*!< Wake Up Keypad Press Interrupt Enable */
#define ADC_IER_KPUEIEN 0x00000020 /*!< Keypad Press Up Event Interrupt Enable */
#define ADC_IER_PEUEIEN 0x00000040 /*!< Pen Up Event Interrupt Enable */
/*---------------------------------------------------------------------------------------------------------*/
/* ADC_ISR constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define ADC_ISR_MF 0x00000001 /*!< Menu Complete Flag */
#define ADC_ISR_KPEF 0x00000002 /*!< Keypad Press Event Flag */
#define ADC_ISR_PEDEF 0x00000004 /*!< Pen Down Event Flag */
#define ADC_ISR_KPUEF 0x00000008 /*!< Keypad Press Up Event Flag */
#define ADC_ISR_PEUEF 0x00000010 /*!< Pen Up Event Flag */
#define ADC_ISR_TF 0x00000100 /*!< Touch Conversion Finish */
#define ADC_ISR_ZF 0x00000200 /*!< Press Conversion Finish */
#define ADC_ISR_NACF 0x00000400 /*!< Normal AD Conversion Finish */
#define ADC_ISR_VBF 0x00000800 /*!< Voltage Battery Conversion Finish */
#define ADC_ISR_KPCF 0x00001000 /*!< Keypad Press Conversion Finish */
#define ADC_ISR_SELFTF 0x00002000 /*!< Self-Test Conversion Finish */
#define ADC_ISR_INTKP 0x00010000 /*!< Interrupt Signal For Keypad Detection */
#define ADC_ISR_INTTC 0x00020000 /*!< Interrupt Signal For Touch Screen Touching Detection */
/*---------------------------------------------------------------------------------------------------------*/
/* ADC_WKISR constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define ADC_WKISR_WKPEF 0x00000001 /*!< Wake Up Pen Down Event Flag */
#define ADC_WKISR_WPEDEF 0x00000002 /*!< Wake Up Keypad Press Event Flage */
/** \brief Structure type of ADC_CHAN
*/
typedef enum
{
AIN0 = ADC_CONF_CHSEL_VBT, /*!< ADC input channel select \ref ADC_CONF_CHSEL_VBT */
AIN1 = ADC_CONF_CHSEL_VHS, /*!< ADC input channel select \ref ADC_CONF_CHSEL_VHS */
AIN2 = ADC_CONF_CHSEL_A2, /*!< ADC input channel select \ref ADC_CONF_CHSEL_A2 */
AIN3 = ADC_CONF_CHSEL_A3, /*!< ADC input channel select \ref ADC_CONF_CHSEL_A3 */
AIN4 = ADC_CONF_CHSEL_YM, /*!< ADC input channel select \ref ADC_CONF_CHSEL_YM */
AIN5 = ADC_CONF_CHSEL_XP, /*!< ADC input channel select \ref ADC_CONF_CHSEL_XP */
AIN6 = ADC_CONF_CHSEL_XM, /*!< ADC input channel select \ref ADC_CONF_CHSEL_XM */
AIN7 = ADC_CONF_CHSEL_XP /*!< ADC input channel select \ref ADC_CONF_CHSEL_XP */
} ADC_CHAN;
/** \brief Structure type of ADC_CMD
*/
typedef enum
{
START_MST, /*!<Menu Start Conversion with interrupt */
START_MST_POLLING, /*!<Menu Start Conversion with polling */
VBPOWER_ON, /*!<Enable ADC Internal Bandgap Power */
VBPOWER_OFF, /*!<Disable ADC Internal Bandgap Power */
VBAT_ON, /*!<Enable Voltage Battery conversion function */
VBAT_OFF, /*!<Disable Voltage Battery conversion function */
KPPOWER_ON, /*!<Enable ADC Keypad power */
KPPOWER_OFF, /*!<Disable ADC Keypad power */
KPCONV_ON, /*!<Enable Keypad conversion function */
KPCONV_OFF, /*!<Disable Keypad conversion function */
KPPRESS_ON, /*!<Enable Keypad press event */
KPPRESS_OFF, /*!<Disable Keypad press event */
KPUP_ON, /*!<Enable Keypad up event */
KPUP_OFF, /*!<Disable Keypad up event */
PEPOWER_ON, /*!<Enable Pen Down Power ,It can control pen down event */
PEPOWER_OFF, /*!<Disable Pen Power */
PEDEF_ON, /*!<Enable Pen Down Event Flag */
PEDEF_OFF, /*!<Disable Pen Down Event Flag */
WKP_ON, /*!<Enable Keypad Press Wake Up */
WKP_OFF, /*!<Disable Keypad Press Wake Up */
WKT_ON, /*!<Enable Pen Down Wake Up */
WKT_OFF, /*!<Disable Pen Down Wake Up */
SWITCH_5WIRE_ON, /*!<Wire Mode Switch to 5-Wire Configuration */
SWITCH_5WIRE_OFF, /*!<Wire Mode Switch to 4-Wire Configuration */
T_ON, /*!<Enable Touch detection function */
T_OFF, /*!<Disable Touch detection function */
TAVG_ON, /*!<Enable Touch Mean average for X and Y function */
TAVG_OFF, /*!<Disable Touch Mean average for X and Y function */
Z_ON, /*!<Enable Press measure function */
Z_OFF, /*!<Disable Press measure function */
TZAVG_ON, /*!<Enable Pressure Mean average for Z1 and Z2 function */
TZAVG_OFF, /*!<Disable Pressure Mean average for Z1 and Z2 function */
NAC_ON, /*!<Enable Normal AD Conversion */
NAC_OFF, /*!<Disable Normal AD Conversion */
SWITCH_CH, /*!<Switch Channel */
} ADC_CMD;
/*@}*/ /* end of group N9H30_ADC_EXPORTED_CONSTANTS */
/** @addtogroup N9H30_ADC_EXPORTED_FUNCTIONS ADC Exported Functions
@{
*/
int adcOpen(void);
int adcOpen2(uint32_t freq);
int adcClose(void);
int adcReadXY(short *bufX, short *bufY, int dataCnt);
int adcReadZ(short *bufZ1, short *bufZ2, int dataCnt);
int adcIoctl(ADC_CMD cmd, int arg1, int arg2);
int adcChangeChannel(int channel);
/*@}*/ /* end of group N9H30_ADC_EXPORTED_FUNCTIONS */
/*@}*/ /* end of group N9H30_ADC_Driver */
/*@}*/ /* end of group N9H30_Device_Driver */
#ifdef __cplusplus
}
#endif
#endif //__NU_ADC_H__
此差异已折叠。
/**************************************************************************//**
* @file cap.h
* @version V1.00
* $Revision: 2 $
* $Date: 15/06/12 8:48a $
* @brief N9H30 CAP driver header file
*
* @note
* SPDX-License-Identifier: Apache-2.0
* Copyright (C) 2015 Nuvoton Technology Corp. All rights reserved.
*****************************************************************************/
#ifndef __NU_CAP_H__
#define __NU_CAP_H__
// #include header file
#ifdef __cplusplus
extern "C"
{
#endif
/** @addtogroup N9H30_Device_Driver N9H30 Device Driver
@{
*/
/** @addtogroup N9H30_CAP_Driver CAP Driver
@{
*/
/** @addtogroup N9H30_CAP_EXPORTED_CONSTANTS CAP Exported Constants
@{
*/
/* Define data type (struct, union? */
// #define Constant
#include "N9H30.h"
#include "nu_sys.h"
/*---------------------------------------------------------------------------------------------------------*/
/* CAP_CTL constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define CAPEN BIT0 /*!< Interrupt enable for VPE operations */
#define ADDRSW BIT3 /*!< Packet Buffer Address Switch */
#define PLNEN BIT5 /*!< Planar Output Enable */
#define PKTEN BIT6 /*!< Packet Output Enable */
#define SHUTTER BIT16 /*!< Image Capture Interface Automatically Disable The Capture Inteface After A Frame Had Been Captured */
#define UPDATE BIT20 /*!< Update Register At New Frame */
#define VPRST BIT24 /*!< Capture Interface Reset */
/*---------------------------------------------------------------------------------------------------------*/
/* CAP_PAR constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define INFMT BIT0 /*!< Sensor Input Data Format */
#define SENTYPE BIT1 /*!< Sensor Input Type */
#define INDATORD (BIT2|BIT3) /*!< Sensor Input Data Order */
#define OUTFMT (BIT4|BIT5) /*!< Image Data Format Output To System Memory */
#define RANGE BIT6 /*!< Scale Input YUV CCIR601 Color Range To Full Range */
#define PLNFMT BIT7 /*!< Planar Output YUV Format */
#define PCLKP BIT8 /*!< Sensor Pixel Clock Polarity */
#define HSP BIT9 /*!< Sensor Hsync Polarity */
#define VSP BIT10 /*!< Sensor Vsync Polarity */
#define COLORCTL (BIT11|BIT12) /*!< Special COLORCTL Processing */
#define FBB BIT18 /*!< Field By Blank */
/*---------------------------------------------------------------------------------------------------------*/
/* CAP_INT constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define MDIEN BIT20 /*!< Motion Detection Output Finish Interrupt Enable */
#define ADDRMIEN BIT19 /*!< Address Match Interrupt Enable */
#define MEIEN BIT17 /*!< System Memory Error Interrupt Enable */
#define VIEN BIT16 /*!< Video Frame End Interrupt Enable */
#define MDINTF BIT4 /*!< Motion Detection Output Finish Interrupt */
#define ADDRMINTF BIT3 /*!< Memory Address Match Interrupt */
#define MEINTF BIT1 /*!< Bus Master Transfer Error Interrupt */
#define VINTF BIT0 /*!< Video Frame End Interrupt */
/*---------------------------------------------------------------------------------------------------------*/
/* CAP_MD constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define MDEN BIT0 /*!< Motion Detection Enable */
#define MDBS BIT8 /*!< Motion Detection Block Size */
#define MDSM BIT9 /*!< Motion Detection Save Mode */
#define MDDF (BIT10|BIT11) /*!< Motion Detection Detect Frequency */
#define MDTHR (BIT16|BIT17|BIT18|BIT19|BIT20) /*!< Motion Detection Differential Threshold */
/*---------------------------------------------------------------------------------------------------------*/
/* CAP_CWSP constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define CWSADDRH (0xFFF<<0) /*!<Cropping Window Horizontal Starting Address */
#define CWSADDRV (0xFFF<<16) /*!<Cropping Window Vertical Starting Address */
/*---------------------------------------------------------------------------------------------------------*/
/* CAP_CWS constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define CWW (0xFFF<<0) /*!< Cropping Window Horizontal Starting Address */
#define CWH (0xFFF<<16) /*!< Cropping Window Vertical Starting Address */
/*---------------------------------------------------------------------------------------------------------*/
/* CAP_PKTSL constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define PKTSHML (0xFFul<< 0) /*!< Packet Scaling Horizontal Factor M (Lower 8-Bit) */
#define PKTSHNL (0xFFul<< 8) /*!< Packet Scaling Horizontal Factor N (Lower 8-Bit) */
#define PKTSVML (0xFFul<<16) /*!< Packet Scaling Vertical Factor M (Lower 8-Bit) */
#define PKTSVNL (0xFFul<<24) /*!< Packet Scaling Vertical Factor N (Lower 8-Bit) */
/*---------------------------------------------------------------------------------------------------------*/
/* CAP_PLNSL constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define PLNSHML (0xFFul<< 0) /*!< Planar Scaling Horizontal Factor M (Lower 8-Bit) */
#define PLNSHNL (0xFFul<< 8) /*!< Planar Scaling Horizontal Factor N (Lower 8-Bit) */
#define PLNSVML (0xFFul<<16) /*!< Planar Scaling Vertical Factor M (Lower 8-Bit) */
#define PLNSVNL (0xFFul<<24) /*!< Planar Scaling Vertical Factor N (Lower 8-Bit) */
/*---------------------------------------------------------------------------------------------------------*/
/* CAP_PKTSM constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define PKTSHMH (0xFFul<< 0) /*!< Packet Scaling Horizontal Factor M (Higher 8-Bit) */
#define PKTSHNH (0xFFul<< 8) /*!< Packet Scaling Horizontal Factor N (Higher 8-Bit) */
#define PKTSVMH (0xFFul<<16) /*!< Packet Scaling Vertical Factor M (Higher 8-Bit) */
#define PKTSVNH (0xFFul<<24) /*!< Packet Scaling Vertical Factor N (Higher 8-Bit) */
/*---------------------------------------------------------------------------------------------------------*/
/* CAP_PLNSM constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define PLNSHMH (0xFFul<< 0) /*!< Planar Scaling Horizontal Factor M (Higher 8-Bit) */
#define PLNSHNH (0xFFul<< 8) /*!< Planar Scaling Horizontal Factor N (Higher 8-Bit) */
#define PLNSVMH (0xFFul<<16) /*!< Planar Scaling Vertical Factor M (Higher 8-Bit) */
#define PLNSVNH (0xFFul<<24) /*!< Planar Scaling Vertical Factor N (Higher 8-Bit) */
/*---------------------------------------------------------------------------------------------------------*/
/* CAP_FRCTL constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define FRM (0x3Ful<<0) /*!< Scaling Frame Rate Factor M */
#define FRN (0x3Ful<<8) /*!< Scaling Frame Rate Factor N */
/*---------------------------------------------------------------------------------------------------------*/
/* CAP_STRIDE constant definitions */
/*---------------------------------------------------------------------------------------------------------*/
#define PKTSTRIDE (0x3FFFul<<0) /*!< Packet Frame Output Pixel Stride Width */
#define PLNSTRIDE (0x3FFFul<<16) /*!< Planar Frame Output Pixel Stride Width */
#define VIN_ERR_ID 0xFFFF1000 /*!< CAP library ID */
//Error message
// E_CAP_INVALID_INT Invalid interrupt
// E_CAP_INVALID_BUF Invalid buffer
// E_CAP_INVALID_PIPE Invalid pipe
// E_CAP_INVALID_COLOR_MODE Invalid color mode
#define E_CAP_INVALID_INT (VIN_ERR_ID | 0x01) /*!< CAP invalid interrupt */
#define E_CAP_INVALID_BUF (VIN_ERR_ID | 0x02) /*!< CAP invalid buffer */
#define E_CAP_INVALID_PIPE (VIN_ERR_ID | 0x03) /*!< CAP invalid pipe */
#define E_CAP_INVALID_COLOR_MODE (VIN_ERR_ID | 0x04) /*!< CAP invalid color mode */
#define E_CAP_WRONG_COLOR_PARAMETER (VIN_ERR_ID | 0x05) /*!< CAP worng color parameter */
/// @cond HIDDEN_SYMBOLS
typedef void (*PFN_CAP_CALLBACK)(UINT8 u8PacketBufID, UINT8 u8PlanarBufID, UINT8 u8FrameRate);
/// @endcond HIDDEN_SYMBOLS
/** \brief Structure type of E_CAP_INT_TYPE
*/
typedef enum
{
eCAP_MDINTF = 0x100000, /*!< Motion detection output finish interrupt */
eCAP_ADDRMINTF = 0x80000, /*!< Memory address match interrupt */
eCAP_MEINTF = 0x20000, /*!< Bus master transfer error interrupt */
eCAP_VINTF = 0x10000 /*!< Video frame end interrupt */
} E_CAP_INT_TYPE;
/** \brief Structure type of E_CAP_PIPE
*/
typedef enum
{
eCAP_BOTH_PIPE_DISABLE = 0, /*!< Planar output disable and planar output disable */
eCAP_PLANAR = 1, /*!< Planar output enable */
eCAP_PACKET = 2, /*!< Packet output enable */
eCAP_BOTH_PIPE_ENABLE = 3 /*!< Planar output enable and planar output enable */
} E_CAP_PIPE;
/** \brief Structure type of E_CAP_BUFFER
*/
typedef enum
{
eCAP_BUF0 = 0, /*!< System memory packet/planar base Address 0/Y */
eCAP_BUF1, /*!< System memory packet/planar base Address 1/U */
eCAP_BUF2 /*!< System memory packet/planar base Address 2/V */
} E_CAP_BUFFER;
/** \brief Structure type of E_CAP_ORDER
*/
typedef enum
{
eCAP_IN_YUYV = 0, /*!< Sensor input data (Byte 0 1 2 3) is Y0 U0 Y1 V0 */
eCAP_IN_YVYU, /*!< Sensor input data (Byte 0 1 2 3) is Y0 V0 Y1 U0 */
eCAP_IN_UYVY, /*!< Sensor input data (Byte 0 1 2 3) is U0 Y0 V0 Y1 */
eCAP_IN_VYUY, /*!< Sensor input data (Byte 0 1 2 3) is V0 Y0 U0 Y1 */
} E_CAP_ORDER;
/** \brief Structure type of E_CAP_IN_FORMAT
*/
typedef enum
{
eCAP_IN_YUV422 = 0, /*!< Sensor input data format is YUV222 */
eCAP_IN_RGB565 /*!< Sensor input data format is RGB565 */
} E_CAP_IN_FORMAT;
/** \brief Structure type of E_CAP_OUT_FORMAT
*/
typedef enum
{
eCAP_OUT_YUV422 = 0, /*!< Image data format is YUV422 */
eCAP_OUT_ONLY_Y, /*!< Image data format is Only output Y */
eCAP_OUT_RGB555, /*!< Image data format is RGB555 */
eCAP_OUT_RGB565 /*!< Image data format is RGB565 */
} E_CAP_OUT_FORMAT;
/** \brief Structure type of E_CAP_PLANAR_FORMAT
*/
typedef enum
{
eCAP_PLANAR_YUV422 = 0, /*!< Planar output YUV format is YUV422 */
eCAP_PLANAR_YUV420, /*!< Planar output YUV format is YUV420 */
} E_CAP_PLANAR_FORMAT;
/** \brief Structure type of E_CAP_TYPE
*/
typedef enum
{
eCAP_TYPE_CCIR601 = 0, /*!< Sensor input type is CCIR601 */
eCAP_TYPE_CCIR656 /*!< Sensor input type is CCIR656 */
} E_CAP_TYPE;
/** \brief Structure type of E_CAP_SNR_SRC
*/
typedef enum
{
eCAP_SNR_APLL = 2, /*!< CAP clock source is APLL */
eCAP_SNR_UPLL = 3 /*!< CAP clock source is UPLL */
} E_CAP_SNR_SRC;
/** \brief Structure type of E_CAP_CEF
*/
typedef enum
{
eCAP_CEF_NORMAL = 0, /*!< Image Processing is normal color */
eCAP_CEF_SEPIA = 1, /*!< Image Processing is sepia effect */
eCAP_CEF_NEGATIVE = 2, /*!< Image Processing is negative picture. */
eCAP_CEF_POSTERIZE = 3 /*!< Image Processing is posterize image */
} E_CAP_CEF;
/*@}*/ /* end of group N9H30_CAP_EXPORTED_CONSTANTS */
/** @addtogroup N9H30_CAP_EXPORTED_FUNCTIONS CAP Exported Functions
@{
*/
/// @cond HIDDEN_SYMBOLS
typedef struct
{
void (*Init)(BOOL bIsEnableSnrClock, E_CAP_SNR_SRC eSnrSrc, UINT32 u32SensorFreqKHz);
INT32(*Open)(UINT32 u32SensorFreqKHz);
void (*Close)(void);
void (*SetPipeEnable)(BOOL bEngEnable, E_CAP_PIPE ePipeEnable);
void (*SetPlanarFormat)(E_CAP_PLANAR_FORMAT ePlanarFmt);
void (*SetCropWinSize)(UINT32 u32height, UINT32 u32width);
void (*SetCropWinStartAddr)(UINT32 u32VerticalStart, UINT32 u32HorizontalStart);
void (*SetStride)(UINT32 u16packetstride, UINT32 u32planarstride);
void (*GetStride)(PUINT32 pu32PacketStride, PUINT32 pu32PlanarStride);
INT32(*EnableInt)(E_CAP_INT_TYPE eIntType);
INT32(*DisableInt)(E_CAP_INT_TYPE eIntType);
INT32(*InstallCallback)(E_CAP_INT_TYPE eIntType, PFN_CAP_CALLBACK pfnCallback, PFN_CAP_CALLBACK *pfnOldCallback);
INT32(*SetBaseStartAddress)(E_CAP_PIPE ePipe, E_CAP_BUFFER eBuf, UINT32 u32BaseStartAddr);
void (*SetOperationMode)(BOOL bIsOneSutterMode);
BOOL (*GetOperationMode)(void);
void (*SetPacketFrameBufferControl)(BOOL bFrameSwitch);
void (*SetSensorPolarity)(BOOL bVsync, BOOL bHsync, BOOL bPixelClk);
INT32(*SetColorEffectParameter)(UINT8 u8YComp, UINT8 u8UComp, UINT8 u8VComp);
void (*SetDataFormatAndOrder)(E_CAP_ORDER eInputOrder, E_CAP_IN_FORMAT eInputFormat, E_CAP_OUT_FORMAT eOutputFormat);
void (*SetMotionDet)(BOOL bEnable, BOOL bBlockSize, BOOL bSaveMode);
void (*SetMotionDetEx)(UINT32 u32DetFreq, UINT32 u32Threshold, UINT32 u32OutBuffer, UINT32 u32LumBuffer);
void (*SetStandardCCIR656)(BOOL);
void (*SetShadowRegister)(void);
} CAPDEV_T;
/// @endcond HIDDEN_SYMBOLS
/*@}*/ /* end of group N9H30_CAP_EXPORTED_FUNCTIONS */
/*@}*/ /* end of group N9H30_CAP_Driver */
/*@}*/ /* end of group N9H30_Device_Driver */
#ifdef __cplusplus
}
#endif
#endif
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
/**************************************************************************//**
* @file timer.h
* @brief N9H30 series TIMER driver header file
*
* @note
* SPDX-License-Identifier: Apache-2.0
* Copyright (C) 2018 Nuvoton Technology Corp. All rights reserved.
*****************************************************************************/
#ifndef __NU_TIMER_H__
#define __NU_TIMER_H__
#ifdef __cplusplus
extern "C"
{
#endif
#include "N9H30.h"
#define TIMER_COUNTER_ENABLE (1UL << 30) /*!< Timer counter enable */
#define TIMER_INTERRUPT_ENABLE (1UL << 29) /*!< Timer interrupt enable */
#define TIMER_ONESHOT_MODE (0UL) /*!< Timer working in one shot mode */
#define TIMER_PERIODIC_MODE (1UL << 27) /*!< Timer working in periodic mode */
#define TIMER_CONTINUOUS_MODE (3UL << 27) /*!< Timer working in continuous mode */
#define TIMER_COUNTER_RESET (1UL << 26) /*!< Timer reset counter */
#define TIMER_IS_ALIVE (1UL << 25) /*!< Timer is alive */
static __inline void TIMER_ClearIntFlag(uint32_t timer)
{
outpw(REG_TMR_ISR, (1 << timer));
}
static __inline uint32_t TIMER_GetIntFlag(uint32_t timer)
{
return inpw(REG_TMR_ISR) & (1 << timer);
}
void TIMER_SET_CMP_VALUE(uint32_t timer, uint32_t u32Cmpr);
void TIMER_SET_OPMODE(uint32_t timer, uint32_t u32OpMode);
void TIMER_SET_PRESCALE_VALUE(uint32_t timer, uint32_t u32PreScale);
uint32_t TIMER_GetModuleClock(uint32_t timer);
void TIMER_Start(uint32_t timer);
void TIMER_Stop(uint32_t timer);
void TIMER_ClearCounter(uint32_t timer);
uint32_t TIMER_GetCounter(uint32_t timer);
uint32_t TIMER_GetCompareData(uint32_t timer);
void TIMER_EnableInt(uint32_t timer);
void TIMER_DisableInt(uint32_t timer);
void TIMER_Close(uint32_t timer);
uint32_t TIMER_Open(uint32_t timer, uint32_t u32Mode, uint32_t u32Freq);
__inline void TIMER_ClearIntFlag(uint32_t timer);
__inline uint32_t TIMER_GetIntFlag(uint32_t timer);
#ifdef __cplusplus
}
#endif
#endif //__NU_TIMER_H__
/*** (C) COPYRIGHT 2018 Nuvoton Technology Corp. ***/
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
# for module compiling
import os
from building import *
cwd = GetCurrentDir()
objs = []
list = os.listdir(cwd)
for d in list:
path = os.path.join(cwd, d)
if os.path.isfile(os.path.join(path, 'SConscript')):
objs = objs + SConscript(os.path.join(d, 'SConscript'))
Return('objs')
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册