⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syscfg.h

📁 基于BF561的JS28F128 FLASH驱动
💻 H
字号:
#ifndef __SYSCCFG_H__
#define __SYSCCFG_H__

/*************************************************************************
PF管脚硬件设计:
	PF0 : I2C的SDATA
	PF1 : I2C的SCLK
	PF2 : SPI的选通标志
	PF3 : Flash的状态位
	PF4 : 视频1行完成中断
	PF5 : 视频1场完成中断
	PF6 : 键盘中断
	PF7,9:尚未使用
	PF10: 温度输入,
	PF11-PF15,作为FPGA的配置信号,其中
		PF11: nConfig
		PF12: DATA
		PF13: DCLK
		PF14: Config-Done
		PF15: nStatus
		有关配置的时序手册,请参见《dsconf Configuration Devices for SRAM-Based LUT Devices.pdf》	
*************************************************************************/

/*************************************************************************
	目前系统使用到的中断有:
	0 : Emnlation,使用RTE从中断返回
	1 : RTS,使用RTS从中断返回
	2 : NMI,使用RTN从中断返回
	3 : EVT,exception,使用RTX从中断返回
	4 : 内核保留
	5-15:使用RTI从中断返回
			6  号中断,不需在这设置,Core Timer
			7  号中断,PF_A中断,为最主要的行、场中断使用
			8  号中断,语音通过SPORT0进行录制及回放 
			9  号中断,电池电压值通过SPI0得到
			10 号中,UART0 
			11 号中断,Timer2使用
			12 号中断,PCI,USB,RTC
			13 号中断,PF_B中断,键盘使用
	这里,我们将MemDMA的中断由默认的13更改为9(见SetupInterrupt),是因为
	在PF_A的12号中断时,需调用MemDMA进行数据传输,如果MemDMA中断优先级 < PF 中断的优先级
	会导致只有PF_A中断退出后,才能引发MemDMA, 这违背了程序设计时序。
****************************************************************************/
/*************************************************************************
	ASYNC 0: 挂512K的存放程序的Flash,地址空间从0x2000,0000 --- 0x2007,ffff
	ASYNC 1: 挂64M 的存放数据的Flash,地址空间从0x2400,0000 --- 0x27ff,ffff,我们定义其中Addr:0x2600,0000,Command:0x2500,0000,Data:0x2400,0000
	ASYNC 2: 挂两块1K的FIFO,该两块FIFO硬件上设置,不能同时存取。两者除读使能/写使能不同外,其它的均使用相同的连接。地址空间从0x2800,0000 --- 0x0x2BFF,FFFF
	ASYNC 3: 挂键盘,地址空间从0x2C00,0000 --- 0x0x2FFF,FFFF
*************************************************************************/


/****************************************************************************
	系统 杂项设置
****************************************************************************/
#define RUN_IN_EZKITS					0			//1:程序运行在EZ-Kits BF535上,0:公司的开发板
#define KEYCODE_RUN_IN_L1               0           //1:关键代码运行在L1,0:运行在L2
#define SUPERVISOR_MODE_EN				0			//1:系统运行在管理模式,0:用户模式

#define UCOS_EN							1			//1:使能UCOS,0:不使能UCOS
#define ISR_SHARE_EN					0			//1:所有中断共享一个ISR,0:不同的中断使用不同的ISR

#define PERIPHERY_BUS_WIDTH32			1			//外设系统总线宽度,0:16bits,1:32bits
#define TEST_MEMDMA_TIME_EN				0			//1:测试MEMDMA时间,0:不测试
#define TEST_DATAPROC_TIME_EN			0			//1:测试数据处理时间,0:测试数据处理时间
/*************************************************************************
 配置注意:
	若VIDEO_TESTLOGO_EN == 1,则在0x00处,填充320*240 Y(16bit),输出logo图像
	若VIDEO_TESTLOGO_EN == 0,则不需填充数据,输出实际采集的图像
*************************************************************************/
#define VIDEO_TESTLOGO_EN				1			//1:输出LOGO视频,0不输出LOGO视频
#define VIDEO_HISTOGRAM_EN				1			//1:统计直方  ,0:不统计直方
#define VIDEO_HISTOGRAM_SHOW_EN			0			//1:显示直方图图像,0:不显示直方图图像
#define VIDEO_HISTOGRAM_FINE_EN			0			//1:显示精细直方图,0:显示一级直方
#define VIDEO_PROCESS_HOOK_EN			0			//1:使能HOOK,0:不使能
//输入的数据源方式及输出配置
#define VIDEO_2POINT_CORRECTION_EN		1			//1:对原始数据进行2点校正 0:原始数据进行2点校正
#define VIDEO_GAIN_EN					1			//1:进来的数据乘gainn系数,0:不乘
#define VIDEO_DISPLAY_REVERSE_EN		1			//1:视频输出的数据反相,0:正相
#define ORIGINAL_DATA_SIGNAL_EN			1			//仅在VIDEO_2POINT_CORRECTION_EN为1时有效,1:原始输入为有符号数,0:原始输入为无符号数



