예제 #1
0
void lcd_set_data(unsigned uValue) {

	sunxi_gpio_output(SUNXI_GPG(10), uValue & 0x01);
	sunxi_gpio_output(SUNXI_GPG(9),  uValue & 0x02);
	sunxi_gpio_output(SUNXI_GPB(3),  uValue & 0x04);
	sunxi_gpio_output(SUNXI_GPE(11), uValue & 0x08);
	sunxi_gpio_output(SUNXI_GPB(4),  uValue & 0x10);
	sunxi_gpio_output(SUNXI_GPE(10), uValue & 0x20);
	sunxi_gpio_output(SUNXI_GPE(9),  uValue & 0x40);
	sunxi_gpio_output(SUNXI_GPE(8),  uValue & 0x80);
}
예제 #2
0
int init_lcd_pin_direction() {
//	GPIO2			LCD
//	1 	+5V 	-> 	2 VDD
//	2 	Ground 	->	1 GND
//
//	3 	+3.3V	EMPTY
//	4 	Ground	EMPTY
//
//
//	5 	PB0 (TWI0-SCK)	->	4 RS
//	6 	PG11 (USBH_EN)	->	5 R/W
//	7 	PB1 (TWI0-SDA) 	->	6 E
//
//	8 	PG10 (VGA_DIS)	->	7 DB0
//	10 	PG9 (LED1)		->	8 DB1
//	11 	PB3 			->  9 DB2
//	12 	PE11			->  10 DB3
//	13 	PB4 			->  11 DB4
//	14 	PE10			->  12 DB5
//	16 	PE9				->  13 DB6
//	18 	PE8				->  14 DB7

	//	9 	PB2 (PWM0) 		ERROR
	//	15 	PB10 			ERROR
	//	17 	PB15 (TWI1-SCK) ERROR
	int ret;

	//init gpio
	ret = sunxi_gpio_init();
	if(ret) {
		printf("sunxi_gpio_init ERROR\n");
		return -1;
	}
/*	//RS, R/W, E
	sunxi_gpio_set_cfgpin(SUNXI_GPB(0), SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPG(11), SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPB(1), SUNXI_GPIO_OUTPUT);

	//DB0 - DB7
	sunxi_gpio_set_cfgpin(SUNXI_GPG(10), SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPG(9),  SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPB(3),  SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPE(11), SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPB(4),  SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPE(10), SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPE(9),  SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPE(8),  SUNXI_GPIO_OUTPUT);
*/
	sunxi_gpio_set_cfgpin(SUNXI_GPA(0),  SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPA(1),  SUNXI_GPIO_OUTPUT);

	sunxi_gpio_set_cfgpin(SUNXI_GPB(0),  SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPB(1),  SUNXI_GPIO_OUTPUT);

	sunxi_gpio_set_cfgpin(SUNXI_GPI(0),  SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPI(1),  SUNXI_GPIO_OUTPUT);

	sunxi_gpio_set_cfgpin(SUNXI_GPG(9),  SUNXI_GPIO_OUTPUT);
	return 0;
}
예제 #3
0
int main(int argc, const char* argv[] ) {

	//30ms delay
	delay(30);

	init_lcd_pin_direction();
	delay(30);
/*
	lcd_set_RS(0);
	lcd_set_RW(0);
	lcd_set_E(0);
	lcd_set_data(0x3A);

	lcd_set_E(1);
	delay(30);
	lcd_set_E(0);

	lcd_set_data(0x0F);

	lcd_set_E(1);
	delay(30);
	lcd_set_E(0);
*/
	int pin;
	char *port;
	int i, k, val;
	val = 0;

	printf("app startup\n");
	printf("argv[1]:%s  argv[2]:%s\n", argv[1], argv[2]);

	port = argv[1];
	pin = atoi(argv[2]);

	printf("port:%s\n",port);
	printf("pin:%d\n",pin);

	if(!strcmp(port, "G")) {
		while(1) {
			//sunxi_gpio_output(SUNXI_GPG(9),  0);
			sunxi_gpio_output(SUNXI_GPG(pin),  0);
			delay(3000);
			//sunxi_gpio_output(SUNXI_GPG(9),  1);
			sunxi_gpio_output(SUNXI_GPG(pin),  1);
			delay(3000);
		};
	}
	else if(!strcmp(port, "A")) {
		while(1) {
			sunxi_gpio_output(SUNXI_GPA(pin),  0);
			//sunxi_gpio_output(SUNXI_GPA(pin),  0);
			delay(3000);
			sunxi_gpio_output(SUNXI_GPA(pin),  1);
			//sunxi_gpio_output(SUNXI_GPA(pin),  1);
			delay(3000);
		};
	}
	else if(!strcmp(port, "B")) {
		while(1) {
			sunxi_gpio_output(SUNXI_GPB(pin),  0);
			//sunxi_gpio_output(SUNXI_GPA(pin),  0);
			delay(3000);
			sunxi_gpio_output(SUNXI_GPB(pin),  1);
			//sunxi_gpio_output(SUNXI_GPA(pin),  1);
			delay(3000);
		};
	}
	else if(!strcmp(port, "I")) {
		while(1) {
			sunxi_gpio_output(SUNXI_GPI(pin),  0);
			//sunxi_gpio_output(SUNXI_GPA(pin),  0);
			delay(3000);
			sunxi_gpio_output(SUNXI_GPI(pin),  1);
			//sunxi_gpio_output(SUNXI_GPA(pin),  1);
			delay(3000);
		};
	}
	return 0;
}
예제 #4
0
void lcd_set_RW(unsigned uValue) {
	sunxi_gpio_output(SUNXI_GPG(11), uValue);
}
예제 #5
0
  SUNXI_GPC(18), SUNXI_GPC(19), SUNXI_GPC(20), SUNXI_GPC(21), SUNXI_GPC(22), SUNXI_GPC(23),
  SUNXI_GPC(24),
  -1, -1, -1, -1, -1, -1, -1,
  SUNXI_GPD(0), SUNXI_GPD(1), SUNXI_GPD(2), SUNXI_GPD(3), SUNXI_GPD(4), SUNXI_GPD(5),
  SUNXI_GPD(6), SUNXI_GPD(7), SUNXI_GPD(8), SUNXI_GPD(9), SUNXI_GPD(10), SUNXI_GPD(11),
  SUNXI_GPD(12), SUNXI_GPD(13), SUNXI_GPD(14), SUNXI_GPD(15), SUNXI_GPD(16), SUNXI_GPD(17),
  SUNXI_GPD(18), SUNXI_GPD(19), SUNXI_GPD(20), SUNXI_GPD(21), SUNXI_GPD(22), SUNXI_GPD(23),
  SUNXI_GPD(24), SUNXI_GPD(25), SUNXI_GPD(26), SUNXI_GPD(27),
  -1, -1, -1, -1,
  SUNXI_GPE(0), SUNXI_GPE(1), SUNXI_GPE(2), SUNXI_GPE(3), SUNXI_GPE(4), SUNXI_GPE(5),
  SUNXI_GPE(6), SUNXI_GPE(7), SUNXI_GPE(8), SUNXI_GPE(9), SUNXI_GPE(10), SUNXI_GPE(11),
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  SUNXI_GPF(0), SUNXI_GPF(1), SUNXI_GPF(2), SUNXI_GPF(3), SUNXI_GPF(4), SUNXI_GPF(5),
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1,
  SUNXI_GPG(0), SUNXI_GPG(1), SUNXI_GPG(2), SUNXI_GPG(3), SUNXI_GPG(4), SUNXI_GPG(5),
  SUNXI_GPG(6), SUNXI_GPG(7), SUNXI_GPG(8), SUNXI_GPG(9), SUNXI_GPG(10), SUNXI_GPG(11),
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  SUNXI_GPH(0), SUNXI_GPH(1), SUNXI_GPH(2), SUNXI_GPH(3), SUNXI_GPH(4), SUNXI_GPH(5),
  SUNXI_GPH(6), SUNXI_GPH(7), SUNXI_GPH(8), SUNXI_GPH(9), SUNXI_GPH(10), SUNXI_GPH(11),
  SUNXI_GPH(12), SUNXI_GPH(13), SUNXI_GPH(14), SUNXI_GPH(15), SUNXI_GPH(16), SUNXI_GPH(17),
  SUNXI_GPH(18), SUNXI_GPH(19), SUNXI_GPH(20), SUNXI_GPH(21), SUNXI_GPH(22), SUNXI_GPH(23),
  SUNXI_GPH(24), SUNXI_GPH(25), SUNXI_GPH(26), SUNXI_GPH(27),
  -1, -1, -1, -1,
  SUNXI_GPI(0), SUNXI_GPI(1), SUNXI_GPI(2), SUNXI_GPI(3), SUNXI_GPI(4), SUNXI_GPI(5),
  SUNXI_GPI(6), SUNXI_GPI(7), SUNXI_GPI(8), SUNXI_GPI(9), SUNXI_GPI(10), SUNXI_GPI(11),
  SUNXI_GPI(12), SUNXI_GPI(13), SUNXI_GPI(14), SUNXI_GPI(15), SUNXI_GPI(16), SUNXI_GPI(17),
  SUNXI_GPI(18), SUNXI_GPI(19), SUNXI_GPI(20), SUNXI_GPI(21)
};

// Translation between pin number and gpio number from fex