예제 #1
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;
}
예제 #2
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);
}
예제 #3
0
파일: i2c.c 프로젝트: lxmlx/pcduino-test
void i2c_init(int speed, int slaveaddr)
{
	int timeout = 0x2ff;

	sunxi_gpio_set_cfgpin(SUNXI_GPB(0), 2);
	sunxi_gpio_set_cfgpin(SUNXI_GPB(1), 2);
	clock_twi_onoff(0, 1);

	/* Enable the i2c bus */
	writel(TWI_CTL_BUSEN, &i2c_base->ctl);

	/* 400KHz operation M=2, N=1, 24MHz APB clock */
	writel(TWI_CLK_DIV(2, 1), &i2c_base->clkr);
	writel(TWI_SRST_SRST, &i2c_base->reset);

	while ((readl(&i2c_base->reset) & TWI_SRST_SRST) && timeout--);
}
예제 #4
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;
}
예제 #5
0
void lcd_set_E(unsigned uValue) {
	sunxi_gpio_output(SUNXI_GPB(1), uValue);
}
예제 #6
0
static volatile int    pinPass = -1 ;
static volatile char    pinPassName[10] = {};
static pthread_mutex_t pinMutex ;

// ISR Data

static void (*isrFunctions [278])(void) ;

static int pinToGpio[278] =
{
  SUNXI_GPA(0), SUNXI_GPA(1), SUNXI_GPA(2), SUNXI_GPA(3), SUNXI_GPA(4), SUNXI_GPA(5),
  SUNXI_GPA(6), SUNXI_GPA(7), SUNXI_GPA(8), SUNXI_GPA(9), SUNXI_GPA(10), SUNXI_GPA(11),
  SUNXI_GPA(12), SUNXI_GPA(13), SUNXI_GPA(14), SUNXI_GPA(15), SUNXI_GPA(16), SUNXI_GPA(17),
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  SUNXI_GPB(0), SUNXI_GPB(1), SUNXI_GPB(2), SUNXI_GPB(3), SUNXI_GPB(4), SUNXI_GPB(5),
  SUNXI_GPB(6), SUNXI_GPB(7), SUNXI_GPB(8), SUNXI_GPB(9), SUNXI_GPB(10), SUNXI_GPB(11),
  SUNXI_GPB(12), SUNXI_GPB(13), SUNXI_GPB(14), SUNXI_GPB(15), SUNXI_GPB(16), SUNXI_GPB(17),
  SUNXI_GPB(18), SUNXI_GPB(19), SUNXI_GPB(20), SUNXI_GPB(21), SUNXI_GPB(22), SUNXI_GPB(23),
  -1, -1, -1, -1, -1, -1, -1, -1,
  SUNXI_GPC(0), SUNXI_GPC(1), SUNXI_GPC(2), SUNXI_GPC(3), SUNXI_GPC(4), SUNXI_GPC(5),
  SUNXI_GPC(6), SUNXI_GPC(7), SUNXI_GPC(8), SUNXI_GPC(9), SUNXI_GPC(10), SUNXI_GPC(11),
  SUNXI_GPC(12), SUNXI_GPC(13), SUNXI_GPC(14), SUNXI_GPC(15), SUNXI_GPC(16), SUNXI_GPC(17),
  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),