#define VIDEO_BADPIXEL_CORRECT_EN		1			//1:坏点修正使能,0:坏点修正不使能
#define VIDEO_BADGRAY_CORRECT_EN		0			//1:对极大负数的灰度值进行修正,0:不修正
#define VIDEO_STREAM_DRIVERBY_HALFFULL	0			//1:视频流被半满中断驱动,0:2行中断

#define VIDEO_MAX_GRAY_ZOOM_LEVEL		16			//灰度放大最大数(1<<VIDEO_GRAY_ZOOM_LEVEL),10-31可调
#define VIDEO_HISTOGRAME_COUNT			1			//1:每帧都形成直方图, 2:每2帧都形成直方图..
#define VIDEO_MAX_VALUE					0x3FFF		//定义原始Y数据的最大值(1<<14 = 16K)
#define HISTOGRAM_OFFSET				0x2000		//直方计算时,提正数据所使用的一个偏移量
#define VIDEO_HISTOGRAM_LIMITVALUE		0x10		//直方统计限定值

#define VIDEO_MIDDLE_FILTER_EN			1			//1:使能中值滤波,0:不使能中值滤波
#define VIDEO_ZOOM_EN					1			//1:视频支持电子放大,0:不支持电子放大
#define VIDEO_COLOR_EN					0			//1:显示彩色视频,0:显示黑白色视频

#if VIDEO_MIDDLE_FILTER_EN
#define MIDDLE_5POINT_FILTER_EN			0			//1:使用5点求中值,0:使用3点求中值
#endif

#define QUERY_DEAD_PIXELS_EN			1			//求死点
#define VIDEO_CALCTEMP_EN				0			//1:测温使能,0:测温不使能
#define TEMP_CALETEMP_COUNT				25			//1:每帧都计算温度,   2:每2帧都计算温度..
#define USER_INIT_EN					1			//1:用户初始化使能,0:不使能
#define UNGZIP_EN						1			//1:使能解压缩数据,0:不使能解压缩数据
#define SETUPPLL_EN						0			//1:设置PLL,0:不设置
#define SDRAM_INIT_EN					0			//1:在程序中初始化sdram,0:使用脚本初始化sdram

#define UART_EN							1			//1:使能stdio,0:不使能stdio
#define KEYBOARD_EN						0			//1:使能KEYBOARD,0:不使能KEYBOARD
#define MENU_EN							0			//1:使用菜单,0:不使用菜单
#define NET_EN							0			//1:使能网络,0:不使能网络
#define GUI_EN							1			//1:使能GUI,0:不使能GUI
#define PACKET_PROCESS_EN				(UART_EN | NET_EN) //是否处理包由UART_EN与NET_EN决定
#define OSINTNESTING_SELFPLUSPLUS_EN	1			//1:在中断ISR中,使用OSIntNesting++,0:使用call OSIntEnter()
#define STACK_SW_IN_OSINTEXIT_EN		0           //1:在中断退出函数OSIntExit里进行任务堆栈中切换,0:其它地方切换。应为0

#define TASK_WORKQ_EN					1			//1:使能WorkQ任务,0:不使能WorkQ任务
#define TASK_TIMER_EN					1			//1:使能Timer任务,0:不使能Timer任务


#if KEYBOARD_EN
	#define KEYBOARD_INT_TRIGGER		1			//1:键盘由中断触发,0:查询方式
#else
	#define KEYBOARD_INT_TRIGGER		0			//1:键盘由中断触发,0:查询方式
#endif//KEYBOARD_EN


#if VIDEO_ZOOM_EN
	#define VIDEO_ZOOM_ORI_LEVEL		10			//原始数据在未缩放前的默认值
	#define VIDEO_ZOOM_MIN_LEVEL		10			//最小缩小值
	#define VIDEO_ZOOM_MAX_LEVEL		20			//最大放大值
	#define VIDEO_ZOOM_STEP				1			//缩放时步时值
	#define VIDEO_NOZOOM				0			//图像未缩放
	#define VIDEO_ZOOMIN				1			//图像放大
	#define VIDEO_ZOOMOUT				2			//图像缩小
