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

📄 s1d13806.c

📁 ARM外围FLASH 以及SDRAM烧写程序 完整的程序 可能对大家硬件编程有点帮助
💻 C
📖 第 1 页 / 共 4 页
字号:
		0x06,
		0x8E,
		0x41,
		0x00,
		0x85,
		S1D_LUFILEN,
		S1D_16BPP,
		0x0320,
		S1D_NOINKCUR,
		0x01,
		0x00,
		0x00,
		0x00,
		0x1F,
		0x3F,
		0x1F,
		S1D_NOINKCUR,
		0x01,
		0x00,
		0x00,
		0x00,
		0x1F,
		0x3F,
		0x1F,
		S1D_LCDLUTRW_CRTLUTW,
		S1D_PSMD,
		S1D_CRTOM
	},*/
	//* TFT_CRT_Conf Definition File Parameters
 	{
		0x1FFF,
		0x0000,
		S1D_BUSCLK_SRC,
		( S1D_SRC_DIV1 | S1D_CLKI_SRC ),
		( S1D_SRC_DIV1 | S1D_CLKI_SRC ),
		( S1D_SRC_DIV1 | S1D_CLKI_SRC ),
		S1D_WS_1,
		S1D_RR_3,
		( ( S1D_TC_0_1 << 8 ) | S1D_TC_0_0 ),
		( S1D_PAN_DW_2 | S1D_PAN_CM | S1D_PAN_TL ),
		0x00,
		0x12,
		0x01,
		0x0B,
		0x2C,
		0x0A,
		0x01,
		S1D_16BPP,
		0x00,
		0x0280,
		0x13,
		0x01,
		0x0B,
		0x2B,
		0x09,
		0x01,
		S1D_LUFILEN,
		S1D_16BPP,
		0x0280,
		S1D_NOINKCUR,
		0x01,
		0x00,
		0x00,
		0x00,
		0x1F,
		0x3F,
		0x1F,
		S1D_NOINKCUR,
		0x01,
		0x00,
		0x00,
		0x00,
		0x1F,
		0x3F,
		0x1F,
		S1D_LCDLUTRW_CRTLUTW,
		S1D_PSMD,
		S1D_EISD0M
	}
} ;

//* S1D13806 Display Resolution Descriptor
AT91S_S1D13806_DisplayDefDesc	display_def_desc ;

//* S1D13806 Character Definition Descriptor
AT91S_S1D13806_CharDefDesc	char_def_desc ;

//* S1D13806 Data Descriptor
AT91S_S1D13806_DataDesc	data_desc ;

//* S1D13806 Register Init Content Descriptor
AT91S_S1D13806_RegDesc	s1d13806_reg_desc ;

//* S1D13806 Display Descriptor
AT91S_S1D13806_DisplayDesc	s1d13806_display_desc ;

