diff --git a/Ubiquitous/XiUOS/board/aiit-arm32-board/third_party_driver/include/connect_lcd.h b/Ubiquitous/XiUOS/board/aiit-arm32-board/third_party_driver/include/connect_lcd.h index def430b27..2fe53769c 100644 --- a/Ubiquitous/XiUOS/board/aiit-arm32-board/third_party_driver/include/connect_lcd.h +++ b/Ubiquitous/XiUOS/board/aiit-arm32-board/third_party_driver/include/connect_lcd.h @@ -121,7 +121,7 @@ extern "C" { #define D2U_L2R 6 #define D2U_R2L 7 -#define DFT_SCAN_DIR L2R_U2D //default scan direction +#define DFT_SCAN_DIR U2D_R2L //default scan direction #define FSMC_BANK1_NORSRAM4_START_ADDRESS 0x6C000000 #define FSMC_BANK1_NORSRAM4_DATA_WIDTH 16 diff --git a/Ubiquitous/XiUOS/board/aiit-arm32-board/third_party_driver/lcd/Kconfig b/Ubiquitous/XiUOS/board/aiit-arm32-board/third_party_driver/lcd/Kconfig index b859ecb61..fb419b449 100644 --- a/Ubiquitous/XiUOS/board/aiit-arm32-board/third_party_driver/lcd/Kconfig +++ b/Ubiquitous/XiUOS/board/aiit-arm32-board/third_party_driver/lcd/Kconfig @@ -8,4 +8,10 @@ if BSP_USING_LCD config LCD_DEVICE_NAME string "lcd bus device name" default "lcd_dev" + config BSP_LCD_X_MAX + int "LCD Height" + default 240 + config BSP_LCD_Y_MAX + int "LCD Width" + default 320 endif diff --git a/Ubiquitous/XiUOS/board/aiit-arm32-board/third_party_driver/lcd/connect_lcd.c b/Ubiquitous/XiUOS/board/aiit-arm32-board/third_party_driver/lcd/connect_lcd.c index 9df8912e2..0b2707abb 100644 --- a/Ubiquitous/XiUOS/board/aiit-arm32-board/third_party_driver/lcd/connect_lcd.c +++ b/Ubiquitous/XiUOS/board/aiit-arm32-board/third_party_driver/lcd/connect_lcd.c @@ -32,6 +32,31 @@ Modification: #include #include +static int Stm32LcdUdelay(uint32 us) +{ + uint32 ticks; + uint32 told, tnow, tcnt = 0; + uint32 reload = SysTick->LOAD; + + ticks = us * reload / (1000000 / TICK_PER_SECOND); + told = SysTick->VAL; + while (1) { + tnow = SysTick->VAL; + if (tnow != told) { + if (tnow < told) { + tcnt += told - tnow; + } else { + tcnt += reload - tnow + told; + } + told = tnow; + if (tcnt >= ticks) { + return 0; + break; + } + } + } +} + static void HwFsmcInit() { GPIO_InitTypeDef GPIO_InitStructure; @@ -163,7 +188,7 @@ static uint16_t LcdReadData(LCD_TypeDef *LCD) static uint16_t LcdReadReg(LCD_TypeDef *LCD, uint16_t cmd) { LcdWriteCmd(LCD, cmd); - MdelayKTask(1); + Stm32LcdUdelay(1000); return LcdReadData(LCD); } @@ -300,36 +325,8 @@ static void LcdScanDirection(struct Stm32HwLcd *hw_lcd, uint8_t scan_direction) { uint16_t cmd = 0; uint16_t temp; - uint8_t scan_direction_reverse; switch (scan_direction) { - case 0: - scan_direction_reverse = 6; - break; - case 1: - scan_direction_reverse = 7; - break; - case 2: - scan_direction_reverse = 4; - break; - case 3: - scan_direction_reverse = 5; - break; - case 4: - scan_direction_reverse = 1; - break; - case 5: - scan_direction_reverse = 0; - break; - case 6: - scan_direction_reverse = 3; - break; - case 7: - scan_direction_reverse = 2; - break; - } - - switch (scan_direction_reverse) { case L2R_U2D: cmd |= (0 << 7) | (0 << 6) | (0 << 5); break; @@ -502,7 +499,7 @@ static void HwLcdInit(struct Stm32HwLcd *hw_lcd) LcdWriteData(hw_lcd->LCD, 0x00); LcdWriteData(hw_lcd->LCD, 0xef); LcdWriteCmd(hw_lcd->LCD, SLEEP_OFF);//Exit Sleep - MdelayKTask(120); + Stm32LcdUdelay(120000); LcdWriteCmd(hw_lcd->LCD, DISPALY_ON);//display on LcdDisplayDirection(hw_lcd); @@ -647,8 +644,12 @@ int Stm32HwLcdInit(void) return ERROR; } + Stm32LcdUdelay(5000000); + HwFsmcInit(); + Stm32LcdUdelay(20000); + HwLcdInit(&hw_lcd); #endif