#endif //VIDEO_ZOOM_EN

#if RUN_IN_EZKITS
	#define STEP_MEMDMA_EN				0			//1:MemDMA时使用单步MEMDMA,0:使用一组MEMDMA描述符一次进行
	#define CFG_FPGA_EN					0			//1:使能配置FPGA,0:不使能配置FPGA
	#define TESTDEVICE_EN				0			//1:测试设备使能,0:测试设备不使能 
#else
	#define STEP_MEMDMA_EN				0			//1:MemDMA时使用单步MEMDMA,0:使用一组MEMDMA描述符一次进行
	#define CFG_FPGA_EN					1			//1:使能配置FPGA,0:不使能配置FPGA
	#define TESTDEVICE_EN				1			//1:测试设备使能,0:测试设备不使能 
#endif

#if UART_EN	
	#define STDIO_UART					UART0				//STDIO使用UART0
	#define UCOS_VIEW_UART				UART0				//ucos-view使用UART0
	#define STDIO_DEFAULT_BOUDRATE		UART_BAUD_9600		//系统默认的波特率
#endif



#define DEBUG							1		    //1:调试程序模式,0:正式运行模式

#if DEBUG 
	#define TRACE								trace
	#define TRACE0(strForamt)					trace(strForamt)				
	#define TRACE1(strForamt,a1)				trace(strForamt,a1)		
	#define TRACE2(strForamt,a1,b2)				trace(strForamt,a1,b2)
	#define TRACE3(strForamt,a1,b2,c3)			trace(strForamt,a1,b2,c3)
	#define TRACE4(strForamt,a1,b2,c3,d4)		trace(strForamt,a1,b2,c3,d4)
	#define TRACE5(strForamt,a1,b2,c3,d4,e5)	trace(strForamt,a1,b2,c3,d4,e5)
#else
	#define TRACE
	#define TRACE0(strForamt)					
	#define TRACE1(strForamt,a1)					
	#define TRACE2(strForamt,a1,b2)					
	#define TRACE3(strForamt,a1,b2,c3)				
	#define TRACE4(strForamt,a1,b2,c3,d4)			
	#define TRACE5(strForamt,a1,b2,c3,d4,e5)		
#endif

#if TESTDEVICE_EN
	#define TEST_SDRAM_EN				1			//1:测试SDRAM使能,0:不使能
	#define TEST_FLASH_EN				1			//1:测试512KFlash使能,0:不使能
	#define TEST_VIDEODVC_EN			1			//1:测试视频使能	,0:不使能
#endif

/****************************************************************************
	uCOS 任务优先级定义
****************************************************************************/
#define  TASK_BADPIXEL_CORRECT_PRIO		4			//死点修正任务优先级
#define  TASK_KEYBOARDPROCESS_PRIO		5			//键盘处理任务优先级
#define  TASK_HISTOGRAMPROCESS_PRIO		6			//帧中断处理任务优先级

#define  TASK_UART_PRIO					7			//UART处理任务优先级


#define  TASK_ROOT_PRIO					10			//初始化任务优先级
#define  TASK_CMDPACKET_PRIO			11			//命令包处理任务优先级
#define  TASK_WORKQ_PRIO				12			//工作队列任务优先级
#define  TASK_TIMER_PRIO				14			//定时器任务优先级
/****************************************************************************
	512K Flash数据存放区间配置定义
****************************************************************************/
#define  PROGRAM_DATA_MAX_LEN			(212*1024)		//最大程序大小212K
#define  SYS_DATA_MAX_LEN				(292*1024)		//系统数据大小292K
#define  CONFIG_DATA_MAX_LEN			(8*1024)		//配置数据大小8K(4K正常配置,4K备用)


/****************************************************************************
	关键代码存放区域定义
****************************************************************************/
#if KEYCODE_RUN_IN_L1	
	#if defined(__ADSPBF535__)
		#ifndef _LANGUAGE_ASM
			#define SECTION_L1_CODE section("L1_code")
		#else
			#define SECTION_L1_CODE .section L1_code;	
		#endif
	#else
		#define SECTION_L1_CODE
	#endif
#else
	#if defined(__ADSPBF535__)
		#ifndef _LANGUAGE_ASM	
			#define SECTION_L1_CODE
		#else
			#define SECTION_L1_CODE	.section program;	
		#endif
	#else
		#define SECTION_L1_CODE
	#endif
