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

📄 lcdspi.c

📁 Samsung LCD驱动(SPI接口)
💻 C
📖 第 1 页 / 共 2 页
字号:
void spi_write_gram(unsigned short data){	unsigned char bytes[3] = {0,0,0};	spi_select_register(0x22);	bytes[0] = START_BYTE(RS_CONTROL_REGISTER, RW_WRITE);	// = 0x76	bytes[1] = (unsigned char)(data>>8);	bytes[2] = (unsigned char)data;	spi_transaction(bytes,3);}void delay_100us(void){ 	udelay(100);}void delay_10ms(void){	mdelay(10);}void delay_20ms(void){	mdelay(20);}	void delay_100ms(void){	mdelay(100);}	void LCDWriteReg(unsigned short R){#ifdef Samsung_22	unsigned char bytes[2]={0,0};	unsigned char byte_zero[1]={0};	bytes[0] = (unsigned char)(R>>8);	bytes[1] = (unsigned char)R;	//2 Send Option 1: 8bit or 16bit	//2 Send Option 2: data sequence	//2 Send Option 3: drive RS manually 	//GPCR2 |= GPIO_bit(77);	spi_transaction(bytes, 1);	//spi_transaction(byte_zero, 1);	//GPSR2 |= GPIO_bit(77);	spi_transaction(&bytes[1], 1);	//spi_transaction(byte_zero, 1);#else	unsigned short index = (R >> 8);	unsigned short data = (R & 0xff);		spi_write_register(index, data);#endif}void   SS_22_PowerSetting_1(void){	delay_100us();	LCDWriteReg(0x2201);    	delay_100us();	LCDWriteReg(0x0301);}void   SS_22_PowerSetting_2(void){	delay_20ms();	LCDWriteReg(0x1d08);     	delay_20ms(); 	delay_20ms();  	LCDWriteReg(0x2300);        		delay_20ms();	LCDWriteReg(0x2494);        		delay_20ms();	LCDWriteReg(0x256f);      	delay_20ms();    	}void   SS_22_PowerSetting_3(void){	LCDWriteReg(0x281e);    	delay_20ms();	LCDWriteReg(0x1a00);        		delay_20ms();	LCDWriteReg(0x2110);        		delay_20ms();	LCDWriteReg(0x1825);        		delay_20ms();	delay_20ms();    		LCDWriteReg(0x1948);        		delay_20ms();	LCDWriteReg(0x18e5);        		delay_20ms();	delay_20ms();     	LCDWriteReg(0x18f7);        		delay_20ms();	delay_20ms();    	LCDWriteReg(0x1b07);        		delay_20ms();	delay_20ms();    	LCDWriteReg(0x1f5a);    	delay_20ms();	LCDWriteReg(0x2054);        		delay_20ms();	LCDWriteReg(0x1ec1);        		delay_20ms();	delay_20ms();    	LCDWriteReg(0x2100);        		delay_100us();	LCDWriteReg(0x3b01);        		delay_20ms();	delay_20ms();    	LCDWriteReg(0x0020);        		delay_20ms();	LCDWriteReg(0x0201);        		delay_20ms();	delay_20ms();}void SS_22_InitialFunction_1(void){	LCDWriteReg(0x00a0);    	delay_100us();	LCDWriteReg(0x0110);        		delay_100us();	LCDWriteReg(0x0200);        	delay_20ms();	LCDWriteReg(0x0500);        		delay_20ms();	LCDWriteReg(0x0d00);        		delay_20ms();	delay_20ms();}void SS_22_InitialFunction_2(void){  	LCDWriteReg(0x0e00);    	delay_100us();	LCDWriteReg(0x0f00);        		delay_100us();	LCDWriteReg(0x1000);        		delay_100us();	LCDWriteReg(0x1100);	delay_100us();	LCDWriteReg(0x1200);    	delay_100us(); 	LCDWriteReg(0x1300);    		delay_100us();	LCDWriteReg(0x1400);    		delay_100us();	LCDWriteReg(0x1500);	delay_100us();	LCDWriteReg(0x1600);    		delay_100us();	LCDWriteReg(0x1700);    		delay_100us();	LCDWriteReg(0x3401);    		delay_100us();       	LCDWriteReg(0x3500);    	}void SS_22_InitialFunction_3(void){ 	LCDWriteReg(0x8d01);	delay_100us();	LCDWriteReg(0x8b28);    		delay_100us();	LCDWriteReg(0x4b00);    		delay_100us();	LCDWriteReg(0x4c00);    		delay_100us();	LCDWriteReg(0x4d00);    		delay_100us();	LCDWriteReg(0x4e00);    		delay_100us();	LCDWriteReg(0x4f00);    		delay_100us();	LCDWriteReg(0x5000);    		delay_100us();	LCDWriteReg(0x8600);    		delay_100us();	LCDWriteReg(0x8726);    		delay_100us();	LCDWriteReg(0x8802);    		delay_100us();	LCDWriteReg(0x8905);    		delay_100us();	LCDWriteReg(0x3301);    		delay_100us();	LCDWriteReg(0x3706);    		delay_100us();	LCDWriteReg(0x7600);    		delay_100us();}void SS_22_InitialFunction_4(void){   	LCDWriteReg(0x4200);	delay_100us();	LCDWriteReg(0x4300);    		delay_100us();	LCDWriteReg(0x4400);    		delay_100us();	LCDWriteReg(0x4500);    		delay_100us();	LCDWriteReg(0x46ef);    		delay_100us();	LCDWriteReg(0x4700);    		delay_100us();	LCDWriteReg(0x4800);    		delay_100us();	LCDWriteReg(0x4901);    		delay_100us();	LCDWriteReg(0x4a3f);    		delay_100us();	LCDWriteReg(0x3c00);    		delay_100us();	LCDWriteReg(0x3d00);    		delay_100us();	LCDWriteReg(0x3e01);    		delay_100us();	LCDWriteReg(0x3f3f);    		delay_100us();	LCDWriteReg(0x4001);    		delay_100us();	LCDWriteReg(0x410a);    		delay_100us();}void SS_22_InitialFunction_5(void){  	LCDWriteReg(0x8f05);    	  	delay_100us();	LCDWriteReg(0x9005);	delay_100us();	LCDWriteReg(0x9144);    		delay_100us();	LCDWriteReg(0x9244);    		delay_100us();	LCDWriteReg(0x9344);	delay_100us();	LCDWriteReg(0x9433);    		delay_100us();	LCDWriteReg(0x9505);    		delay_100us();	LCDWriteReg(0x9605);    		delay_100us();	LCDWriteReg(0x9744);    		delay_100us();	LCDWriteReg(0x9844);    		delay_100us();	LCDWriteReg(0x9944);    		delay_100us(); 	LCDWriteReg(0x9a33);    		delay_100us();	LCDWriteReg(0x9b33);    		delay_100us();	LCDWriteReg(0x9c33);    		delay_100us();	LCDWriteReg(0x9d80);    		delay_100us();}void Samsung_LCM_22(void){	  	delay_10ms();	SS_22_PowerSetting_1();		SS_22_InitialFunction_1();	delay_20ms();	delay_20ms(); //delay 40ms    	SS_22_InitialFunction_2();    	delay_20ms();	delay_20ms(); //delay 40ms	SS_22_InitialFunction_3();   	delay_20ms();	delay_20ms(); //delay 40ms 	SS_22_InitialFunction_4();  		delay_20ms();	delay_20ms(); //delay 40ms 	SS_22_InitialFunction_5();  		delay_20ms();	delay_20ms(); //delay 40ms   	SS_22_PowerSetting_2();		delay_20ms();	delay_20ms(); //delay 40ms   	SS_22_PowerSetting_3();	   }static int __init modinit(void){	//unsigned int reg;	//unsigned int *io_base;	//SSP3 ioremap	printk("It's me, Leon\n");		/* The example code below display how register was mapped to memory */	/*	printk("GPDR0=%08x\n", GPDR0);	//__REG(0x40E0000C)	reg = 0xf2e0000c;	printk("GPDR0=%08x\n", *((unsigned int *)reg) );	*/	/* If SSP3 registers have not been mapped to memory, we can still handle that */	/*	io_base = ioremap(0x41900000, 0x1000);	printk("io_base=%08x\n", io_base);	printk("SSP3_SSCR0=%08x\n", *io_base);	*/		printk("SSP3_SSCR0=%08x\n", SSP3_SSCR0);	/* We should set RS low */	GAFR2_L &= 0xf3ffffff;	//L_BIAS GPIO 77	GPCR2 |= GPIO_bit(77);	ssp3_enable();	mdelay(2000);	Samsung_LCM_22();		printk("GAFR2_U=%08x\n", GAFR2_U);	printk("GAFR1_U=%08x\n", GAFR1_U);	printk("SSP3_SSCR0=%08x\n", SSP3_SSCR0);	printk("SSP3_SSCR1=%08x\n", SSP3_SSCR1);	printk("SSP3_SSSR=%08x\n", SSP3_SSSR);	/* Fixme: We might restore RS original setting */	//GAFR2_L |= 0x08000000;	//L_BIAS GPIO 77	return 0;}static void __exit modexit(void){	ssp3_disable();}module_init(modinit);module_exit(modexit);

⌨️ 快捷键说明

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