📄 s1d13806.c
字号:
,0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00 ,0x00,0x00,0x00
,0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00 ,0x00,0x00,0x00
,0x00,0x00,0x00, 0x11,0x11,0x11, 0x22,0x22,0x22 ,0x33,0x33,0x33
,0x44,0x44,0x44, 0x55,0x55,0x55, 0x66,0x66,0x66 ,0x77,0x77,0x77
,0x88,0x88,0x88, 0x99,0x99,0x99, 0xAA,0xAA,0xAA ,0xBB,0xBB,0xBB
,0xCC,0xCC,0xCC, 0xDD,0xDD,0xDD, 0xEE,0xEE,0xEE ,0xFF,0xFF,0xFF
,0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00 ,0x00,0x00,0x00
,0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00 ,0x00,0x00,0x00
,0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00 ,0x00,0x00,0x00
,0x00,0x00,0x99, 0x33,0x00,0x99, 0x66,0x00,0x99 ,0x99,0x00,0x99
,0xCC,0x00,0x99, 0xFF,0x00,0x99, 0x00,0x33,0x99 ,0x33,0x33,0x99
,0x66,0x33,0x99, 0x99,0x33,0x99, 0xCC,0x33,0x99 ,0xFF,0x33,0x99
,0x00,0x66,0x99, 0x33,0x66,0x99, 0x66,0x66,0x99 ,0x99,0x66,0x99
,0xCC,0x66,0x99, 0xFF,0x66,0x99, 0x00,0x99,0x99 ,0x33,0x99,0x99
,0x66,0x99,0x99, 0x99,0x99,0x99, 0xCC,0x99,0x99 ,0xFF,0x99,0x99
,0x00,0xCC,0x99, 0x33,0xCC,0x99, 0x66,0xCC,0x99 ,0x99,0xCC,0x99
,0xCC,0xCC,0x99, 0xFF,0xCC,0x99, 0x00,0xFF,0x99 ,0x33,0xFF,0x99
,0x66,0xFF,0x99, 0x99,0xFF,0x99, 0xCC,0xFF,0x99 ,0xFF,0xFF,0x99
,0x00,0x00,0xCC, 0x33,0x00,0xCC, 0x66,0x00,0xCC ,0x99,0x00,0xCC
,0xCC,0x00,0xCC, 0xFF,0x00,0xCC, 0x00,0x33,0xCC ,0x33,0x33,0xCC
,0x66,0x33,0xCC, 0x99,0x33,0xCC, 0xCC,0x33,0xCC ,0xFF,0x33,0xCC
,0x00,0x66,0xCC, 0x33,0x66,0xCC, 0x66,0x66,0xCC ,0x99,0x66,0xCC
,0xCC,0x66,0xCC, 0xFF,0x66,0xCC, 0x00,0x99,0xCC ,0x33,0x99,0xCC
,0x66,0x99,0xCC, 0x99,0x99,0xCC, 0xCC,0x99,0xCC ,0xFF,0x99,0xCC
,0x00,0xCC,0xCC, 0x33,0xCC,0xCC, 0x66,0xCC,0xCC ,0x99,0xCC,0xCC
,0xCC,0xCC,0xCC, 0xFF,0xCC,0xCC, 0x00,0xFF,0xCC ,0x33,0xFF,0xCC
,0x66,0xFF,0xCC, 0x99,0xFF,0xCC, 0xCC,0xFF,0xCC ,0xFF,0xFF,0xCC
,0x00,0x00,0xFF, 0x33,0x00,0xFF, 0x66,0x00,0xFF ,0x99,0x00,0xFF
,0xCC,0x00,0xFF, 0xFF,0x00,0xFF, 0x00,0x33,0xFF ,0x33,0x33,0xFF
,0x66,0x33,0xFF, 0x99,0x33,0xFF, 0xCC,0x33,0xFF ,0xFF,0x33,0xFF
,0x00,0x66,0xFF, 0x33,0x66,0xFF, 0x66,0x66,0xFF ,0x99,0x66,0xFF
,0xCC,0x66,0xFF, 0xFF,0x66,0xFF, 0x00,0x99,0xFF ,0x33,0x99,0xFF
,0x66,0x99,0xFF, 0x99,0x99,0xFF, 0xCC,0x99,0xFF ,0xFF,0x99,0xFF
,0x00,0xCC,0xFF, 0x33,0xCC,0xFF, 0x66,0xCC,0xFF ,0x99,0xCC,0xFF
,0xCC,0xCC,0xFF, 0xFF,0xCC,0xFF, 0x00,0xFF,0xFF ,0x33,0xFF,0xFF
,0x66,0xFF,0xFF, 0x99,0xFF,0xFF, 0xCC,0xFF,0xFF ,0xFF,0xFF,0xFF
},
};
//* 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 lut_def,
unsigned int mck_khz )
{
unsigned char *display_mem = (unsigned char *) s1d13806_disp_mem_base ;
unsigned int initial_timeout;
unsigned int idx,rgb;
//* Descriptors initialisation
display_def_desc.hdw = Display_def_list[disp_def].hdw ;
display_def_desc.vdw = Display_def_list[disp_def].vdw ;
display_def_desc.pixel = Display_def_list[disp_def].pixel ;
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 */
s1d13806_base->S1D13806_OnChipReg.OCR_LCDDFLTC = ( char ) 0x3C ; /* LCD Display FIFO Low Treshold CR */
//* Program the CRT/TV timing control registers
s1d13806_base->S1D13806_OnChipReg.OCR_CRTHDW = ( char ) ( ( s1d13806_display_desc.DisplayDefDesc->hdw/8 ) - 1 ) ; /* CRT/TV Horizontal Display Width */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTHNDP = ( char ) s1d13806_display_desc.RegDesc->crthndp ; /* CRT/TV Horizontal Non-Display Period */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTHSP = ( char ) s1d13806_display_desc.RegDesc->crthsp ; /* CRT/TV HRTC Start Position */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTHPW = ( char ) s1d13806_display_desc.RegDesc->crthpw ; /* CRT/TV HRTC Pulse Width */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTVDH = ( short ) ( s1d13806_display_desc.DisplayDefDesc->vdw - 1 ) ; /* CRT/TV Vertical Display Height */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTVNDP = ( char ) s1d13806_display_desc.RegDesc->crtvndp ; /* CRT/TV Vertical Non-Display Period */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTVSP = ( char ) s1d13806_display_desc.RegDesc->crtvsp ; /* CRT/TV VRTC Start Position */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTVPW = ( char ) s1d13806_display_desc.RegDesc->crtvpw ; /* CRT/TV VRTC Pulse Width */
s1d13806_base->S1D13806_OnChipReg.OCR_TVOC = ( char ) s1d13806_display_desc.RegDesc->tvoc ; /* TV Output CR */
//* Program the LCD display output format, memory start locations and FIFO values
s1d13806_base->S1D13806_OnChipReg.OCR_CRTDM = ( char ) s1d13806_display_desc.RegDesc->crtdm ; /* CRT/TV Display Mode */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTDBA_0 = ( char ) 0x00 ; /* CRT/TV Display Start Address */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTDBA_1 = ( char ) 0x00 ; /* CRT/TV Display Start Address */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTDBA_2 = ( char ) 0x00 ; /* CRT/TV Display Start Address */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTMAO = ( short ) s1d13806_display_desc.RegDesc->crtmao ; /* CRT/TV Memory Address Offset */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTPP = ( char ) 0x00 ; /* CRT/TV Pixel Panning */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTDFHTC = ( char ) 0x3B ; /* CRT/TV Display FIFO High Treshold CR */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTDFLTC = ( char ) 0x3C ; /* CRT/TV Display FIFO Low Treshold CR */
//* Program the LCD Ink Layer/HW Cursor, Position, Color, and FIFO registers
s1d13806_base->S1D13806_OnChipReg.OCR_LCDICC = ( char ) s1d13806_display_desc.RegDesc->lcdicc ; /* LCD Ink/Cursor */
s1d13806_base->S1D13806_OnChipReg.OCR_LCDICBA = ( char ) s1d13806_display_desc.RegDesc->lcdicba ; /* LCD Ink/Cursor Start Address */
s1d13806_base->S1D13806_OnChipReg.OCR_LCDCXP = ( short ) 0x0000 ; /* LCD Cursor X Position */
s1d13806_base->S1D13806_OnChipReg.OCR_LCDCYP = ( short ) 0x0000 ; /* LCD Cursor Y Position */
s1d13806_base->S1D13806_OnChipReg.OCR_LCDICB_0 = ( char ) s1d13806_display_desc.RegDesc->lcdicb0 ; /* LCD Ink/Cursor Blue Color 0 */
s1d13806_base->S1D13806_OnChipReg.OCR_LCDICG_0 = ( char ) s1d13806_display_desc.RegDesc->lcdicg0 ; /* LCD Ink/Cursor Green Color 0 */
s1d13806_base->S1D13806_OnChipReg.OCR_LCDICR_0 = ( char ) s1d13806_display_desc.RegDesc->lcdicr0 ; /* LCD Ink/Cursor Red Color 0 */
s1d13806_base->S1D13806_OnChipReg.OCR_LCDICB_1 = ( char ) s1d13806_display_desc.RegDesc->lcdicb1 ; /* LCD Ink/Cursor Blue Color 1 */
s1d13806_base->S1D13806_OnChipReg.OCR_LCDICG_1 = ( char ) s1d13806_display_desc.RegDesc->lcdicg1 ; /* LCD Ink/Cursor Green Color 1 */
s1d13806_base->S1D13806_OnChipReg.OCR_LCDICR_1 = ( char ) s1d13806_display_desc.RegDesc->lcdicr1 ; /* LCD Ink/Cursor Red Color 1 */
s1d13806_base->S1D13806_OnChipReg.OCR_LCDICFT = ( char ) 0x00 ; /* LCD Ink/Cursor FIFO High Treshold */
//* Program the CRT/TV Ink Layer/HW Cursor, Position, Color, and FIFO registers
s1d13806_base->S1D13806_OnChipReg.OCR_CRTICC = ( char ) s1d13806_display_desc.RegDesc->crticc ; /* CRT/TV Ink/Cursor CR */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTICBA = ( char ) s1d13806_display_desc.RegDesc->crticba ; /* CRT/TV Ink/Cursor Start Address */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTCXP = ( short ) 0x0000 ; /* CRT/TV Cursor X Position */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTCYP = ( short ) 0x0000 ; /* CRT/TV Cursor Y Position */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTICB_0 = ( char ) s1d13806_display_desc.RegDesc->crticb0 ; /* CRT/TV Ink/Cursor Blue Color 0 */
s1d13806_base->S1D13806_OnChipReg.OCR_CRTICG_0 = ( char ) s1d13806_display_desc.RegDesc->crticg0 ; /* CRT/TV Ink/Cursor Green Color 0 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -