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); }
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; }
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; }
void lcd_set_RW(unsigned uValue) { sunxi_gpio_output(SUNXI_GPG(11), uValue); }
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