//*----------------------------------------------------------------------------
//* \fn    AT91F_S1D13806_Init
//* \brief Initialization of the Display Controller
//*----------------------------------------------------------------------------
void AT91F_S1D13806_Init ( AT91PS_S1D13806_Desc	s1d13806_base, int s1d13806_disp_mem_base, unsigned int conf, unsigned int disp_def, unsigned int char_def, unsigned int mck_khz )
{
	int i ;
	unsigned char	*display_mem = (unsigned char *) s1d13806_disp_mem_base ;
	unsigned int	initial_timeout;
	
	//* Descriptors initialisation
	display_def_desc.hdw = Display_def_list[disp_def].hdw ;
	display_def_desc.vdw = Display_def_list[disp_def].vdw ;
	char_def_desc.hnbp = Char_def_list[char_def].hnbp ;
	char_def_desc.vnbp = Char_def_list[char_def].vnbp ;
	data_desc.Present_lcd_start_address = 0 ;
	data_desc.Present_crt_start_address = 0 ;
	data_desc.Present_nb_char_on_line = 0 ;
	data_desc.Present_display_mem_ptr = ( char * ) s1d13806_disp_mem_base ;
	s1d13806_reg_desc.ioconf = Display_conf_list[conf].ioconf ;
	s1d13806_reg_desc.iocr = Display_conf_list[conf].iocr ;
	s1d13806_reg_desc.mclk = Display_conf_list[conf].mclk ;
	s1d13806_reg_desc.lcdclk = Display_conf_list[conf].lcdclk ;
	s1d13806_reg_desc.crtpclk = Display_conf_list[conf].crtpclk ;
	s1d13806_reg_desc.mpclk = Display_conf_list[conf].mpclk ;
	s1d13806_reg_desc.nws = Display_conf_list[conf].nws ;
	s1d13806_reg_desc.refc = Display_conf_list[conf].refc ;
	s1d13806_reg_desc.sdram = Display_conf_list[conf].sdram ;
	s1d13806_reg_desc.ptype = Display_conf_list[conf].ptype ;
	s1d13806_reg_desc.mod = Display_conf_list[conf].mod ;
	s1d13806_reg_desc.lcdhndp = Display_conf_list[conf].lcdhndp ;
	s1d13806_reg_desc.tftfpsp = Display_conf_list[conf].tftfpsp ;
	s1d13806_reg_desc.tftfppw = Display_conf_list[conf].tftfppw ;
	s1d13806_reg_desc.lcdvndp = Display_conf_list[conf].lcdvndp ;
	s1d13806_reg_desc.lcdfpsp = Display_conf_list[conf].lcdfpsp ;
	s1d13806_reg_desc.lcdfppw = Display_conf_list[conf].lcdfppw ;
	s1d13806_reg_desc.lcddm = Display_conf_list[conf].lcddm ;
	s1d13806_reg_desc.lcdm = Display_conf_list[conf].lcdm ;
	s1d13806_reg_desc.lcdmao = Display_conf_list[conf].lcdmao ;
	s1d13806_reg_desc.crthndp = Display_conf_list[conf].crthndp ;
	s1d13806_reg_desc.crthsp = Display_conf_list[conf].crthsp ;
	s1d13806_reg_desc.crthpw = Display_conf_list[conf].crthpw ;
	s1d13806_reg_desc.crtvndp = Display_conf_list[conf].crtvndp ;
	s1d13806_reg_desc.crtvsp = Display_conf_list[conf].crtvsp ;
	s1d13806_reg_desc.crtvpw = Display_conf_list[conf].crtvpw ;
	s1d13806_reg_desc.tvoc = Display_conf_list[conf].tvoc ;
	s1d13806_reg_desc.crtdm = Display_conf_list[conf].crtdm ;
	s1d13806_reg_desc.crtmao = Display_conf_list[conf].crtmao ;
	s1d13806_reg_desc.lcdicc = Display_conf_list[conf].lcdicc ;
	s1d13806_reg_desc.lcdicba = Display_conf_list[conf].lcdicba ;
	s1d13806_reg_desc.lcdicb0 = Display_conf_list[conf].lcdicb0 ;
	s1d13806_reg_desc.lcdicg0 = Display_conf_list[conf].lcdicg0 ;
	s1d13806_reg_desc.lcdicr0 = Display_conf_list[conf].lcdicr0 ;
	s1d13806_reg_desc.lcdicb1 = Display_conf_list[conf].lcdicb1 ;
	s1d13806_reg_desc.lcdicg1 = Display_conf_list[conf].lcdicg1 ;
	s1d13806_reg_desc.lcdicr1 = Display_conf_list[conf].lcdicr1 ;
	s1d13806_reg_desc.crticc = Display_conf_list[conf].crticc ;
	s1d13806_reg_desc.crticba = Display_conf_list[conf].crticba ;
	s1d13806_reg_desc.crticb0 = Display_conf_list[conf].crticb0 ;
	s1d13806_reg_desc.crticg0 = Display_conf_list[conf].crticg0 ;
	s1d13806_reg_desc.crticr0 = Display_conf_list[conf].crticr0 ;
	s1d13806_reg_desc.crticb1 = Display_conf_list[conf].crticb1 ;
	s1d13806_reg_desc.crticg1 = Display_conf_list[conf].crticg1 ;
	s1d13806_reg_desc.crticr1 = Display_conf_list[conf].crticr1 ;
	s1d13806_reg_desc.lutm = Display_conf_list[conf].lutm ;
	s1d13806_reg_desc.psc = Display_conf_list[conf].psc ;
	s1d13806_reg_desc.dm = Display_conf_list[conf].dm ;
	s1d13806_display_desc.RegDesc = &s1d13806_reg_desc ;
	s1d13806_display_desc.DisplayDefDesc = &display_def_desc ;
	s1d13806_display_desc.CharDefDesc = &char_def_desc ;
	s1d13806_display_desc.DataDesc = &data_desc ;
	s1d13806_display_desc.s1d13806_base_add = ( int ) s1d13806_base ;
	s1d13806_display_desc.s1d13806_disp_mem_base_add = ( int ) s1d13806_disp_mem_base ;

	//* S1D13806 Initialisation
	s1d13806_base->S1D13806_OnChipReg.OCR_MISC = ( char ) S1D_RME ;	/* Enabling access to the controller */
	s1d13806_base->S1D13806_OnChipReg.OCR_DM = ( char ) S1D_NDM ;		/* Disabling the display outputs */
	s1d13806_base->S1D13806_OnChipReg.OCR_IOCONF = ( short ) s1d13806_display_desc.RegDesc->ioconf ;	/* GPIO Initialization */
	s1d13806_base->S1D13806_OnChipReg.OCR_IOCR = ( short ) s1d13806_display_desc.RegDesc->iocr ;	/* GPIO Initialization */

	//* Program the Clock Source selects
	s1d13806_base->S1D13806_OnChipReg.OCR_MCLK = ( char ) s1d13806_display_desc.RegDesc->mclk ;	/* Memory Clock Initialization */
	s1d13806_base->S1D13806_OnChipReg.OCR_LCDCLK = ( char ) s1d13806_display_desc.RegDesc->lcdclk ;
	s1d13806_base->S1D13806_OnChipReg.OCR_CRTPCLK = ( char ) s1d13806_display_desc.RegDesc->crtpclk ;
	s1d13806_base->S1D13806_OnChipReg.OCR_MPCLK = ( char ) s1d13806_display_desc.RegDesc->mpclk ;

	s1d13806_base->S1D13806_OnChipReg.OCR_NWS = ( char ) s1d13806_display_desc.RegDesc->nws ;	/* Setup CPU Wait States */

	//* Program 200us temporizing period
	initial_timeout = AT91F_GetTickCount();
	while( AT91F_GetTickCount() < initial_timeout + TIMEOUT_OF_200us);

	//* Configure the memory interface
	s1d13806_base->S1D13806_OnChipReg.OCR_REFC = ( char ) s1d13806_display_desc.RegDesc->refc ;	/* SDRAM Refresh Counter */
	s1d13806_base->S1D13806_OnChipReg.OCR_SDRAM = ( short ) s1d13806_display_desc.RegDesc->sdram ;/* SDRAM Timing Control */
	s1d13806_base->S1D13806_OnChipReg.OCR_MEM = ( char ) S1D_SDRAM_INIT ;	/* Memory Configuration */

	//* Program the LCD panel type and panel timing registers
	s1d13806_base->S1D13806_OnChipReg.OCR_PTYPE = ( char ) s1d13806_display_desc.RegDesc->ptype ;	/* Panel Configuration Register */
	s1d13806_base->S1D13806_OnChipReg.OCR_MOD = ( char ) s1d13806_display_desc.RegDesc->mod ;		/* Mode Rate */
	s1d13806_base->S1D13806_OnChipReg.OCR_LCDHDW = ( char ) ( ( s1d13806_display_desc.DisplayDefDesc->hdw/8 ) - 1 ) ;	/* Horizontal Display Width */
	s1d13806_base->S1D13806_OnChipReg.OCR_LCDHNDP = ( char ) s1d13806_display_desc.RegDesc->lcdhndp ;	/* Horizontal Non-Display Period */
	s1d13806_base->S1D13806_OnChipReg.OCR_TFTFPSP = ( char ) s1d13806_display_desc.RegDesc->tftfpsp ;	/* FPLINE Start Position */
	s1d13806_base->S1D13806_OnChipReg.OCR_TFTFPPW = ( char ) s1d13806_display_desc.RegDesc->tftfppw ;	/* FPLINE Pulse Width */
	s1d13806_base->S1D13806_OnChipReg.OCR_LCDVDH = ( short ) ( s1d13806_display_desc.DisplayDefDesc->vdw - 1 ) ;	/* Vertical Display Height */
	s1d13806_base->S1D13806_OnChipReg.OCR_LCDVNDP = ( char ) s1d13806_display_desc.RegDesc->lcdvndp ;	/* Vertical Non-Display Period */
	s1d13806_base->S1D13806_OnChipReg.OCR_LCDFPSP = ( char ) s1d13806_display_desc.RegDesc->lcdfpsp ;	/* FPFRAME Start Position */
	s1d13806_base->S1D13806_OnChipReg.OCR_LCDFPPW = ( char ) s1d13806_display_desc.RegDesc->lcdfppw ;	/* FPFRAME Pulse Width */

	//* Program the LCD display output format, memory start locations and FIFO values
	s1d13806_base->S1D13806_OnChipReg.OCR_LCDDM = ( char ) s1d13806_display_desc.RegDesc->lcddm ;	/* LCD Display Mode */
	s1d13806_base->S1D13806_OnChipReg.OCR_LCDM = ( char ) s1d13806_display_desc.RegDesc->lcdm ;		/* LCD Miscellaneous */

	s1d13806_base->S1D13806_OnChipReg.OCR_LCDDBA_0 = ( char ) 0x00 ;	/* LCD display start address */
	s1d13806_base->S1D13806_OnChipReg.OCR_LCDDBA_1 = ( char ) 0x00 ;	/* LCD display start address */
	s1d13806_base->S1D13806_OnChipReg.OCR_LCDDBA_2 = ( char ) 0x00 ;	/* LCD display start address */

	s1d13806_base->S1D13806_OnChipReg.OCR_LCDMAO = ( short ) s1d13806_display_desc.RegDesc->lcdmao ;	/* LCD memory address offset */

	s1d13806_base->S1D13806_OnChipReg.OCR_LCDPP = ( char ) 0x00 ;		/* LCD Pixel Panning */

	s1d13806_base->S1D13806_OnChipReg.OCR_LCDDFHTC = ( char ) 0x3B ;	/* LCD Display FIFO High Treshold CR */

⌨️ 快捷键说明

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