#endif

/****************************************************************************
	SDRAM内存区域定义
****************************************************************************/
/****************************************************************************
	uCOS 任务堆栈大小定义
****************************************************************************/
#define  STACK_SIZE 					500					// 任务堆栈大小,以32bits计

//Heap内存开始地址
#define TASK_HEAP_MEM_START				0xFF800000			//片内a内存开始地址
#define TASK_HEAP_MEM_SIZE				0x3000
/****************************************************************************
	系统 运行速度及外设速度定义
****************************************************************************/
#if RUN_IN_EZKITS
	#define  EXTERN_CLOCK				(20*1000000)	//外部晶振为20M	
#else
	#define  EXTERN_CLOCK				(27*1000000)	//外部晶振为27M	
#endif

#define  CORE_CLOCK						(0x16 * EXTERN_CLOCK)				//内核时钟 = 外部外部晶振CLK * 倍频数
#define  SYS_CLOCK						(unsigned long)(CORE_CLOCK / 4)		//系统时钟 = 内核时钟/4 


/****************************************************************************
	视频 宽度/高度定义
****************************************************************************/
#define WIDTH_VIDEO						320				//视频宽度/列数
#define HEIGHT_VIDEO					240				//视频高度/行数
#define ALPHA_MENU						(256*30/100)	//Alpha Menu,Menu:30%,YUV:70%

#define ORIGINAL_DATA_BITS_NUM			14
#define VIDEO_FILTER_DIV				2				
#define VIDEO_TBL_MULDIV				(ORIGINAL_DATA_BITS_NUM - 8)//视频对应表的压缩率,即将 实际数据>>VIDEO_TBL_MULDIV
#define VIDEO_TBL_LEN					256				//YUV表数据长度
#define HISTOGRAM_TBL_LEN				1024
#define VIDEO_INT_PROCESS_COUNT			(2*WIDTH_VIDEO)	//视频一次中断时处理的数据个数

/****************************************************************************
	SPI 设置
****************************************************************************/
#define SPI0_BAUD_VALUE					100				//100	

/****************************************************************************
	UART 设置
****************************************************************************/



/****************************************************************************
	字模点阵 设置
****************************************************************************/
#define HZ_LATTICE_WIDTH		16			//每个汉字点阵宽度
#define HZ_LATTICE_HEIGHT		16			//每个汉字点阵高度
#define HZ_LATTICE_LINE_BITS	16			//每个汉字点阵一行占用的比bits,比如,12*12的点阵,每行占用16bits

#define ASC_LATTICE_WIDTH		8			//每个ASCII点阵宽度
#define ASC_LATTICE_HEIGHT		16			//每个ASCII点阵高度
#define ASC_LATTICE_LINE_BITS	8			//每个ASCII点阵一行占用的比bits,比如,6*12的点阵,每行占用8bits

/****************************************************************************
	GUI参数设置
****************************************************************************/
#define MENU_INTERLACED_EN		0	//因PAL,NTSC存在着隔行扫描,故为了使窗口显示更精致,使能窗口隔行传输
#if MENU_INTERLACED_EN
	#define FONT_WIDTH_DIVS		2
#else
	#define FONT_WIDTH_DIVS		1
#endif

#define MENU_1D_BORDER_EN		0	//1:菜单有1D边框,0:无1D边框
#define MENU_3D_BORDER_EN		1	//1:菜单有3D边框,0:无3D边框,如果使能MENU_3D_BORDER_EN,必须设置SM_BORDER_CX = SM_BORDER_CY = 2
#define MENU_BORDER_EN			(MENU_3D_BORDER_EN | MENU_1D_BORDER_EN)	//1:菜单有边框,0:无边框
#define MENU_STYLE_DOWN_POPUP	1	//1:菜单项使用下拉风格,0:使用windows的开始菜单风格
#if MENU_STYLE_DOWN_POPUP
	#define ROOT_MENU_POSITION_X	26
	#define ROOT_MENU_POSITION_Y	(HEIGHT_VIDEO - HZ_LATTICE_HEIGHT - 2*2 -1)		//2*2 = (2边框)*(边框宽度2)
#else
	#define ROOT_MENU_POSITION_X	26
	#define ROOT_MENU_POSITION_Y	(HEIGHT_VIDEO - 5*HZ_LATTICE_HEIGHT - 2*2 -1)	//2*2 = (2边框)*(边框宽度2)
#endif

#endif//__SYSCCFG_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -