Skip to content

Commit 11df452

Browse files
authored
Merge pull request #84 from Aladdin-Wang/master
ART-PI TouchGFX_LIB
2 parents ba85d9a + 724a877 commit 11df452

File tree

582 files changed

+140990
-55
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

582 files changed

+140990
-55
lines changed

libraries/Kconfig

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ menu "Board extended module"
4848
bool "Use LRS007 RF_B Channel"
4949
default n
5050
endif
51+
5152
endmenu
5253

5354
menu "Onboard Peripheral"
@@ -138,7 +139,25 @@ menu "On-chip Peripheral"
138139
bool "Enable SPI4"
139140
default n
140141
endif
141-
142+
143+
menuconfig BSP_USING_I2C1
144+
bool "Enable I2C1 BUS (software simulation)"
145+
default n
146+
select RT_USING_I2C
147+
select RT_USING_I2C_BITOPS
148+
select RT_USING_PIN
149+
if BSP_USING_I2C1
150+
comment "Notice: PB6 --> 22; PB7 --> 23"
151+
config BSP_I2C1_SCL_PIN
152+
int "I2C1 scl pin number"
153+
range 1 176
154+
default 22
155+
config BSP_I2C1_SDA_PIN
156+
int "I2C1 sda pin number"
157+
range 1 176
158+
default 23
159+
endif
160+
142161
menuconfig BSP_USING_SDIO
143162
bool "Enable SDIO"
144163
default n
@@ -204,4 +223,9 @@ menu "External Libraries"
204223
select RT_USING_RYM
205224
default n
206225

226+
config ART_PI_TouchGFX_LIB
227+
bool "Using TouchGFX Library"
228+
default n
229+
select BSP_USING_LCD
230+
207231
endmenu

libraries/drivers/SConscript

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ if GetDepend(['BSP_USING_OV2640']):
3030
if GetDepend(['BSP_USING_TIM']):
3131
src += Glob('drv_hwtimer.c')
3232

33+
if GetDepend(['RT_USING_I2C', 'RT_USING_I2C_BITOPS']):
34+
if GetDepend('BSP_USING_I2C1') or GetDepend('BSP_USING_I2C2') or GetDepend('BSP_USING_I2C3') or GetDepend('BSP_USING_I2C4'):
35+
src += ['drv_soft_i2c.c']
36+
3337
path = [cwd]
3438
path += [cwd + '/include']
3539
path += [cwd + '/include/config']

libraries/drivers/drv_lcd.c

Lines changed: 67 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,7 @@
2525

2626
#define LCD_DEVICE(dev) (struct drv_lcd_device*)(dev)
2727

28-
static LTDC_HandleTypeDef LtdcHandle = {0};
29-
30-
struct drv_lcd_device
31-
{
32-
struct rt_device parent;
33-
34-
struct rt_device_graphic_info lcd_info;
35-
36-
struct rt_semaphore lcd_lock;
37-
38-
/* 0:front_buf is being used 1: back_buf is being used*/
39-
rt_uint8_t cur_buf;
40-
rt_uint8_t *front_buf;
41-
rt_uint8_t *back_buf;
42-
};
28+
LTDC_HandleTypeDef LtdcHandle = {0};
4329

4430
struct drv_lcd_device _lcd;
4531

