[stm32l475] update lcd driver

This commit is contained in:
Meco Man 2021-11-21 15:24:09 -05:00
parent 5f2f862ed9
commit 364109708c
5 changed files with 27 additions and 17 deletions

View File

@ -2,14 +2,14 @@ from building import *
import os
cwd = GetCurrentDir()
src = Glob('*.c')
src = ['drv_lcd.c']
CPPPATH = [cwd]
if GetDepend(['BSP_USING_LCD_QRCODE']):
src = src + Glob('lcd_qrcode.c')
src = src + ['lcd_qrcode.c']
if GetDepend(['BSP_USING_LCD_SAMPLE']):
src = src + Glob('demo/lcd_sample.c')
src = src + ['demo/lcd_sample.c']
group = DefineGroup('Drivers', src, depend = ['BSP_USING_SPI_LCD'], CPPPATH = CPPPATH)

View File

@ -16,7 +16,9 @@
#include <drv_gpio.h>
#include <drv_spi.h>
#include "drv_lcd.h"
#ifndef BSP_USING_LVGL
#include "drv_lcd_font.h"
#endif /* BSP_USING_LVGL */
#define DBG_TAG "drv.lcd"
#define DBG_LVL DBG_INFO
@ -25,9 +27,11 @@
#define LCD_PWR_PIN GET_PIN(B, 7)
#define LCD_DC_PIN GET_PIN(B, 4)
#define LCD_RES_PIN GET_PIN(B, 6)
#define LCD_CLEAR_SEND_NUMBER 5760 /* 240*240/10 */
#ifndef BSP_USING_LVGL
#define LCD_CLEAR_SEND_NUMBER 5760 /* 240*240/10 */
rt_uint16_t BACK_COLOR = WHITE, FORE_COLOR = BLACK;
#endif /* BSP_USING_LVGL */
static struct rt_spi_device *spi_dev_lcd;
@ -86,6 +90,7 @@ static rt_err_t lcd_write_data(const rt_uint8_t data)
}
}
#ifndef BSP_USING_LVGL
static rt_err_t lcd_write_half_word(const rt_uint16_t da)
{
rt_size_t len;
@ -106,6 +111,7 @@ static rt_err_t lcd_write_half_word(const rt_uint16_t da)
return RT_EOK;
}
}
#endif /* BSP_USING_LVGL */
static void lcd_gpio_init(void)
{
@ -214,6 +220,7 @@ static int rt_hw_lcd_init(void)
}
INIT_DEVICE_EXPORT(rt_hw_lcd_init);
#ifndef BSP_USING_LVGL
/**
* Set background color and foreground color
*
@ -227,6 +234,7 @@ void lcd_set_color(rt_uint16_t back, rt_uint16_t fore)
BACK_COLOR = back;
FORE_COLOR = fore;
}
#endif /* BSP_USING_LVGL */
void lcd_display_on(void)
{
@ -281,6 +289,7 @@ void lcd_address_set(rt_uint16_t x1, rt_uint16_t y1, rt_uint16_t x2, rt_uint16_t
lcd_write_cmd(0x2C);
}
#ifndef BSP_USING_LVGL
/**
* clear the lcd.
*
@ -424,6 +433,8 @@ void lcd_fill(rt_uint16_t x_start, rt_uint16_t y_start, rt_uint16_t x_end, rt_ui
}
}
}
#endif /* BSP_USING_LVGL */
/**
* full color array on the lcd.
@ -446,6 +457,7 @@ void lcd_fill_array(rt_uint16_t x_start, rt_uint16_t y_start, rt_uint16_t x_end,
rt_spi_send(spi_dev_lcd, pcolor, size);
}
#ifndef BSP_USING_LVGL
/**
* display a line on the lcd.
*
@ -856,3 +868,5 @@ rt_err_t lcd_show_image(rt_uint16_t x, rt_uint16_t y, rt_uint16_t length, rt_uin
return RT_EOK;
}
#endif /* BSP_USING_LVGL */

View File

@ -5,8 +5,8 @@
*
* Change Logs:
* Date Author Notes
* 2018-08-14 flybreak the first version
* 2018-09-18 balanceTWK add sleep mode function
* 2018-08-14 flybreak the first version
* 2018-09-18 balanceTWK add sleep mode function
*/
#ifndef __DRV_LCD_H__
@ -14,14 +14,10 @@
#include <rtthread.h>
#ifdef PKG_USING_QRCODE
#include <qrcode.h>
#endif
#define LCD_W 240
#define LCD_H 240
//POINT_COLOR
#ifndef BSP_USING_LVGL
#define WHITE 0xFFFF
#define BLACK 0x0000
#define BLUE 0x001F
@ -42,25 +38,25 @@
#define GRAY240 0XF79E
extern rt_uint16_t BACK_COLOR, FORE_COLOR;
void lcd_clear(rt_uint16_t color);
void lcd_address_set(rt_uint16_t x1, rt_uint16_t y1, rt_uint16_t x2, rt_uint16_t y2);
void lcd_set_color(rt_uint16_t back, rt_uint16_t fore);
void lcd_draw_point(rt_uint16_t x, rt_uint16_t y);
void lcd_draw_point_color(rt_uint16_t x, rt_uint16_t y, rt_uint16_t color);
void lcd_draw_circle(rt_uint16_t x0, rt_uint16_t y0, rt_uint8_t r);
void lcd_draw_line(rt_uint16_t x1, rt_uint16_t y1, rt_uint16_t x2, rt_uint16_t y2);
void lcd_draw_rectangle(rt_uint16_t x1, rt_uint16_t y1, rt_uint16_t x2, rt_uint16_t y2);
void lcd_fill(rt_uint16_t x_start, rt_uint16_t y_start, rt_uint16_t x_end, rt_uint16_t y_end, rt_uint16_t color);
void lcd_fill_array(rt_uint16_t x_start, rt_uint16_t y_start, rt_uint16_t x_end, rt_uint16_t y_end, void *pcolor);
void lcd_show_num(rt_uint16_t x, rt_uint16_t y, rt_uint32_t num, rt_uint8_t len, rt_uint32_t size);
rt_err_t lcd_show_string(rt_uint16_t x, rt_uint16_t y, rt_uint32_t size, const char *fmt, ...);
rt_err_t lcd_show_image(rt_uint16_t x, rt_uint16_t y, rt_uint16_t length, rt_uint16_t wide, const rt_uint8_t *p);
#endif /* BSP_USING_LVGL */
void lcd_enter_sleep(void);
void lcd_exit_sleep(void);
void lcd_display_on(void);
void lcd_display_off(void);
void lcd_address_set(rt_uint16_t x1, rt_uint16_t y1, rt_uint16_t x2, rt_uint16_t y2);
void lcd_fill_array(rt_uint16_t x_start, rt_uint16_t y_start, rt_uint16_t x_end, rt_uint16_t y_end, void *pcolor);
#endif

View File

@ -186,4 +186,4 @@ __exit:
return result;
}
#endif
#endif /* BSP_USING_LCD_QRCODE */

View File

@ -3,7 +3,7 @@
#include <rtconfig.h>
#ifdef PKG_USING_QRCODE
#ifdef BSP_USING_LCD_QRCODE
#include <rtdef.h>
rt_err_t lcd_show_qrcode(rt_uint16_t x, rt_uint16_t y, rt_uint8_t version, rt_uint8_t ecc, const char *data, rt_uint8_t enlargement);
#endif