diff --git a/bsp/src/BEAGLESYNTH/bsp.c b/bsp/src/BEAGLESYNTH/bsp.c --- a/bsp/src/BEAGLESYNTH/bsp.c +++ b/bsp/src/BEAGLESYNTH/bsp.c @@ -162,7 +162,7 @@ void bsp_FSMC_init() FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); - /* Enable FSMC NOR/SRAM Bank3 */ + /* Enable FSMC NOR/SRAM Bank1 */ FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); lcdIF0.writereg=&bsp_lcd0_write_reg; lcd0.interface=&lcdIF0; @@ -219,6 +219,10 @@ void bsp_lcd0_write_reg(uint32_t reg,uin { *lcd0_CMD=(uint16_t)reg; *lcd0_DATA=(uint16_t)data; + printf("Write to 0x%x 0x%x\n\r",reg,data); + *lcd0_CMD=(uint16_t)reg; + data = *lcd0_DATA; + printf("Readback to 0x%x 0x%x\n\r",reg,data); } diff --git a/examples/BeagleSynthHello/main.c b/examples/BeagleSynthHello/main.c --- a/examples/BeagleSynthHello/main.c +++ b/examples/BeagleSynthHello/main.c @@ -22,16 +22,35 @@ int main() *regtest=(int16_t)0; printf("LCD ID=%x\n\r",0xFFFF&(*regtest2)); *regtest=(int16_t)ILI9328_REGISTER_ENTRYMODE; - printf("ILI9328_REGISTER_ENTRYMODE=%x\n\r",0xFFFF&(*regtest2)); + *regtest2=(int16_t)0x1008; *regtest=(int16_t)0x20; *regtest2=(int16_t)0x0; *regtest=(int16_t)0x21; *regtest2=(int16_t)0x0; *regtest=(int16_t)0x22; - for(volatile int i=0;i<1024*64;i++) + for(volatile int i=0;i<32;i++) { + *regtest=(int16_t)0x20; *regtest2=(int16_t)i; + *regtest=(int16_t)0x21; + *regtest2=(int16_t)0x0; + *regtest=(int16_t)0x22; + *regtest2=(int16_t)-i; } + *regtest=(int16_t)ILI9328_REGISTER_ENTRYMODE; + *regtest2=(int16_t)0x1018; + + for(volatile int i=0;i<32;i++) + { + *regtest=(int16_t)0x20; + *regtest2=(int16_t)i; + *regtest=(int16_t)0x21; + *regtest2=(int16_t)0x0; + *regtest=(int16_t)0x22; + int16_t test=*regtest2; + printf("DATA@%d=%x\n\r",i,0xFFFF&(*regtest2)); + } + if(-1==ina226open(&ina33VSens,i2c2,INA226_MODE_SHUNT_VOLTAGE_CONTINUOUS|INA226_AVERAGES_16|INA226_BUS_CONV_8244us|INA226_SHUNT_CONV_8244us,0,1,15,1000000)) { printf("Can't open 3.3V monitor\n\r"); diff --git a/lib/includes/GRAPHIC/CONTROLERS/ili9328.h b/lib/includes/GRAPHIC/CONTROLERS/ili9328.h --- a/lib/includes/GRAPHIC/CONTROLERS/ili9328.h +++ b/lib/includes/GRAPHIC/CONTROLERS/ili9328.h @@ -24,60 +24,61 @@ #include #include +#include extern int ili9328init(struct LCD_t* LCD); extern void ili9328paint_t(LCD_t* LCD,void* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height); -#define ILI9328_REGISTER_DRIVERCODEREAD ((uint16_t) 0x0000 ) -#define ILI9328_REGISTER_DRIVEROUTPUTCONTROL1 ((uint16_t) 0x0001 ) -#define ILI9328_REGISTER_LCDDRIVINGCONTROL ((uint16_t) 0x0002 ) -#define ILI9328_REGISTER_ENTRYMODE ((uint16_t) 0x0003 ) -#define ILI9328_REGISTER_RESIZECONTROL ((uint16_t) 0x0004 ) -#define ILI9328_REGISTER_DISPLAYCONTROL1 ((uint16_t) 0x0007 ) -#define ILI9328_REGISTER_DISPLAYCONTROL2 ((uint16_t) 0x0008 ) -#define ILI9328_REGISTER_DISPLAYCONTROL3 ((uint16_t) 0x0009 ) -#define ILI9328_REGISTER_DISPLAYCONTROL4 ((uint16_t) 0x000A ) -#define ILI9328_REGISTER_RGBDISPLAYINTERFACECONTROL1 ((uint16_t) 0x000C ) -#define ILI9328_REGISTER_FRAMEMAKERPOSITION ((uint16_t) 0x000D ) -#define ILI9328_REGISTER_RGBDISPLAYINTERFACECONTROL2 ((uint16_t) 0x000F ) -#define ILI9328_REGISTER_POWERCONTROL1 ((uint16_t) 0x0010 ) -#define ILI9328_REGISTER_POWERCONTROL2 ((uint16_t) 0x0011 ) -#define ILI9328_REGISTER_POWERCONTROL3 ((uint16_t) 0x0012 ) -#define ILI9328_REGISTER_POWERCONTROL4 ((uint16_t) 0x0013 ) -#define ILI9328_REGISTER_HORIZONTALGRAMADDRESSSET ((uint16_t) 0x0020 ) -#define ILI9328_REGISTER_VERTICALGRAMADDRESSSET ((uint16_t) 0x0021 ) -#define ILI9328_REGISTER_WRITEDATATOGRAM ((uint16_t) 0x0022 ) -#define ILI9328_REGISTER_POWERCONTROL7 ((uint16_t) 0x0029 ) -#define ILI9328_REGISTER_FRAMERATEANDCOLORCONTROL ((uint16_t) 0x002B ) -#define ILI9328_REGISTER_GAMMACONTROL1 ((uint16_t) 0x0030 ) -#define ILI9328_REGISTER_GAMMACONTROL2 ((uint16_t) 0x0031 ) -#define ILI9328_REGISTER_GAMMACONTROL3 ((uint16_t) 0x0032 ) -#define ILI9328_REGISTER_GAMMACONTROL4 ((uint16_t) 0x0035 ) -#define ILI9328_REGISTER_GAMMACONTROL5 ((uint16_t) 0x0036 ) -#define ILI9328_REGISTER_GAMMACONTROL6 ((uint16_t) 0x0037 ) -#define ILI9328_REGISTER_GAMMACONTROL7 ((uint16_t) 0x0038 ) -#define ILI9328_REGISTER_GAMMACONTROL8 ((uint16_t) 0x0039 ) -#define ILI9328_REGISTER_GAMMACONTROL9 ((uint16_t) 0x003C ) -#define ILI9328_REGISTER_GAMMACONTROL10 ((uint16_t) 0x003D ) -#define ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION ((uint16_t) 0x0050 ) -#define ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION ((uint16_t) 0x0051 ) -#define ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION ((uint16_t) 0x0052 ) -#define ILI9328_REGISTER_VERTICALADDRESSENDPOSITION ((uint16_t) 0x0053 ) -#define ILI9328_REGISTER_DRIVEROUTPUTCONTROL2 ((uint16_t) 0x0060 ) -#define ILI9328_REGISTER_BASEIMAGEDISPLAYCONTROL ((uint16_t) 0x0061 ) -#define ILI9328_REGISTER_VERTICALSCROLLCONTROL ((uint16_t) 0x006A ) -#define ILI9328_REGISTER_PARTIALIMAGE1DISPLAYPOSITION ((uint16_t) 0x0080 ) -#define ILI9328_REGISTER_PARTIALIMAGE1AREASTARTLINE ((uint16_t) 0x0081 ) -#define ILI9328_REGISTER_PARTIALIMAGE1AREAENDLINE ((uint16_t) 0x0082 ) -#define ILI9328_REGISTER_PARTIALIMAGE2DISPLAYPOSITION ((uint16_t) 0x0083 ) -#define ILI9328_REGISTER_PARTIALIMAGE2AREASTARTLINE ((uint16_t) 0x0084 ) -#define ILI9328_REGISTER_PARTIALIMAGE2AREAENDLINE ((uint16_t) 0x0085 ) -#define ILI9328_REGISTER_PANELINTERFACECONTROL1 ((uint16_t) 0x0090 ) -#define ILI9328_REGISTER_PANELINTERFACECONTROL2 ((uint16_t) 0x0092 ) -#define ILI9328_REGISTER_PANELINTERFACECONTROL4 ((uint16_t) 0x0095 ) -#define ILI9328_REGISTER_OTPVCMPROGRAMMINGCONTROL ((uint16_t) 0x00A1 ) -#define ILI9328_REGISTER_OTPVCMSTATUSANDENABLE ((uint16_t) 0x00A2 ) -#define ILI9328_REGISTER_OTPPROGRAMMINGIDKEY ((uint16_t) 0x00A5 ) +#define ILI9328_REGISTER_DRIVERCODEREAD ((uint32_t) 0x0000 ) +#define ILI9328_REGISTER_DRIVEROUTPUTCONTROL1 ((uint32_t) 0x0001 ) +#define ILI9328_REGISTER_LCDDRIVINGCONTROL ((uint32_t) 0x0002 ) +#define ILI9328_REGISTER_ENTRYMODE ((uint32_t) 0x0003 ) +#define ILI9328_REGISTER_RESIZECONTROL ((uint32_t) 0x0004 ) +#define ILI9328_REGISTER_DISPLAYCONTROL1 ((uint32_t) 0x0007 ) +#define ILI9328_REGISTER_DISPLAYCONTROL2 ((uint32_t) 0x0008 ) +#define ILI9328_REGISTER_DISPLAYCONTROL3 ((uint32_t) 0x0009 ) +#define ILI9328_REGISTER_DISPLAYCONTROL4 ((uint32_t) 0x000A ) +#define ILI9328_REGISTER_RGBDISPLAYINTERFACECONTROL1 ((uint32_t) 0x000C ) +#define ILI9328_REGISTER_FRAMEMAKERPOSITION ((uint32_t) 0x000D ) +#define ILI9328_REGISTER_RGBDISPLAYINTERFACECONTROL2 ((uint32_t) 0x000F ) +#define ILI9328_REGISTER_POWERCONTROL1 ((uint32_t) 0x0010 ) +#define ILI9328_REGISTER_POWERCONTROL2 ((uint32_t) 0x0011 ) +#define ILI9328_REGISTER_POWERCONTROL3 ((uint32_t) 0x0012 ) +#define ILI9328_REGISTER_POWERCONTROL4 ((uint32_t) 0x0013 ) +#define ILI9328_REGISTER_HORIZONTALGRAMADDRESSSET ((uint32_t) 0x0020 ) +#define ILI9328_REGISTER_VERTICALGRAMADDRESSSET ((uint32_t) 0x0021 ) +#define ILI9328_REGISTER_WRITEDATATOGRAM ((uint32_t) 0x0022 ) +#define ILI9328_REGISTER_POWERCONTROL7 ((uint32_t) 0x0029 ) +#define ILI9328_REGISTER_FRAMERATEANDCOLORCONTROL ((uint32_t) 0x002B ) +#define ILI9328_REGISTER_GAMMACONTROL1 ((uint32_t) 0x0030 ) +#define ILI9328_REGISTER_GAMMACONTROL2 ((uint32_t) 0x0031 ) +#define ILI9328_REGISTER_GAMMACONTROL3 ((uint32_t) 0x0032 ) +#define ILI9328_REGISTER_GAMMACONTROL4 ((uint32_t) 0x0035 ) +#define ILI9328_REGISTER_GAMMACONTROL5 ((uint32_t) 0x0036 ) +#define ILI9328_REGISTER_GAMMACONTROL6 ((uint32_t) 0x0037 ) +#define ILI9328_REGISTER_GAMMACONTROL7 ((uint32_t) 0x0038 ) +#define ILI9328_REGISTER_GAMMACONTROL8 ((uint32_t) 0x0039 ) +#define ILI9328_REGISTER_GAMMACONTROL9 ((uint32_t) 0x003C ) +#define ILI9328_REGISTER_GAMMACONTROL10 ((uint32_t) 0x003D ) +#define ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION ((uint32_t) 0x0050 ) +#define ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION ((uint32_t) 0x0051 ) +#define ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION ((uint32_t) 0x0052 ) +#define ILI9328_REGISTER_VERTICALADDRESSENDPOSITION ((uint32_t) 0x0053 ) +#define ILI9328_REGISTER_DRIVEROUTPUTCONTROL2 ((uint32_t) 0x0060 ) +#define ILI9328_REGISTER_BASEIMAGEDISPLAYCONTROL ((uint32_t) 0x0061 ) +#define ILI9328_REGISTER_VERTICALSCROLLCONTROL ((uint32_t) 0x006A ) +#define ILI9328_REGISTER_PARTIALIMAGE1DISPLAYPOSITION ((uint32_t) 0x0080 ) +#define ILI9328_REGISTER_PARTIALIMAGE1AREASTARTLINE ((uint32_t) 0x0081 ) +#define ILI9328_REGISTER_PARTIALIMAGE1AREAENDLINE ((uint32_t) 0x0082 ) +#define ILI9328_REGISTER_PARTIALIMAGE2DISPLAYPOSITION ((uint32_t) 0x0083 ) +#define ILI9328_REGISTER_PARTIALIMAGE2AREASTARTLINE ((uint32_t) 0x0084 ) +#define ILI9328_REGISTER_PARTIALIMAGE2AREAENDLINE ((uint32_t) 0x0085 ) +#define ILI9328_REGISTER_PANELINTERFACECONTROL1 ((uint32_t) 0x0090 ) +#define ILI9328_REGISTER_PANELINTERFACECONTROL2 ((uint32_t) 0x0092 ) +#define ILI9328_REGISTER_PANELINTERFACECONTROL4 ((uint32_t) 0x0095 ) +#define ILI9328_REGISTER_OTPVCMPROGRAMMINGCONTROL ((uint32_t) 0x00A1 ) +#define ILI9328_REGISTER_OTPVCMSTATUSANDENABLE ((uint32_t) 0x00A2 ) +#define ILI9328_REGISTER_OTPPROGRAMMINGIDKEY ((uint32_t) 0x00A5 ) #endif diff --git a/lib/src/common/GRAPHIC/CONTROLERS/ILI9328/ili9328.c b/lib/src/common/GRAPHIC/CONTROLERS/ILI9328/ili9328.c --- a/lib/src/common/GRAPHIC/CONTROLERS/ILI9328/ili9328.c +++ b/lib/src/common/GRAPHIC/CONTROLERS/ILI9328/ili9328.c @@ -51,15 +51,15 @@ int ili9328init(struct LCD_t* LCD) LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL2, 0x0007); // Power Control 2 (R11h) LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL3, 0x0000); // Power Control 3 (R12h) LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL4, 0x0000); // Power Control 4 (R13h) - _delay_(10000000); + _delay_(1000000); LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL1, 0x14B0); // Power Control 1 (R10h) - _delay_(5000000); + _delay_(500000); LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL2, 0x0007); // Power Control 2 (R11h) - _delay_(5000000); + _delay_(500000); LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL3, 0x008E); // Power Control 3 (R12h) LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL4, 0x0C00); // Power Control 4 (R13h) LCD->interface->writereg(ILI9328_REGISTER_POWERCONTROL7, 0x0015); // NVM read data 2 (R29h) - _delay_(5000000); + _delay_(500000); LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL1, 0x0000); // Gamma Control 1 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL2, 0x0107); // Gamma Control 2 LCD->interface->writereg(ILI9328_REGISTER_GAMMACONTROL3, 0x0000); // Gamma Control 3 @@ -79,7 +79,7 @@ int ili9328init(struct LCD_t* LCD) LCD->interface->writereg(ILI9328_REGISTER_PANELINTERFACECONTROL1, 0X0010); // Panel Interface Control 1 (R90h) // Display On LCD->interface->writereg(ILI9328_REGISTER_DISPLAYCONTROL1, 0x0133); // Display Control (R07h) - _delay_(5000000); + _delay_(500000); LCD->interface->writereg(ILI9328_REGISTER_ENTRYMODE, 0x1030); LCD->interface->writereg(ILI9328_REGISTER_DRIVEROUTPUTCONTROL1, 0x0100); //ili9328WriteCmd(ILI9328_REGISTER_WRITEDATATOGRAM);