@@ -50,7 +36,7 @@ static rt_err_t drv_lcd_init(struct rt_device *device)
5036
lcd = lcd;
5137
return RT_EOK;
5238
}
53-
39+
#ifndef ART_PI_TouchGFX_LIB
5440
static rt_err_t drv_lcd_control(struct rt_device *device, int cmd, void *args)
5541
{
5642
struct drv_lcd_device *lcd = LCD_DEVICE(device);
@@ -110,7 +96,7 @@ void HAL_LTDC_LineEventCallback(LTDC_HandleTypeDef *hltdc)
11096
{
11197
rt_sem_release(&_lcd.lcd_lock);
11298
}
113-
99+
#endif
114100
void LTDC_IRQHandler(void)
115101
{
116102
rt_enter_critical();
@@ -182,10 +168,6 @@ rt_err_t stm32_lcd_init(struct drv_lcd_device *lcd)
182168
{
183169
pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB888;
184170
}
185-
else if (lcd->lcd_info.pixel_format == RTGRAPHIC_PIXEL_FORMAT_RGB888)
186-
{
187-
pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB888;
188-
}
189171
else
190172
{
191173
LOG_E("unsupported pixel format");
@@ -199,7 +181,7 @@ rt_err_t stm32_lcd_init(struct drv_lcd_device *lcd)
199181
pLayerCfg.Alpha = 255;
200182

201183
/* Default Color configuration (configure A,R,G,B component values) */
202-
pLayerCfg.Alpha0 = 255;
184+
pLayerCfg.Alpha0 = 0;
203185
pLayerCfg.Backcolor.Blue = 0;
204186
pLayerCfg.Backcolor.Green = 0;
205187
pLayerCfg.Backcolor.Red = 0;
@@ -255,9 +237,9 @@ void turn_on_lcd_backlight(void)
255237
void turn_on_lcd_backlight(void)
256238
{
257239
rt_pin_mode(LCD_BL_GPIO_NUM, PIN_MODE_OUTPUT);
258-
// rt_pin_mode(LCD_DISP_GPIO_NUM, PIN_MODE_OUTPUT);
240+
rt_pin_mode(LCD_DISP_GPIO_NUM, PIN_MODE_OUTPUT);
259241

260-
// rt_pin_write(LCD_DISP_GPIO_NUM, PIN_HIGH);
242+
rt_pin_write(LCD_DISP_GPIO_NUM, PIN_HIGH);
261243
rt_pin_write(LCD_BL_GPIO_NUM, PIN_HIGH);
262244
}
263245
#else
@@ -323,7 +305,9 @@ int drv_lcd_hw_init(void)
323305
device->ops = &lcd_ops;
324306
#else
325307
device->init = drv_lcd_init;
308+
#ifndef ART_PI_TouchGFX_LIB
326309
device->control = drv_lcd_control;
310+
#endif
327311
#endif
328312

329313
/* register lcd device */
@@ -364,6 +348,7 @@ int drv_lcd_hw_init(void)
364348
}
365349
INIT_DEVICE_EXPORT(drv_lcd_hw_init);
366350

351+
#ifndef ART_PI_TouchGFX_LIB
367352
#ifdef DRV_DEBUG
368353
#ifdef FINSH_USING_MSH
369354
int lcd_test()
@@ -373,36 +358,69 @@ int lcd_test()
373358

374359
while (1)
375360
{
376-
/* red */
377-
for (int i = 0; i < LCD_BUF_SIZE / 3; i++)
378-
{
379-
lcd->lcd_info.framebuffer[3 * i] = 0x00;
380-
lcd->lcd_info.framebuffer[3 * i + 1] = 0x00;
381-
lcd->lcd_info.framebuffer[3 * i + 2] = 0xff;
382-
}
383-
lcd->parent.control(&lcd->parent, RTGRAPHIC_CTRL_RECT_UPDATE, RT_NULL);
384-
rt_thread_mdelay(1000);
385-
/* green */
386-
for (int i = 0; i < LCD_BUF_SIZE / 3; i++)
387-
{
388-
lcd->lcd_info.framebuffer[3 * i] = 0x00;
389-
lcd->lcd_info.framebuffer[3 * i + 1] = 0xff;
390-
lcd->lcd_info.framebuffer[3 * i + 2] = 0x00;
391-
}
392-
lcd->parent.control(&lcd->parent, RTGRAPHIC_CTRL_RECT_UPDATE, RT_NULL);
393-
rt_thread_mdelay(1000);
394-
/* blue */
395-
for (int i = 0; i < LCD_BUF_SIZE / 3; i++)
396-
{
397-
lcd->lcd_info.framebuffer[3 * i] = 0xff;
398-
lcd->lcd_info.framebuffer[3 * i + 1] = 0x00;
399-
lcd->lcd_info.framebuffer[3 * i + 2] = 0x00;
400-
}
361+
if (lcd->lcd_info.pixel_format == RTGRAPHIC_PIXEL_FORMAT_RGB565)
362+
{
363+
/* red */
364+
for (int i = 0; i < LCD_BUF_SIZE / 2; i++)
365+
{
366+
lcd->lcd_info.framebuffer[2 * i] = 0x00;
367+
lcd->lcd_info.framebuffer[2 * i + 1] = 0xF8;
368+
}
369+
lcd->parent.control(&lcd->parent, RTGRAPHIC_CTRL_RECT_UPDATE, RT_NULL);
370+
rt_thread_mdelay(1000);
371+
/* green */
372+
for (int i = 0; i < LCD_BUF_SIZE / 2; i++)
373+
{
374+
lcd->lcd_info.framebuffer[2 * i] = 0xE0;
375+
lcd->lcd_info.framebuffer[2 * i + 1] = 0x07;
376+
}
377+
lcd->parent.control(&lcd->parent, RTGRAPHIC_CTRL_RECT_UPDATE, RT_NULL);
378+
rt_thread_mdelay(1000);
379+
/* blue */
380+
for (int i = 0; i < LCD_BUF_SIZE / 2; i++)
381+
{
382+
lcd->lcd_info.framebuffer[2 * i] = 0x1F;
383+
lcd->lcd_info.framebuffer[2 * i + 1] = 0x00;
384+
}
385+
}
386+
else if (lcd->lcd_info.pixel_format == RTGRAPHIC_PIXEL_FORMAT_RGB888)
387+
{
388+
/* red */
389+
for (int i = 0; i < LCD_BUF_SIZE / 3; i++)
390+
{
391+
lcd->lcd_info.framebuffer[3 * i] = 0x00;
392+
lcd->lcd_info.framebuffer[3 * i + 1] = 0x00;
393+
lcd->lcd_info.framebuffer[3 * i + 2] = 0xff;
394+
}
395+
lcd->parent.control(&lcd->parent, RTGRAPHIC_CTRL_RECT_UPDATE, RT_NULL);
396+
rt_thread_mdelay(1000);
397+
/* green */
398+
for (int i = 0; i < LCD_BUF_SIZE / 3; i++)
399+
{
400+
lcd->lcd_info.framebuffer[3 * i] = 0x00;
401+
lcd->lcd_info.framebuffer[3 * i + 1] = 0xff;
402+
lcd->lcd_info.framebuffer[3 * i + 2] = 0x00;
403+
}
404+
lcd->parent.control(&lcd->parent, RTGRAPHIC_CTRL_RECT_UPDATE, RT_NULL);
405+
rt_thread_mdelay(1000);
406+
/* blue */
407+
for (int i = 0; i < LCD_BUF_SIZE / 3; i++)
408+
{
409+
lcd->lcd_info.framebuffer[3 * i] = 0xff;
410+
lcd->lcd_info.framebuffer[3 * i + 1] = 0x00;
411+
lcd->lcd_info.framebuffer[3 * i + 2] = 0x00;
412+
}
413+
}
414+
401415
lcd->parent.control(&lcd->parent, RTGRAPHIC_CTRL_RECT_UPDATE, RT_NULL);
402416
rt_thread_mdelay(1000);
403417
}
418+
419+
420+
404421
}
405422
MSH_CMD_EXPORT(lcd_test, lcd_test);
406423
#endif /* FINSH_USING_MSH */
407424
#endif /* DRV_DEBUG */
408425
#endif /* BSP_USING_LCD */
426+
#endif

libraries/drivers/include/lcd_port.h

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,21 @@
1212
#define __LCD_PORT_H__
1313

1414
/* atk 4.3 inch screen, 800 * 480 */
15+
16+
struct drv_lcd_device
17+
{
18+
struct rt_device parent;
19+
20+
struct rt_device_graphic_info lcd_info;
21+
22+
struct rt_semaphore lcd_lock;
23+
24+
/* 0:front_buf is being used 1: back_buf is being used*/
25+
rt_uint8_t cur_buf;
26+
rt_uint8_t *front_buf;
27+
rt_uint8_t *back_buf;
28+
};
29+
1530
#define LCD_WIDTH 800
1631
#define LCD_HEIGHT 480
1732
#define LCD_BITS_PER_PIXEL 24
@@ -20,14 +35,14 @@
2035

2136
#define LCD_HSYNC_WIDTH 1
2237
#define LCD_VSYNC_HEIGHT 1
23-
#define LCD_HBP 40
24-
#define LCD_VBP 8
25-
#define LCD_HFP 5
26-
#define LCD_VFP 8
38+
#define LCD_HBP 88
39+
#define LCD_VBP 32
40+
#define LCD_HFP 40
41+
#define LCD_VFP 13
2742

2843
#define LCD_BACKLIGHT_USING_GPIO
2944
#define LCD_BL_GPIO_NUM GET_PIN(D, 4)
30-
//#define LCD_DISP_GPIO_NUM GET_PIN(D, 13)
45+
#define LCD_DISP_GPIO_NUM GET_PIN(B, 5)
3146
/* atk 4.3 inch screen, 800 * 480 */
3247

3348
#endif /* __LCD_PORT_H__ */

0 commit comments

Comments
 (0)