MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / drv_lcd_init

Function drv_lcd_init

bsp/k210/drivers/drv_lcd.c:386–429  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

384}
385
386static rt_err_t drv_lcd_init(rt_device_t dev)
387{
388 rt_err_t ret = RT_EOK;
389 lcd_8080_device_t lcd = (lcd_8080_device_t)dev;
390 rt_uint8_t data = 0;
391
392 if(!lcd)
393 {
394 return -RT_ERROR;
395 }
396 drv_lcd_hw_init(lcd);
397 /* reset LCD */
398 drv_lcd_cmd(lcd, SOFTWARE_RESET);
399 rt_thread_mdelay(100);
400
401 /* Enter normal status */
402 drv_lcd_cmd(lcd, SLEEP_OFF);
403 rt_thread_mdelay(100);
404
405 /* pixel format rgb565 */
406 drv_lcd_cmd(lcd, PIXEL_FORMAT_SET);
407 data = 0x55;
408 drv_lcd_data_byte(lcd, &data, 1);
409
410 /* set direction */
411 drv_lcd_set_direction(lcd, LCD_SCAN_DIR);
412
413 lcd->lcd_info.framebuffer = rt_malloc_align(lcd->lcd_info.height * lcd->lcd_info.width * (lcd->lcd_info.bits_per_pixel / 8), 64);
414 RT_ASSERT(lcd->lcd_info.framebuffer);
415
416 uint16_t *framebuffer = (uint16_t *)(lcd->lcd_info.framebuffer);
417 for(uint32_t i=0; i<(lcd->lcd_info.height * lcd->lcd_info.width * (lcd->lcd_info.bits_per_pixel / 8))/2; i++) {
418 framebuffer[i] = BLACK;
419 }
420 /*display on*/
421 #ifdef BSP_BOARD_K210_DRACO
422 drv_lcd_cmd(lcd, INVERSION_DISPALY_ON);
423 #endif
424 drv_lcd_cmd(lcd, DISPALY_ON);
425
426 /* set to black */
427 drv_lcd_clear(lcd, BLACK);
428 return ret;
429}
430
431static rt_err_t drv_lcd_open(rt_device_t dev, rt_uint16_t oflag)
432{

Callers

nothing calls this directly

Calls 7

drv_lcd_cmdFunction · 0.85
rt_thread_mdelayFunction · 0.85
drv_lcd_data_byteFunction · 0.85
drv_lcd_set_directionFunction · 0.85
rt_malloc_alignFunction · 0.85
drv_lcd_clearFunction · 0.85
drv_lcd_hw_initFunction · 0.70

Tested by

no test coverage detected