Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
人间散章
rt-thread
提交
1cf26a8e
R
rt-thread
项目概览
人间散章
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1cf26a8e
编写于
3月 24, 2023
作者:
R
Rbb666
提交者:
mysterywolf
3月 24, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[Renesas]Remove lcd_ili9341 and update spi driver
上级
b0c247fb
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
96 addition
and
922 deletion
+96
-922
bsp/renesas/libraries/HAL_Drivers/SConscript
bsp/renesas/libraries/HAL_Drivers/SConscript
+4
-6
bsp/renesas/libraries/HAL_Drivers/drv_sci_spi.c
bsp/renesas/libraries/HAL_Drivers/drv_sci_spi.c
+35
-14
bsp/renesas/libraries/HAL_Drivers/drv_sci_spi.h
bsp/renesas/libraries/HAL_Drivers/drv_sci_spi.h
+2
-0
bsp/renesas/libraries/HAL_Drivers/drv_spi.c
bsp/renesas/libraries/HAL_Drivers/drv_spi.c
+4
-6
bsp/renesas/libraries/HAL_Drivers/drv_spi.h
bsp/renesas/libraries/HAL_Drivers/drv_spi.h
+1
-1
bsp/renesas/ra6m3-ek/board/Kconfig
bsp/renesas/ra6m3-ek/board/Kconfig
+30
-0
bsp/renesas/ra6m3-ek/board/lvgl/lv_port_disp.c
bsp/renesas/ra6m3-ek/board/lvgl/lv_port_disp.c
+1
-12
bsp/renesas/ra6m3-ek/board/ports/ili9341/SConscript
bsp/renesas/ra6m3-ek/board/ports/ili9341/SConscript
+0
-22
bsp/renesas/ra6m3-ek/board/ports/ili9341/lcd_ili9341.c
bsp/renesas/ra6m3-ek/board/ports/ili9341/lcd_ili9341.c
+0
-329
bsp/renesas/ra6m3-ek/board/ports/ili9341/lcd_ili9341.h
bsp/renesas/ra6m3-ek/board/ports/ili9341/lcd_ili9341.h
+0
-85
bsp/renesas/ra6m4-cpk/board/Kconfig
bsp/renesas/ra6m4-cpk/board/Kconfig
+18
-6
bsp/renesas/ra6m4-cpk/board/lvgl/lv_port_disp.c
bsp/renesas/ra6m4-cpk/board/lvgl/lv_port_disp.c
+1
-1
bsp/renesas/ra6m4-cpk/board/ports/ili9341/SConscript
bsp/renesas/ra6m4-cpk/board/ports/ili9341/SConscript
+0
-22
bsp/renesas/ra6m4-cpk/board/ports/ili9341/lcd_ili9341.c
bsp/renesas/ra6m4-cpk/board/ports/ili9341/lcd_ili9341.c
+0
-329
bsp/renesas/ra6m4-cpk/board/ports/ili9341/lcd_ili9341.h
bsp/renesas/ra6m4-cpk/board/ports/ili9341/lcd_ili9341.h
+0
-89
未找到文件。
bsp/renesas/libraries/HAL_Drivers/SConscript
浏览文件 @
1cf26a8e
...
...
@@ -33,12 +33,10 @@ if GetDepend(['BSP_USING_I2C', 'BSP_USING_HW_I2C']):
src
+=
[
'drv_i2c.c'
]
if
GetDepend
([
'BSP_USING_SPI'
]):
if
GetDepend
(
'BSP_USING_SCI_SPI0'
)
or
GetDepend
(
'BSP_USING_SCI_SPI1'
)
\
or
GetDepend
(
'BSP_USING_SCI_SPI2'
)
or
GetDepend
(
'BSP_USING_SCI_SPI3'
)
\
or
GetDepend
(
'BSP_USING_SCI_SPI4'
)
or
GetDepend
(
'BSP_USING_SCI_SPI9'
):
\
src
+=
[
'drv_sci_spi.c'
]
else
:
src
+=
[
'drv_spi.c'
]
src
+=
[
'drv_spi.c'
]
if
GetDepend
([
'BSP_USING_SCI_SPI'
]):
src
+=
[
'drv_sci_spi.c'
]
if
GetDepend
([
'BSP_USING_ADC'
]):
src
+=
[
'drv_adc.c'
]
...
...
bsp/renesas/libraries/HAL_Drivers/drv_sci_spi.c
浏览文件 @
1cf26a8e
...
...
@@ -113,7 +113,7 @@ static rt_err_t ra_wait_complete(rt_event_t event, const char bus_name[RT_NAME_M
{
rt_uint32_t
recved
=
0x00
;
switch
(
bus_name
[
6
])
switch
(
bus_name
[
4
])
{
case
'0'
:
return
SCI_SPIx_EVENT_RECV
(
0
);
...
...
@@ -155,7 +155,6 @@ static spi_bit_width_t ra_width_shift(rt_uint8_t data_width)
static
rt_err_t
ra_write_message
(
struct
rt_spi_device
*
device
,
const
void
*
send_buf
,
const
rt_size_t
len
)
{
RT_ASSERT
(
device
!=
NULL
);
RT_ASSERT
(
device
->
parent
.
user_data
!=
NULL
);
RT_ASSERT
(
send_buf
!=
NULL
);
RT_ASSERT
(
len
>
0
);
rt_err_t
err
=
RT_EOK
;
...
...
@@ -177,7 +176,6 @@ static rt_err_t ra_write_message(struct rt_spi_device *device, const void *send_
static
rt_err_t
ra_read_message
(
struct
rt_spi_device
*
device
,
void
*
recv_buf
,
const
rt_size_t
len
)
{
RT_ASSERT
(
device
!=
NULL
);
RT_ASSERT
(
device
->
parent
.
user_data
!=
NULL
);
RT_ASSERT
(
recv_buf
!=
NULL
);
RT_ASSERT
(
len
>
0
);
rt_err_t
err
=
RT_EOK
;
...
...
@@ -226,7 +224,6 @@ static rt_err_t ra_hw_spi_configure(struct rt_spi_device *device,
rt_err_t
err
=
RT_EOK
;
struct
ra_sci_spi
*
spi_dev
=
rt_container_of
(
device
->
bus
,
struct
ra_sci_spi
,
bus
);
spi_dev
->
cs_pin
=
(
rt_uint32_t
)
device
->
parent
.
user_data
;
/**< data_width : 1 -> 8 bits , 2 -> 16 bits, 4 -> 32 bits, default 32 bits*/
rt_uint8_t
data_width
=
configuration
->
data_width
/
8
;
...
...
@@ -237,7 +234,7 @@ static rt_err_t ra_hw_spi_configure(struct rt_spi_device *device,
sci_spi_extended_cfg_t
*
spi_cfg
=
(
sci_spi_extended_cfg_t
*
)
spi_dev
->
ra_spi_handle_t
->
spi_cfg_t
->
p_extend
;
/**< Configure Select Line */
rt_pin_write
(
spi_dev
->
cs_pin
,
PIN_HIGH
);
rt_pin_write
(
device
->
cs_pin
,
PIN_HIGH
);
/**< config bitrate */
R_SCI_SPI_CalculateBitrate
(
spi_dev
->
rt_spi_cfg_t
->
max_hz
,
&
spi_cfg
->
clk_div
,
false
);
...
...
@@ -257,22 +254,20 @@ static rt_err_t ra_hw_spi_configure(struct rt_spi_device *device,
return
RT_EOK
;
}
static
rt_
uint32
_t
ra_spixfer
(
struct
rt_spi_device
*
device
,
struct
rt_spi_message
*
message
)
static
rt_
ssize
_t
ra_spixfer
(
struct
rt_spi_device
*
device
,
struct
rt_spi_message
*
message
)
{
RT_ASSERT
(
device
!=
RT_NULL
);
RT_ASSERT
(
device
->
bus
!=
RT_NULL
);
RT_ASSERT
(
message
!=
RT_NULL
);
rt_err_t
err
=
RT_EOK
;
struct
ra_sci_spi
*
spi_dev
=
rt_container_of
(
device
->
bus
,
struct
ra_sci_spi
,
bus
);
spi_dev
->
cs_pin
=
(
rt_uint32_t
)
device
->
parent
.
user_data
;
if
(
message
->
cs_take
&&
!
(
device
->
config
.
mode
&
RT_SPI_NO_CS
))
if
(
message
->
cs_take
&&
!
(
device
->
config
.
mode
&
RT_SPI_NO_CS
)
&&
(
device
->
cs_pin
!=
PIN_NONE
)
)
{
if
(
device
->
config
.
mode
&
RT_SPI_CS_HIGH
)
rt_pin_write
(
spi_dev
->
cs_pin
,
PIN_HIGH
);
rt_pin_write
(
device
->
cs_pin
,
PIN_HIGH
);
else
rt_pin_write
(
spi_dev
->
cs_pin
,
PIN_LOW
);
rt_pin_write
(
device
->
cs_pin
,
PIN_LOW
);
}
if
(
message
->
length
>
0
)
...
...
@@ -294,12 +289,12 @@ static rt_uint32_t ra_spixfer(struct rt_spi_device *device, struct rt_spi_messag
}
}
if
(
message
->
cs_release
&&
!
(
device
->
config
.
mode
&
RT_SPI_NO_CS
))
if
(
message
->
cs_release
&&
!
(
device
->
config
.
mode
&
RT_SPI_NO_CS
)
&&
(
device
->
cs_pin
!=
PIN_NONE
)
)
{
if
(
device
->
config
.
mode
&
RT_SPI_CS_HIGH
)
rt_pin_write
(
spi_dev
->
cs_pin
,
PIN_LOW
);
rt_pin_write
(
device
->
cs_pin
,
PIN_LOW
);
else
rt_pin_write
(
spi_dev
->
cs_pin
,
PIN_HIGH
);
rt_pin_write
(
device
->
cs_pin
,
PIN_HIGH
);
}
return
err
;
}
...
...
@@ -333,4 +328,30 @@ int ra_hw_sci_spi_init(void)
return
RT_EOK
;
}
INIT_BOARD_EXPORT
(
ra_hw_sci_spi_init
);
/**
* Attach the spi device to SPI bus, this function must be used after initialization.
*/
rt_err_t
rt_hw_sci_spi_device_attach
(
const
char
*
bus_name
,
const
char
*
device_name
,
rt_base_t
cs_pin
)
{
RT_ASSERT
(
bus_name
!=
RT_NULL
);
RT_ASSERT
(
device_name
!=
RT_NULL
);
rt_err_t
result
;
struct
rt_spi_device
*
spi_device
;
/* attach the device to spi bus*/
spi_device
=
(
struct
rt_spi_device
*
)
rt_malloc
(
sizeof
(
struct
rt_spi_device
));
RT_ASSERT
(
spi_device
!=
RT_NULL
);
result
=
rt_spi_bus_attach_device_cspin
(
spi_device
,
device_name
,
bus_name
,
cs_pin
,
RT_NULL
);
if
(
result
!=
RT_EOK
)
{
LOG_E
(
"%s attach to %s faild, %d
\n
"
,
device_name
,
bus_name
,
result
);
}
LOG_D
(
"%s attach to %s done"
,
device_name
,
bus_name
);
return
result
;
}
#endif
/* RT_USING_SPI */
bsp/renesas/libraries/HAL_Drivers/drv_sci_spi.h
浏览文件 @
1cf26a8e
...
...
@@ -41,6 +41,8 @@ struct ra_sci_spi
};
#endif
rt_err_t
rt_hw_sci_spi_device_attach
(
const
char
*
bus_name
,
const
char
*
device_name
,
rt_base_t
cs_pin
);
#ifdef __cplusplus
}
#endif
...
...
bsp/renesas/libraries/HAL_Drivers/drv_spi.c
浏览文件 @
1cf26a8e
...
...
@@ -122,7 +122,6 @@ static rt_err_t ra_write_message(struct rt_spi_device *device, const void *send_
static
rt_err_t
ra_read_message
(
struct
rt_spi_device
*
device
,
void
*
recv_buf
,
const
rt_size_t
len
)
{
RT_ASSERT
(
device
!=
NULL
);
RT_ASSERT
(
device
->
parent
.
user_data
!=
NULL
);
RT_ASSERT
(
recv_buf
!=
NULL
);
RT_ASSERT
(
len
>
0
);
rt_err_t
err
=
RT_EOK
;
...
...
@@ -204,7 +203,6 @@ static rt_ssize_t ra_spixfer(struct rt_spi_device *device, struct rt_spi_message
RT_ASSERT
(
message
!=
RT_NULL
);
rt_err_t
err
=
RT_EOK
;
struct
ra_spi
*
spi_dev
=
rt_container_of
(
device
->
bus
,
struct
ra_spi
,
bus
);
if
(
message
->
cs_take
&&
!
(
device
->
config
.
mode
&
RT_SPI_NO_CS
)
&&
(
device
->
cs_pin
!=
PIN_NONE
))
{
...
...
@@ -236,9 +234,9 @@ static rt_ssize_t ra_spixfer(struct rt_spi_device *device, struct rt_spi_message
if
(
message
->
cs_release
&&
!
(
device
->
config
.
mode
&
RT_SPI_NO_CS
)
&&
(
device
->
cs_pin
!=
PIN_NONE
))
{
if
(
device
->
config
.
mode
&
RT_SPI_CS_HIGH
)
rt_pin_write
(
spi_dev
->
cs_pin
,
PIN_LOW
);
rt_pin_write
(
device
->
cs_pin
,
PIN_LOW
);
else
rt_pin_write
(
spi_dev
->
cs_pin
,
PIN_HIGH
);
rt_pin_write
(
device
->
cs_pin
,
PIN_HIGH
);
}
return
err
;
}
...
...
@@ -276,7 +274,7 @@ INIT_BOARD_EXPORT(ra_hw_spi_init);
/**
* Attach the spi device to SPI bus, this function must be used after initialization.
*/
rt_err_t
rt_hw_spi_device_attach
(
const
char
*
bus_name
,
const
char
*
device_name
,
rt_base_t
cs_pin
,
void
*
user_data
)
rt_err_t
rt_hw_spi_device_attach
(
const
char
*
bus_name
,
const
char
*
device_name
,
rt_base_t
cs_pin
)
{
RT_ASSERT
(
bus_name
!=
RT_NULL
);
RT_ASSERT
(
device_name
!=
RT_NULL
);
...
...
@@ -288,7 +286,7 @@ rt_err_t rt_hw_spi_device_attach(const char *bus_name, const char *device_name,
spi_device
=
(
struct
rt_spi_device
*
)
rt_malloc
(
sizeof
(
struct
rt_spi_device
));
RT_ASSERT
(
spi_device
!=
RT_NULL
);
result
=
rt_spi_bus_attach_device_cspin
(
spi_device
,
device_name
,
bus_name
,
cs_pin
,
user_data
);
result
=
rt_spi_bus_attach_device_cspin
(
spi_device
,
device_name
,
bus_name
,
cs_pin
,
RT_NULL
);
if
(
result
!=
RT_EOK
)
{
LOG_E
(
"%s attach to %s faild, %d
\n
"
,
device_name
,
bus_name
,
result
);
...
...
bsp/renesas/libraries/HAL_Drivers/drv_spi.h
浏览文件 @
1cf26a8e
...
...
@@ -40,7 +40,7 @@ struct ra_spi
};
#endif
rt_err_t
rt_hw_spi_device_attach
(
const
char
*
bus_name
,
const
char
*
device_name
,
rt_base_t
cs_pin
,
void
*
user_data
);
rt_err_t
rt_hw_spi_device_attach
(
const
char
*
bus_name
,
const
char
*
device_name
,
rt_base_t
cs_pin
);
#ifdef __cplusplus
}
...
...
bsp/renesas/ra6m3-ek/board/Kconfig
浏览文件 @
1cf26a8e
...
...
@@ -94,6 +94,35 @@ menu "Hardware Drivers Config"
select BSP_USING_GPIO
default n
menuconfig BSP_USING_SCI_SPI
bool "Enable SCI SPI BUS"
default n
select RT_USING_SPI
if BSP_USING_SCI_SPI
config BSP_USING_SCI_SPI0
bool "Enable SCI SPI0 BUS"
default n
config BSP_USING_SCI_SPI3
bool "Enable SCI SPI3 BUS"
default n
config BSP_USING_SCI_SPI6
bool "Enable SCI SPI6 BUS"
default n
endif
menuconfig BSP_USING_SPI
bool "Enable SPI BUS"
default n
select RT_USING_SPI
if BSP_USING_SPI
config BSP_USING_SPI0
bool "Enable SPI0 BUS"
default n
config BSP_USING_SPI1
bool "Enable SPI1 BUS"
default n
endif
config BSP_USING_SPI_LCD
bool "Enable SPI LCD"
select BSP_USING_GPIO
...
...
@@ -108,6 +137,7 @@ menu "Hardware Drivers Config"
if BSP_USING_LVGL
config BSP_USING_LCD_ILI9431
bool "Enable LVGL for LCD_ILI9431"
select PKG_USING_ILI9341
select BSP_USING_SPI_LCD
default n
config BSP_USING_LCD_RGB
...
...
bsp/renesas/ra6m3-ek/board/lvgl/lv_port_disp.c
浏览文件 @
1cf26a8e
...
...
@@ -34,17 +34,6 @@ static struct rt_device_graphic_info info;
__attribute__
((
section
(
".ARM.__at_0x1FFE0000"
)))
lv_color_t
buf_1
[
COLOR_BUFFER
];
#if !DLG_LVGL_USE_GPU_RA6M3
void
_ra_port_display_callback
(
display_callback_args_t
*
p_args
)
{
/* enter interrupt */
rt_interrupt_enter
();
/* TODO */
/* leave interrupt */
rt_interrupt_leave
();
}
static
void
color_to16_maybe
(
lv_color16_t
*
dst
,
lv_color_t
*
src
)
{
#if (LV_COLOR_DEPTH == 16)
...
...
@@ -112,7 +101,7 @@ static void disp_flush(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_
void
lv_port_disp_init
(
void
)
{
#ifdef BSP_USING_SPI_LCD
spi_lcd_init
();
spi_lcd_init
(
20
);
#else
static
rt_device_t
device
;
/* LCD Device Init */
...
...
bsp/renesas/ra6m3-ek/board/ports/ili9341/SConscript
已删除
100644 → 0
浏览文件 @
b0c247fb
from
building
import
*
import
rtconfig
cwd
=
GetCurrentDir
()
src
=
[]
if
GetDepend
([
'BSP_USING_SPI_LCD'
]):
src
+=
Glob
(
'lcd_ili9341.c'
)
CPPPATH
=
[
cwd
]
LOCAL_CFLAGS
=
''
if
rtconfig
.
PLATFORM
in
[
'gcc'
,
'armclang'
]:
LOCAL_CFLAGS
+=
' -std=c99'
elif
rtconfig
.
PLATFORM
in
[
'armcc'
]:
LOCAL_CFLAGS
+=
' --c99'
group
=
DefineGroup
(
'ili9341'
,
src
,
depend
=
[],
CPPPATH
=
CPPPATH
,
LOCAL_CFLAGS
=
LOCAL_CFLAGS
)
Return
(
'group'
)
bsp/renesas/ra6m3-ek/board/ports/ili9341/lcd_ili9341.c
已删除
100644 → 0
浏览文件 @
b0c247fb
/*
* Copyright (c) 2006-2023, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2023-02-23 Rbb666 First version
*/
#include <rtdevice.h>
#ifdef BSP_USING_SPI_LCD
#include "lcd_ili9341.h"
#include "drivers/spi.h"
/* 2.8 inch LCD module */
/* res pin -> P4_14 */
/* d/c pin -> P4_13 */
/* cs pin -> P4_05 */
/* sda pin -> p4_11 */
/* scl pin -> p4_12 */
_lcd_dev
lcddev
;
static
struct
rt_spi_device
*
lcd_dev
;
rt_err_t
spi_lcd_init
(
void
)
{
rt_err_t
res
=
RT_EOK
;
rt_hw_spi_device_attach
(
"spi0"
,
"spi30"
,
LCD_CS_PIN
,
RT_NULL
);
lcd_dev
=
(
struct
rt_spi_device
*
)
rt_device_find
(
"spi30"
);
if
(
lcd_dev
!=
RT_NULL
)
{
struct
rt_spi_configuration
spi_config
;
spi_config
.
data_width
=
8
;
spi_config
.
max_hz
=
20
*
1000
*
1000
;
spi_config
.
mode
=
RT_SPI_MASTER
|
RT_SPI_MODE_0
|
RT_SPI_MSB
;
rt_spi_configure
(
lcd_dev
,
&
spi_config
);
}
else
{
res
=
-
RT_ERROR
;
}
LCD_Init
();
return
res
;
}
void
LCD_RESET
(
void
)
{
LCD_RES_CLR
;
DELAY
(
100
);
LCD_RES_SET
;
DELAY
(
100
);
}
void
LCD_WR_REG
(
uint8_t
reg
)
{
LCD_DC_CLR
;
rt_spi_send
(
lcd_dev
,
&
reg
,
1
);
LCD_DC_SET
;
}
void
LCD_WR_DATA
(
uint8_t
data
)
{
LCD_DC_SET
;
rt_spi_send
(
lcd_dev
,
&
data
,
1
);
}
void
LCD_ReadData
(
uint8_t
*
data
,
uint16_t
length
)
{
LCD_DC_SET
;
rt_spi_transfer
(
lcd_dev
,
RT_NULL
,
&
data
,
length
);
}
void
LCD_WriteReg
(
uint8_t
reg
,
uint16_t
regdata
)
{
LCD_WR_REG
(
reg
);
LCD_WR_DATA
(
regdata
);
}
void
LCD_WriteRAM_Prepare
(
void
)
{
LCD_WR_REG
(
lcddev
.
wramcmd
);
}
void
LCD_WriteData_16Bit
(
uint16_t
Data
)
{
uint8_t
buf
[
2
];
LCD_DC_SET
;
buf
[
0
]
=
Data
>>
8
;
buf
[
1
]
=
Data
&
0xff
;
rt_spi_send
(
lcd_dev
,
buf
,
2
);
}
void
LCD_direction
(
uint8_t
direction
)
{
lcddev
.
setxcmd
=
0x2A
;
lcddev
.
setycmd
=
0x2B
;
lcddev
.
wramcmd
=
0x2C
;
switch
(
direction
)
{
case
0
:
lcddev
.
width
=
LCD_W
;
lcddev
.
height
=
LCD_H
;
LCD_WriteReg
(
0x36
,
(
1
<<
3
)
|
(
0
<<
6
)
|
(
0
<<
7
));
/* BGR==1,MY==0,MX==0,MV==0 */
break
;
case
1
:
lcddev
.
width
=
LCD_H
;
lcddev
.
height
=
LCD_W
;
LCD_WriteReg
(
0x36
,
(
1
<<
3
)
|
(
0
<<
7
)
|
(
1
<<
6
)
|
(
1
<<
5
));
/* BGR==1,MY==1,MX==0,MV==1 */
break
;
case
2
:
lcddev
.
width
=
LCD_W
;
lcddev
.
height
=
LCD_H
;
LCD_WriteReg
(
0x36
,
(
1
<<
3
)
|
(
1
<<
6
)
|
(
1
<<
7
));
/* BGR==1,MY==0,MX==0,MV==0 */
break
;
case
3
:
lcddev
.
width
=
LCD_H
;
lcddev
.
height
=
LCD_W
;
LCD_WriteReg
(
0x36
,
(
1
<<
3
)
|
(
1
<<
7
)
|
(
1
<<
5
));
/* BGR==1,MY==1,MX==0,MV==1 */
break
;
default:
break
;
}
}
void
LCD_SetWindows
(
uint16_t
xStar
,
uint16_t
yStar
,
uint16_t
xEnd
,
uint16_t
yEnd
)
{
LCD_WR_REG
(
lcddev
.
setxcmd
);
LCD_WR_DATA
(
xStar
>>
8
);
LCD_WR_DATA
(
0x00FF
&
xStar
);
LCD_WR_DATA
(
xEnd
>>
8
);
LCD_WR_DATA
(
0x00FF
&
xEnd
);
LCD_WR_REG
(
lcddev
.
setycmd
);
LCD_WR_DATA
(
yStar
>>
8
);
LCD_WR_DATA
(
0x00FF
&
yStar
);
LCD_WR_DATA
(
yEnd
>>
8
);
LCD_WR_DATA
(
0x00FF
&
yEnd
);
LCD_WriteRAM_Prepare
();
}
void
LCD_SetCursor
(
uint16_t
Xpos
,
uint16_t
Ypos
)
{
LCD_SetWindows
(
Xpos
,
Ypos
,
Xpos
,
Ypos
);
}
void
LCD_Clear
(
uint16_t
Color
)
{
unsigned
int
i
,
m
;
uint8_t
buf
[
80
];
for
(
i
=
0
;
i
<
40
;
i
++
)
{
buf
[
2
*
i
]
=
Color
>>
8
;
buf
[
2
*
i
+
1
]
=
Color
&
0xff
;
}
LCD_SetWindows
(
0
,
0
,
lcddev
.
width
-
1
,
lcddev
.
height
-
1
);
LCD_DC_SET
;
for
(
i
=
0
;
i
<
lcddev
.
height
;
i
++
)
{
for
(
m
=
0
;
m
<
lcddev
.
width
;)
{
m
+=
40
;
rt_spi_send
(
lcd_dev
,
buf
,
80
);
}
}
}
void
LCD_Fill
(
uint16_t
xsta
,
uint16_t
ysta
,
uint16_t
xend
,
uint16_t
yend
,
uint16_t
color
)
{
uint16_t
i
,
j
;
LCD_SetWindows
(
xsta
,
ysta
,
xend
-
1
,
yend
-
1
);
for
(
i
=
ysta
;
i
<
yend
;
i
++
)
{
for
(
j
=
xsta
;
j
<
xend
;
j
++
)
{
LCD_WriteData_16Bit
(
color
);
}
}
}
void
lcd_fill_array_spi
(
uint16_t
Xstart
,
uint16_t
Ystart
,
uint16_t
Xend
,
uint16_t
Yend
,
void
*
Image
)
{
rt_uint32_t
size
=
0
;
size
=
(
Xend
-
Xstart
+
1
)
*
(
Yend
-
Ystart
+
1
)
*
2
;
/*16bit*/
LCD_SetWindows
(
Xstart
,
Ystart
,
Xend
,
Yend
);
LCD_DC_SET
;
rt_spi_send
(
lcd_dev
,
Image
,
size
);
}
static
void
_ili9341_init
(
void
)
{
LCD_WR_REG
(
0xCF
);
LCD_WR_DATA
(
0x00
);
LCD_WR_DATA
(
0X83
);
LCD_WR_DATA
(
0X30
);
LCD_WR_REG
(
0xED
);
LCD_WR_DATA
(
0x64
);
LCD_WR_DATA
(
0x03
);
LCD_WR_DATA
(
0X12
);
LCD_WR_DATA
(
0X81
);
LCD_WR_REG
(
0xE8
);
LCD_WR_DATA
(
0x85
);
LCD_WR_DATA
(
0x00
);
LCD_WR_DATA
(
0x79
);
LCD_WR_REG
(
0xCB
);
LCD_WR_DATA
(
0x39
);
LCD_WR_DATA
(
0x2C
);
LCD_WR_DATA
(
0x00
);
LCD_WR_DATA
(
0x34
);
LCD_WR_DATA
(
0x02
);
LCD_WR_REG
(
0xF7
);
LCD_WR_DATA
(
0x20
);
LCD_WR_REG
(
0xEA
);
LCD_WR_DATA
(
0x00
);
LCD_WR_DATA
(
0x00
);
LCD_WR_REG
(
0xC0
);
/* Power control */
LCD_WR_DATA
(
0x26
);
/* VRH[5:0] */
LCD_WR_REG
(
0xC1
);
/* Power control */
LCD_WR_DATA
(
0x11
);
/* SAP[2:0];BT[3:0] */
LCD_WR_REG
(
0xC5
);
/* VCM control */
LCD_WR_DATA
(
0x35
);
LCD_WR_DATA
(
0x3E
);
LCD_WR_REG
(
0xC7
);
/* VCM control2 */
LCD_WR_DATA
(
0XBE
);
LCD_WR_REG
(
0x36
);
/* Memory Access Control */
LCD_WR_DATA
(
0x28
);
LCD_WR_REG
(
0x3A
);
LCD_WR_DATA
(
0x55
);
LCD_WR_REG
(
0xB1
);
LCD_WR_DATA
(
0x00
);
LCD_WR_DATA
(
0x1B
);
LCD_WR_REG
(
0xB6
);
/* Display Function Control */
LCD_WR_DATA
(
0x0A
);
LCD_WR_DATA
(
0xA2
);
LCD_WR_REG
(
0xF2
);
/* 3Gamma Function Disable */
LCD_WR_DATA
(
0x08
);
LCD_WR_REG
(
0x26
);
/* Gamma curve selected */
LCD_WR_DATA
(
0x01
);
LCD_WR_REG
(
0xE0
);
/* set Gamma */
LCD_WR_DATA
(
0X1F
);
LCD_WR_DATA
(
0X1A
);
LCD_WR_DATA
(
0X18
);
LCD_WR_DATA
(
0X0A
);
LCD_WR_DATA
(
0X0F
);
LCD_WR_DATA
(
0X06
);
LCD_WR_DATA
(
0X45
);
LCD_WR_DATA
(
0X87
);
LCD_WR_DATA
(
0X32
);
LCD_WR_DATA
(
0X0A
);
LCD_WR_DATA
(
0X07
);
LCD_WR_DATA
(
0X02
);
LCD_WR_DATA
(
0X07
);
LCD_WR_DATA
(
0X05
);
LCD_WR_DATA
(
0X00
);
LCD_WR_REG
(
0xE1
);
/* set Gamma */
LCD_WR_DATA
(
0X00
);
LCD_WR_DATA
(
0X25
);
LCD_WR_DATA
(
0X27
);
LCD_WR_DATA
(
0X05
);
LCD_WR_DATA
(
0X10
);
LCD_WR_DATA
(
0X09
);
LCD_WR_DATA
(
0X3A
);
LCD_WR_DATA
(
0X78
);
LCD_WR_DATA
(
0X4D
);
LCD_WR_DATA
(
0X05
);
LCD_WR_DATA
(
0X18
);
LCD_WR_DATA
(
0X0D
);
LCD_WR_DATA
(
0X38
);
LCD_WR_DATA
(
0X3A
);
LCD_WR_DATA
(
0X2F
);
LCD_WR_REG
(
0x29
);
}
void
LCD_Init
(
void
)
{
LCD_RESET
();
/* LCD Hardware Reset */
LCD_WR_REG
(
0x11
);
/* Sleep out */
DELAY
(
120
);
/* Delay 120ms */
_ili9341_init
();
LCD_direction
(
USE_HORIZONTAL
);
}
static
uint16_t
color_array
[]
=
{
WHITE
,
BLACK
,
BLUE
,
BRED
,
GRED
,
GBLUE
,
RED
,
YELLOW
};
static
rt_err_t
lcd_spi_test
()
{
uint8_t
index
=
0
;
for
(
index
=
0
;
index
<
sizeof
(
color_array
)
/
sizeof
(
color_array
[
0
]);
index
++
)
{
LCD_Clear
(
color_array
[
index
]);
DELAY
(
200
);
}
return
RT_EOK
;
}
MSH_CMD_EXPORT
(
lcd_spi_test
,
lcd_spi_test
);
#endif
bsp/renesas/ra6m3-ek/board/ports/ili9341/lcd_ili9341.h
已删除
100644 → 0
浏览文件 @
b0c247fb
/*
* Copyright (c) 2006-2023, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2023-02-23 Rbb666 First version
*/
#ifndef __LCD_ILI9341_H__
#define __LCD_ILI9341_H__
#ifdef __cplusplus
extern
"C"
{
#endif
#include "hal_data.h"
#include <stdint.h>
#include <rtthread.h>
typedef
struct
{
uint16_t
width
;
/* LCD width */
uint16_t
height
;
/* LCD high */
uint32_t
id
;
/* LCD ID */
uint8_t
dir
;
/* 0:Vertical | 1:Vertical */
uint16_t
wramcmd
;
/* gram cmd */
uint16_t
setxcmd
;
/* set x cmd */
uint16_t
setycmd
;
/* set y cmd */
}
_lcd_dev
;
/* LCD param */
extern
_lcd_dev
lcddev
;
#define USE_HORIZONTAL 0
/* 0-0째|1-90째|2-180째|-270째 */
/* lcd size */
#define LCD_W 240
#define LCD_H 320
#define WHITE 0xFFFF
#define BLACK 0x0000
#define BLUE 0x001F
#define BRED 0XF81F
#define GRED 0XFFE0
#define GBLUE 0X07FF
#define RED 0xF800
#define MAGENTA 0xF81F
#define GREEN 0x07E0
#define CYAN 0x7FFF
#define YELLOW 0xFFE0
#define BROWN 0XBC40
#define BRRED 0XFC07
#define GRAY 0X8430
#define LCD_DC_PIN BSP_IO_PORT_04_PIN_13
#define LCD_RES_PIN BSP_IO_PORT_04_PIN_14
#define LCD_CS_PIN BSP_IO_PORT_04_PIN_05
#define LCD_DC_CLR rt_pin_write(LCD_DC_PIN, PIN_LOW)
#define LCD_DC_SET rt_pin_write(LCD_DC_PIN, PIN_HIGH)
#define LCD_RES_CLR rt_pin_write(LCD_RES_PIN, PIN_LOW)
#define LCD_RES_SET rt_pin_write(LCD_RES_PIN, PIN_HIGH)
#define DELAY rt_thread_mdelay
void
LCD_RESET
(
void
);
void
LCD_WR_REG
(
uint8_t
reg
);
void
LCD_WR_DATA
(
uint8_t
data
);
void
LCD_WriteReg
(
uint8_t
reg
,
uint16_t
regdata
);
void
LCD_WriteRAM_Prepare
(
void
);
void
LCD_WriteData_16Bit
(
uint16_t
Data
);
void
LCD_direction
(
uint8_t
direction
);
void
LCD_SetWindows
(
uint16_t
xStar
,
uint16_t
yStar
,
uint16_t
xEnd
,
uint16_t
yEnd
);
void
LCD_SetCursor
(
uint16_t
Xpos
,
uint16_t
Ypos
);
void
LCD_Clear
(
uint16_t
Color
);
void
LCD_Fill
(
uint16_t
xsta
,
uint16_t
ysta
,
uint16_t
xend
,
uint16_t
yend
,
uint16_t
color
);
void
lcd_fill_array_spi
(
uint16_t
x_start
,
uint16_t
y_start
,
uint16_t
x_end
,
uint16_t
y_end
,
void
*
pcolor
);
void
LCD_Init
(
void
);
rt_err_t
spi_lcd_init
(
void
);
#ifdef __cplusplus
}
#endif
#endif
bsp/renesas/ra6m4-cpk/board/Kconfig
浏览文件 @
1cf26a8e
...
...
@@ -329,19 +329,30 @@ menu "Hardware Drivers Config"
endif
endif
menuconfig BSP_USING_SCI_SPI
bool "Enable SCI SPI BUS"
default n
select RT_USING_SPI
if BSP_USING_SCI_SPI
config BSP_USING_SCI_SPI0
bool "Enable SCI SPI0 BUS"
default n
config BSP_USING_SCI_SPI3
bool "Enable SCI SPI3 BUS"
default n
config BSP_USING_SCI_SPI6
bool "Enable SCI SPI6 BUS"
default n
endif
menuconfig BSP_USING_SPI
bool "Enable SPI BUS"
default n
select RT_USING_SPI
if BSP_USING_SPI
config BSP_SPI_USING_DTC_DMA
bool "Enable SPI DTC transfers data without using the CPU."
default n
if BSP_USING_SPI
config BSP_USING_SPI0
bool "Enable SPI0 BUS"
default n
config BSP_USING_SPI1
bool "Enable SPI1 BUS"
default n
...
...
@@ -462,6 +473,7 @@ menu "Hardware Drivers Config"
if BSP_USING_LVGL
config BSP_USING_LCD_ILI9431
bool "Enable LVGL for LCD_ILI9431"
select PKG_USING_ILI9341
select BSP_USING_SPI_LCD
default n
endif
...
...
bsp/renesas/ra6m4-cpk/board/lvgl/lv_port_disp.c
浏览文件 @
1cf26a8e
...
...
@@ -38,7 +38,7 @@ static void disp_flush(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_
void
lv_port_disp_init
(
void
)
{
#ifdef BSP_USING_SPI_LCD
spi_lcd_init
();
spi_lcd_init
(
20
);
#endif
/*Initialize `disp_buf` with the buffer(s). With only one buffer use NULL instead buf_2 */
lv_disp_draw_buf_init
(
&
disp_buf
,
buf_1
,
buf_2
,
COLOR_BUFFER
);
...
...
bsp/renesas/ra6m4-cpk/board/ports/ili9341/SConscript
已删除
100644 → 0
浏览文件 @
b0c247fb
from
building
import
*
import
rtconfig
cwd
=
GetCurrentDir
()
src
=
[]
if
GetDepend
([
'BSP_USING_SPI_LCD'
]):
src
+=
Glob
(
'lcd_ili9341.c'
)
CPPPATH
=
[
cwd
]
LOCAL_CFLAGS
=
''
if
rtconfig
.
PLATFORM
in
[
'gcc'
,
'armclang'
]:
LOCAL_CFLAGS
+=
' -std=c99'
elif
rtconfig
.
PLATFORM
in
[
'armcc'
]:
LOCAL_CFLAGS
+=
' --c99'
group
=
DefineGroup
(
'ili9341'
,
src
,
depend
=
[],
CPPPATH
=
CPPPATH
,
LOCAL_CFLAGS
=
LOCAL_CFLAGS
)
Return
(
'group'
)
bsp/renesas/ra6m4-cpk/board/ports/ili9341/lcd_ili9341.c
已删除
100644 → 0
浏览文件 @
b0c247fb
/*
* Copyright (c) 2006-2023, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2023-02-23 Rbb666 First version
*/
#include <rtdevice.h>
#ifdef BSP_USING_SPI_LCD
#include "lcd_ili9341.h"
#include "drv_spi.h"
/* 2.8 inch LCD module */
/* res pin -> P6_11 */
/* d/c pin -> P4_15 */
/* cs pin -> P4_13 */
/* sda pin -> p4_11 */
/* scl pin -> p4_12 */
_lcd_dev
lcddev
;
static
struct
rt_spi_device
*
lcd_dev
;
rt_err_t
spi_lcd_init
(
void
)
{
rt_err_t
res
=
RT_EOK
;
rt_hw_spi_device_attach
(
"spi1"
,
"spi30"
,
LCD_CS_PIN
,
RT_NULL
);
lcd_dev
=
(
struct
rt_spi_device
*
)
rt_device_find
(
"spi30"
);
if
(
lcd_dev
!=
RT_NULL
)
{
struct
rt_spi_configuration
spi_config
;
spi_config
.
data_width
=
8
;
spi_config
.
max_hz
=
25
*
1000
*
1000
;
spi_config
.
mode
=
RT_SPI_MASTER
|
RT_SPI_MODE_0
|
RT_SPI_MSB
;
rt_spi_configure
(
lcd_dev
,
&
spi_config
);
}
else
{
res
=
-
RT_ERROR
;
}
LCD_Init
();
return
res
;
}
void
LCD_RESET
(
void
)
{
LCD_RES_CLR
;
DELAY
(
100
);
LCD_RES_SET
;
DELAY
(
100
);
}
void
LCD_WR_REG
(
uint8_t
reg
)
{
LCD_DC_CLR
;
rt_spi_send
(
lcd_dev
,
&
reg
,
1
);
LCD_DC_SET
;
}
void
LCD_WR_DATA
(
uint8_t
data
)
{
LCD_DC_SET
;
rt_spi_send
(
lcd_dev
,
&
data
,
1
);
}
void
LCD_ReadData
(
uint8_t
*
data
,
uint16_t
length
)
{
LCD_DC_SET
;
rt_spi_transfer
(
lcd_dev
,
RT_NULL
,
&
data
,
length
);
}
void
LCD_WriteReg
(
uint8_t
reg
,
uint16_t
regdata
)
{
LCD_WR_REG
(
reg
);
LCD_WR_DATA
(
regdata
);
}
void
LCD_WriteRAM_Prepare
(
void
)
{
LCD_WR_REG
(
lcddev
.
wramcmd
);
}
void
LCD_WriteData_16Bit
(
uint16_t
Data
)
{
uint8_t
buf
[
2
];
LCD_DC_SET
;
buf
[
0
]
=
Data
>>
8
;
buf
[
1
]
=
Data
&
0xff
;
rt_spi_send
(
lcd_dev
,
buf
,
2
);
}
void
LCD_direction
(
uint8_t
direction
)
{
lcddev
.
setxcmd
=
0x2A
;
lcddev
.
setycmd
=
0x2B
;
lcddev
.
wramcmd
=
0x2C
;
switch
(
direction
)
{
case
0
:
lcddev
.
width
=
LCD_W
;
lcddev
.
height
=
LCD_H
;
LCD_WriteReg
(
0x36
,
(
1
<<
3
)
|
(
0
<<
6
)
|
(
0
<<
7
));
/* BGR==1,MY==0,MX==0,MV==0 */
break
;
case
1
:
lcddev
.
width
=
LCD_H
;
lcddev
.
height
=
LCD_W
;
LCD_WriteReg
(
0x36
,
(
1
<<
3
)
|
(
0
<<
7
)
|
(
1
<<
6
)
|
(
1
<<
5
));
/* BGR==1,MY==1,MX==0,MV==1 */
break
;
case
2
:
lcddev
.
width
=
LCD_W
;
lcddev
.
height
=
LCD_H
;
LCD_WriteReg
(
0x36
,
(
1
<<
3
)
|
(
1
<<
6
)
|
(
1
<<
7
));
/* BGR==1,MY==0,MX==0,MV==0 */
break
;
case
3
:
lcddev
.
width
=
LCD_H
;
lcddev
.
height
=
LCD_W
;
LCD_WriteReg
(
0x36
,
(
1
<<
3
)
|
(
1
<<
7
)
|
(
1
<<
5
));
/* BGR==1,MY==1,MX==0,MV==1 */
break
;
default:
break
;
}
}
void
LCD_SetWindows
(
uint16_t
xStar
,
uint16_t
yStar
,
uint16_t
xEnd
,
uint16_t
yEnd
)
{
LCD_WR_REG
(
lcddev
.
setxcmd
);
LCD_WR_DATA
(
xStar
>>
8
);
LCD_WR_DATA
(
0x00FF
&
xStar
);
LCD_WR_DATA
(
xEnd
>>
8
);
LCD_WR_DATA
(
0x00FF
&
xEnd
);
LCD_WR_REG
(
lcddev
.
setycmd
);
LCD_WR_DATA
(
yStar
>>
8
);
LCD_WR_DATA
(
0x00FF
&
yStar
);
LCD_WR_DATA
(
yEnd
>>
8
);
LCD_WR_DATA
(
0x00FF
&
yEnd
);
LCD_WriteRAM_Prepare
();
}
void
LCD_SetCursor
(
uint16_t
Xpos
,
uint16_t
Ypos
)
{
LCD_SetWindows
(
Xpos
,
Ypos
,
Xpos
,
Ypos
);
}
void
LCD_Clear
(
uint16_t
Color
)
{
unsigned
int
i
,
m
;
uint8_t
buf
[
80
];
for
(
i
=
0
;
i
<
40
;
i
++
)
{
buf
[
2
*
i
]
=
Color
>>
8
;
buf
[
2
*
i
+
1
]
=
Color
&
0xff
;
}
LCD_SetWindows
(
0
,
0
,
lcddev
.
width
-
1
,
lcddev
.
height
-
1
);
LCD_DC_SET
;
for
(
i
=
0
;
i
<
lcddev
.
height
;
i
++
)
{
for
(
m
=
0
;
m
<
lcddev
.
width
;)
{
m
+=
40
;
rt_spi_send
(
lcd_dev
,
buf
,
80
);
}
}
}
void
LCD_Fill
(
uint16_t
xsta
,
uint16_t
ysta
,
uint16_t
xend
,
uint16_t
yend
,
uint16_t
color
)
{
uint16_t
i
,
j
;
LCD_SetWindows
(
xsta
,
ysta
,
xend
-
1
,
yend
-
1
);
for
(
i
=
ysta
;
i
<
yend
;
i
++
)
{
for
(
j
=
xsta
;
j
<
xend
;
j
++
)
{
LCD_WriteData_16Bit
(
color
);
}
}
}
void
lcd_fill_array_spi
(
uint16_t
Xstart
,
uint16_t
Ystart
,
uint16_t
Xend
,
uint16_t
Yend
,
void
*
Image
)
{
rt_uint32_t
size
=
0
;
size
=
(
Xend
-
Xstart
+
1
)
*
(
Yend
-
Ystart
+
1
)
*
2
;
/*16bit*/
LCD_SetWindows
(
Xstart
,
Ystart
,
Xend
,
Yend
);
LCD_DC_SET
;
rt_spi_send
(
lcd_dev
,
Image
,
size
);
}
static
void
_ili9341_init
(
void
)
{
LCD_WR_REG
(
0xCF
);
LCD_WR_DATA
(
0x00
);
LCD_WR_DATA
(
0X83
);
LCD_WR_DATA
(
0X30
);
LCD_WR_REG
(
0xED
);
LCD_WR_DATA
(
0x64
);
LCD_WR_DATA
(
0x03
);
LCD_WR_DATA
(
0X12
);
LCD_WR_DATA
(
0X81
);
LCD_WR_REG
(
0xE8
);
LCD_WR_DATA
(
0x85
);
LCD_WR_DATA
(
0x00
);
LCD_WR_DATA
(
0x79
);
LCD_WR_REG
(
0xCB
);
LCD_WR_DATA
(
0x39
);
LCD_WR_DATA
(
0x2C
);
LCD_WR_DATA
(
0x00
);
LCD_WR_DATA
(
0x34
);
LCD_WR_DATA
(
0x02
);
LCD_WR_REG
(
0xF7
);
LCD_WR_DATA
(
0x20
);
LCD_WR_REG
(
0xEA
);
LCD_WR_DATA
(
0x00
);
LCD_WR_DATA
(
0x00
);
LCD_WR_REG
(
0xC0
);
/* Power control */
LCD_WR_DATA
(
0x26
);
/* VRH[5:0] */
LCD_WR_REG
(
0xC1
);
/* Power control */
LCD_WR_DATA
(
0x11
);
/* SAP[2:0];BT[3:0] */
LCD_WR_REG
(
0xC5
);
/* VCM control */
LCD_WR_DATA
(
0x35
);
LCD_WR_DATA
(
0x3E
);
LCD_WR_REG
(
0xC7
);
/* VCM control2 */
LCD_WR_DATA
(
0XBE
);
LCD_WR_REG
(
0x36
);
/* Memory Access Control */
LCD_WR_DATA
(
0x28
);
LCD_WR_REG
(
0x3A
);
LCD_WR_DATA
(
0x55
);
LCD_WR_REG
(
0xB1
);
LCD_WR_DATA
(
0x00
);
LCD_WR_DATA
(
0x1B
);
LCD_WR_REG
(
0xB6
);
/* Display Function Control */
LCD_WR_DATA
(
0x0A
);
LCD_WR_DATA
(
0xA2
);
LCD_WR_REG
(
0xF2
);
/* 3Gamma Function Disable */
LCD_WR_DATA
(
0x08
);
LCD_WR_REG
(
0x26
);
/* Gamma curve selected */
LCD_WR_DATA
(
0x01
);
LCD_WR_REG
(
0xE0
);
/* set Gamma */
LCD_WR_DATA
(
0X1F
);
LCD_WR_DATA
(
0X1A
);
LCD_WR_DATA
(
0X18
);
LCD_WR_DATA
(
0X0A
);
LCD_WR_DATA
(
0X0F
);
LCD_WR_DATA
(
0X06
);
LCD_WR_DATA
(
0X45
);
LCD_WR_DATA
(
0X87
);
LCD_WR_DATA
(
0X32
);
LCD_WR_DATA
(
0X0A
);
LCD_WR_DATA
(
0X07
);
LCD_WR_DATA
(
0X02
);
LCD_WR_DATA
(
0X07
);
LCD_WR_DATA
(
0X05
);
LCD_WR_DATA
(
0X00
);
LCD_WR_REG
(
0xE1
);
/* set Gamma */
LCD_WR_DATA
(
0X00
);
LCD_WR_DATA
(
0X25
);
LCD_WR_DATA
(
0X27
);
LCD_WR_DATA
(
0X05
);
LCD_WR_DATA
(
0X10
);
LCD_WR_DATA
(
0X09
);
LCD_WR_DATA
(
0X3A
);
LCD_WR_DATA
(
0X78
);
LCD_WR_DATA
(
0X4D
);
LCD_WR_DATA
(
0X05
);
LCD_WR_DATA
(
0X18
);
LCD_WR_DATA
(
0X0D
);
LCD_WR_DATA
(
0X38
);
LCD_WR_DATA
(
0X3A
);
LCD_WR_DATA
(
0X2F
);
LCD_WR_REG
(
0x29
);
}
void
LCD_Init
(
void
)
{
LCD_RESET
();
/* LCD Hardware Reset */
LCD_WR_REG
(
0x11
);
/* Sleep out */
DELAY
(
120
);
/* Delay 120ms */
_ili9341_init
();
LCD_direction
(
USE_HORIZONTAL
);
}
static
uint16_t
color_array
[]
=
{
WHITE
,
BLACK
,
BLUE
,
BRED
,
GRED
,
GBLUE
,
RED
,
YELLOW
};
static
rt_err_t
lcd_spi_test
()
{
uint8_t
index
=
0
;
for
(
index
=
0
;
index
<
sizeof
(
color_array
)
/
sizeof
(
color_array
[
0
]);
index
++
)
{
LCD_Clear
(
color_array
[
index
]);
DELAY
(
200
);
}
return
RT_EOK
;
}
MSH_CMD_EXPORT
(
lcd_spi_test
,
lcd_spi_test
);
#endif
bsp/renesas/ra6m4-cpk/board/ports/ili9341/lcd_ili9341.h
已删除
100644 → 0
浏览文件 @
b0c247fb
/*
* Copyright (c) 2006-2023, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2023-02-23 Rbb666 First version
*/
#ifndef __LCD_ILI9341_H__
#define __LCD_ILI9341_H__
#ifdef __cplusplus
extern
"C"
{
#endif
#include "hal_data.h"
#include <stdint.h>
#include <rtthread.h>
typedef
struct
{
uint16_t
width
;
/* LCD width */
uint16_t
height
;
/* LCD high */
uint32_t
id
;
/* LCD ID */
uint8_t
dir
;
/* 0:Vertical | 1:Vertical */
uint16_t
wramcmd
;
/* gram cmd */
uint16_t
setxcmd
;
/* set x cmd */
uint16_t
setycmd
;
/* set y cmd */
}
_lcd_dev
;
/* LCD param */
extern
_lcd_dev
lcddev
;
#define USE_HORIZONTAL 0
/* 0-0째|1-90째|2-180째|-270째 */
/* lcd size */
#define LCD_W 240
#define LCD_H 320
#define WHITE 0xFFFF
#define BLACK 0x0000
#define BLUE 0x001F
#define BRED 0XF81F
#define GRED 0XFFE0
#define GBLUE 0X07FF
#define RED 0xF800
#define MAGENTA 0xF81F
#define GREEN 0x07E0
#define CYAN 0x7FFF
#define YELLOW 0xFFE0
#define BROWN 0XBC40
#define BRRED 0XFC07
#define GRAY 0X8430
#define LCD_DC_PIN BSP_IO_PORT_04_PIN_15
#define LCD_RES_PIN BSP_IO_PORT_06_PIN_11
#define LCD_CS_PIN BSP_IO_PORT_04_PIN_13
#define LCD_DC_CLR rt_pin_write(LCD_DC_PIN, PIN_LOW)
#define LCD_DC_SET rt_pin_write(LCD_DC_PIN, PIN_HIGH)
#define LCD_RES_CLR rt_pin_write(LCD_RES_PIN, PIN_LOW)
#define LCD_RES_SET rt_pin_write(LCD_RES_PIN, PIN_HIGH)
#define DELAY rt_thread_mdelay
/* res pin -> P6_11 */
/* d/c pin -> P4_15 */
/* cs pin -> P4_13 */
void
LCD_RESET
(
void
);
void
LCD_WR_REG
(
uint8_t
reg
);
void
LCD_WR_DATA
(
uint8_t
data
);
void
LCD_WriteReg
(
uint8_t
reg
,
uint16_t
regdata
);
void
LCD_WriteRAM_Prepare
(
void
);
void
LCD_WriteData_16Bit
(
uint16_t
Data
);
void
LCD_direction
(
uint8_t
direction
);
void
LCD_SetWindows
(
uint16_t
xStar
,
uint16_t
yStar
,
uint16_t
xEnd
,
uint16_t
yEnd
);
void
LCD_SetCursor
(
uint16_t
Xpos
,
uint16_t
Ypos
);
void
LCD_Clear
(
uint16_t
Color
);
void
LCD_Fill
(
uint16_t
xsta
,
uint16_t
ysta
,
uint16_t
xend
,
uint16_t
yend
,
uint16_t
color
);
void
lcd_fill_array_spi
(
uint16_t
x_start
,
uint16_t
y_start
,
uint16_t
x_end
,
uint16_t
y_end
,
void
*
pcolor
);
void
LCD_Init
(
void
);
rt_err_t
spi_lcd_init
(
void
);
#ifdef __cplusplus
}
#endif
#endif
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录