社区首页
技术讨论创新帖
全部新帖
资料区
社区活动
联系管理员
★ 社区积分制度
★ 新手必读
★ 申请版主★
请
登录
后使用快捷导航
没有帐号?
注册
首页
|
电子技术
|
嵌入式
模拟电子
单片机
电源管理
传感器
半导体
电子应用
|
工业控制
物联网
汽车电子
网络通信
医疗电子
手机便携
测试测量
安防电子
家用电子
机器人
新能源
电子头条
|
社区
|
论坛
测评
博客
大学堂
|
下载
|
下载中心
电路图
精品文集
电路图
|
参考设计
|
Datasheet
|
活动
|
直播
datasheet
datasheet
文章
搜索
登录
注册
中文
En
论坛
切换旧版
电子工程世界-论坛
»
论坛
›
电子技术交流
›
国产芯片交流
›
全志R128适配 ST7789v LCD
返回列表
发新帖
回复
阅
818
|
回
0
aleksib
当前离线
纯净的硅(中级)
最后登录
2025-2-13
在线时间
40 小时
威望
1004分
芯积分
517分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
aleksib
289
帖子
0
TA的资源
纯净的硅(中级)
+ 好友
私信
楼主
发表于2023-10-23 10:10
只看该作者
全志R128适配 ST7789v LCD
[复制链接]
# 适配 ST7789v LCD R128 平台提供了 SPI DBI 的 SPI TFT 接口,具有如下特点: - Supports DBI Type C 3 Line/4 Line Interface Mode - Supports 2 Data Lane Interface Mode - Supports data source from CPU or DMA - Supports RGB111/444/565/666/888 video format - Maximum resolution of RGB666 240 x 320@30Hz with single data lane - Maximum resolution of RGB888 240 x 320@60Hz or 320 x 480@30Hz with dual data lane - Supports tearing effect - Supports software flexible control video frame rate 同时,提供了 SPILCD 驱动框架以供 SPI 屏幕使用。 此次适配的SPI屏为 `ZJY240S0800TG11`,使用的是 SPI 进行驱动。注意请购买带 CS 引脚的 SPI 屏幕,由于 ST7789v SPI 时序问题,CS 引脚直接接地可能会导致初始化无法写入。如果很不幸SPI TFT是不带 CS 的,请飞线出来连接 CS 引脚(如图所示) ![在这里插入图片描述](https://img-blog.csdnimg.cn/35474e7c8dbd48cfa4c2a861c75b27eb.png#pic_center) 引脚配置如下: | R128 Devkit | TFT 模块 | | ----------- | ---------- | | PA12 | CS(飞线) | | PA13 | CLK | | PA18 | MOSI | | PA9 | BLK | | PA20 | RES | | PA19 | DC | | 3V3 | VCC | | GND | GND | | 悬空 | MISO | ## 载入方案 我们使用的开发板是 R128-Devkit,需要开发 C906 核心的应用程序,所以载入方案选择 `r128s2_module_c906` ```bash $ source envsetup.sh $ lunch_rtos 1 ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/9e05540f60414c29bda43f4f45548db6.png#pic_center) ## 设置 SPI 驱动 屏幕使用的是SPI驱动,所以需要勾选SPI驱动,运行 `mrtos_menuconfig` 进入配置页面。前往下列地址找到 `SPI Devices` ```c Drivers Options---> soc related device drivers---> SPI Devices ---> -*- enable spi driver ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/2a5b450bf20e435db016f2448d85fe01.png#pic_center) ### 配置 SPI 引脚 打开你喜欢的编辑器,修改文件:`board/r128s2/module/configs/sys_config.fex`,在这里我们不需要用到 SPI HOLD与SPI WP引脚,注释掉即可。 ``` ;---------------------------------------------------------------------------------- ;SPI controller configuration ;---------------------------------------------------------------------------------- ;Please config spi in dts [spi1] spi1_used = 1 spi1_cs_number= 1 spi1_cs_bitmap= 1 spi1_cs0 = port:PA12<6><0><3>
spi1_sclk = port:PA13<6><0><3>
spi1_mosi = port:PA18<6><0><3>
spi1_miso = port:PA21<6><0><3>
;spi1_hold = port:PA19<6><0><2>
;spi1_wp = port:PA20<6><0><2>
``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/a704374fbebe4fa2a7a28648af520170.png#pic_center) ## 设置 PWM 驱动 屏幕背光使用的是PWM驱动,所以需要勾选PWM驱动,运行 `mrtos_menuconfig` 进入配置页面。前往下列地址找到 `PWM Devices` ``` Drivers Options---> soc related device drivers---> PWM Devices ---> -*- enable pwm driver ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/450439fc856d45e88f1195e7c79b796e.png#pic_center) ### 配置 PWM 引脚 打开你喜欢的编辑器,修改文件:`board/r128s2/module/configs/sys_config.fex`,增加 PWM1 节点 ``` [pwm1] pwm_used = 1 pwm_positive = port:PA9<4><0><3>
``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/fb71ac3f2cac40a7a54bc148defc1626.png#pic_center) ## 设置 SPI LCD 驱动 SPI LCD 由专门的驱动管理。运行 `mrtos_menuconfig` 进入配置页面。前往下列地址找到 `SPILCD Devices` ,注意同时勾选 `spilcd hal APIs test` 方便测试使用。 ``` Drivers Options---> soc related device drivers---> [*] DISP Driver Support(spi_lcd) [*] spilcd hal APIs test ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/f75b3b8b1bbb47aeaa91c9f651c813ed.png#pic_center) ## 编写 SPI LCD 显示屏驱动 ### 获取屏幕初始化序列 首先询问屏厂提供驱动源码 ![在这里插入图片描述](https://img-blog.csdnimg.cn/fbe18b2bc6114cf69c28a4469864293f.png#pic_center) 找到 LCD 的初始化序列代码 ![在这里插入图片描述](https://img-blog.csdnimg.cn/46c52efca5c44055ad5d56ce66ac3b32.png#pic_center) 找到屏幕初始化的源码 ![在这里插入图片描述](https://img-blog.csdnimg.cn/8047740ea81e4a94a17ed4c3e939f86e.png#pic_center) 整理后的初始化代码如下: ```c LCD_WR_REG(0x11); delay_ms(120); // Delay 120ms // display and color format setting LCD_WR_REG(0X36); LCD_WR_DATA8(0x00); LCD_WR_REG(0X3A); LCD_WR_DATA8(0X05); // ST7789S Frame rate setting LCD_WR_REG(0xb2); LCD_WR_DATA8(0x0c); LCD_WR_DATA8(0x0c); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x33); LCD_WR_DATA8(0x33); LCD_WR_REG(0xb7); LCD_WR_DATA8(0x35); // ST7789S Power setting LCD_WR_REG(0xbb); LCD_WR_DATA8(0x35); LCD_WR_REG(0xc0); LCD_WR_DATA8(0x2c); LCD_WR_REG(0xc2); LCD_WR_DATA8(0x01); LCD_WR_REG(0xc3); LCD_WR_DATA8(0x13); LCD_WR_REG(0xc4); LCD_WR_DATA8(0x20); LCD_WR_REG(0xc6); LCD_WR_DATA8(0x0f); LCD_WR_REG(0xca); LCD_WR_DATA8(0x0f); LCD_WR_REG(0xc8); LCD_WR_DATA8(0x08); LCD_WR_REG(0x55); LCD_WR_DATA8(0x90); LCD_WR_REG(0xd0); LCD_WR_DATA8(0xa4); LCD_WR_DATA8(0xa1); // ST7789S gamma setting LCD_WR_REG(0xe0); LCD_WR_DATA8(0xd0); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x06); LCD_WR_DATA8(0x09); LCD_WR_DATA8(0x0b); LCD_WR_DATA8(0x2a); LCD_WR_DATA8(0x3c); LCD_WR_DATA8(0x55); LCD_WR_DATA8(0x4b); LCD_WR_DATA8(0x08); LCD_WR_DATA8(0x16); LCD_WR_DATA8(0x14); LCD_WR_DATA8(0x19); LCD_WR_DATA8(0x20); LCD_WR_REG(0xe1); LCD_WR_DATA8(0xd0); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x06); LCD_WR_DATA8(0x09); LCD_WR_DATA8(0x0b); LCD_WR_DATA8(0x29); LCD_WR_DATA8(0x36); LCD_WR_DATA8(0x54); LCD_WR_DATA8(0x4b); LCD_WR_DATA8(0x0d); LCD_WR_DATA8(0x16); LCD_WR_DATA8(0x14); LCD_WR_DATA8(0x21); LCD_WR_DATA8(0x20); LCD_WR_REG(0x29); ``` ### 用现成驱动改写 SPI LCD 驱动 选择一个现成的 SPI LCD 改写即可,这里选择 `nv3029s.c` 驱动来修改 ![在这里插入图片描述](https://img-blog.csdnimg.cn/6bf7741fed014fe682ca465f104fb1b8.png#pic_center) 复制这两个驱动,重命名为 `st7789v.c` ![在这里插入图片描述](https://img-blog.csdnimg.cn/88ff0b72dd3748e68b623292b9ac85bc.png#pic_center) 先编辑 `st7789v.h` 将 `nv3029s` 改成 `st7789v` ![在这里插入图片描述](https://img-blog.csdnimg.cn/aeb376d9e36147a9a729aac0f0ef07fd.png#pic_center) ```c #ifndef _ST7789V_H #define _ST7789V_H #include "panels.h" struct __lcd_panel st7789v_panel; #endif /*End of file*/ ``` 编辑 `st7789v.c` 将 `nv3029s` 改成 `st7789v` ![在这里插入图片描述](https://img-blog.csdnimg.cn/4c1b39e263e54b6a8ac92a4170bc5994.png#pic_center) 然后将屏厂提供的初始化序列复制进来 ![在这里插入图片描述](https://img-blog.csdnimg.cn/fc6f3b9482534f12a7e2d6e197e5e7c8.png#pic_center) 然后按照 `spi_lcd` 框架的接口改写驱动接口,具体接口如下 | 屏厂函数 | SPILCD框架接口 | | -------------- | ---------------------- | | `LCD_WR_REG` | `sunxi_lcd_cmd_write`| | `LCD_WR_DATA8` | `sunxi_lcd_para_write` | | `delay_ms` | `sunxi_lcd_delay_ms` | ![在这里插入图片描述](https://img-blog.csdnimg.cn/238265d97cf8484aa265b0471cf28ccb.png#pic_center) 完成驱动如下 ```c #include "st7789v.h" static void LCD_power_on(u32 sel); static void LCD_power_off(u32 sel); static void LCD_bl_open(u32 sel); static void LCD_bl_close(u32 sel); static void LCD_panel_init(u32 sel); static void LCD_panel_exit(u32 sel); #define RESET(s, v) sunxi_lcd_gpio_set_value(s, 0, v) #define power_en(sel, val) sunxi_lcd_gpio_set_value(sel, 0, val) static struct disp_panel_para info[LCD_FB_MAX]; static void address(unsigned int sel, int x, int y, int width, int height) { sunxi_lcd_cmd_write(sel, 0x2B); /* Set row address */ sunxi_lcd_para_write(sel, (y >> 8) & 0xff); sunxi_lcd_para_write(sel, y & 0xff); sunxi_lcd_para_write(sel, (height >> 8) & 0xff); sunxi_lcd_para_write(sel, height & 0xff); sunxi_lcd_cmd_write(sel, 0x2A); /* Set coloum address */ sunxi_lcd_para_write(sel, (x >> 8) & 0xff); sunxi_lcd_para_write(sel, x & 0xff); sunxi_lcd_para_write(sel, (width >> 8) & 0xff); sunxi_lcd_para_write(sel, width & 0xff); sunxi_lcd_cmd_write(sel, 0x2c); } static void LCD_panel_init(unsigned int sel) { if (bsp_disp_get_panel_info(sel, &info[sel])) { lcd_fb_wrn("get panel info fail!\n"); return; } sunxi_lcd_cmd_write(sel, 0x11); sunxi_lcd_delay_ms(120); /* display and color format setting */ sunxi_lcd_cmd_write(sel, 0X36); sunxi_lcd_para_write(sel, 0x00); sunxi_lcd_cmd_write(sel, 0X3A); sunxi_lcd_para_write(sel, 0X05); /* ST7789S Frame rate setting */ sunxi_lcd_cmd_write(sel, 0xb2); sunxi_lcd_para_write(sel, 0x0c); sunxi_lcd_para_write(sel, 0x0c); sunxi_lcd_para_write(sel, 0x00); sunxi_lcd_para_write(sel, 0x33); sunxi_lcd_para_write(sel, 0x33); sunxi_lcd_cmd_write(sel, 0xb7); sunxi_lcd_para_write(sel, 0x35); /* ST7789S Power setting */ sunxi_lcd_cmd_write(sel, 0xbb); sunxi_lcd_para_write(sel, 0x35); sunxi_lcd_cmd_write(sel, 0xc0); sunxi_lcd_para_write(sel, 0x2c); sunxi_lcd_cmd_write(sel, 0xc2); sunxi_lcd_para_write(sel, 0x01); sunxi_lcd_cmd_write(sel, 0xc3); sunxi_lcd_para_write(sel, 0x13); sunxi_lcd_cmd_write(sel, 0xc4); sunxi_lcd_para_write(sel, 0x20); sunxi_lcd_cmd_write(sel, 0xc6); sunxi_lcd_para_write(sel, 0x0f); sunxi_lcd_cmd_write(sel, 0xca); sunxi_lcd_para_write(sel, 0x0f); sunxi_lcd_cmd_write(sel, 0xc8); sunxi_lcd_para_write(sel, 0x08); sunxi_lcd_cmd_write(sel, 0x55); sunxi_lcd_para_write(sel, 0x90); sunxi_lcd_cmd_write(sel, 0xd0); sunxi_lcd_para_write(sel, 0xa4); sunxi_lcd_para_write(sel, 0xa1); /* ST7789S gamma setting */ sunxi_lcd_cmd_write(sel, 0xe0); sunxi_lcd_para_write(sel, 0xd0); sunxi_lcd_para_write(sel, 0x00); sunxi_lcd_para_write(sel, 0x06); sunxi_lcd_para_write(sel, 0x09); sunxi_lcd_para_write(sel, 0x0b); sunxi_lcd_para_write(sel, 0x2a); sunxi_lcd_para_write(sel, 0x3c); sunxi_lcd_para_write(sel, 0x55); sunxi_lcd_para_write(sel, 0x4b); sunxi_lcd_para_write(sel, 0x08); sunxi_lcd_para_write(sel, 0x16); sunxi_lcd_para_write(sel, 0x14); sunxi_lcd_para_write(sel, 0x19); sunxi_lcd_para_write(sel, 0x20); sunxi_lcd_cmd_write(sel, 0xe1); sunxi_lcd_para_write(sel, 0xd0); sunxi_lcd_para_write(sel, 0x00); sunxi_lcd_para_write(sel, 0x06); sunxi_lcd_para_write(sel, 0x09); sunxi_lcd_para_write(sel, 0x0b); sunxi_lcd_para_write(sel, 0x29); sunxi_lcd_para_write(sel, 0x36); sunxi_lcd_para_write(sel, 0x54); sunxi_lcd_para_write(sel, 0x4b); sunxi_lcd_para_write(sel, 0x0d); sunxi_lcd_para_write(sel, 0x16); sunxi_lcd_para_write(sel, 0x14); sunxi_lcd_para_write(sel, 0x21); sunxi_lcd_para_write(sel, 0x20); sunxi_lcd_cmd_write(sel, 0x29); if (info[sel].lcd_x < info[sel].lcd_y) address(sel, 0, 0, info[sel].lcd_x - 1, info[sel].lcd_y - 1); else address(sel, 0, 0, info[sel].lcd_y - 1, info[sel].lcd_x - 1); } static void LCD_panel_exit(unsigned int sel) { sunxi_lcd_cmd_write(sel, 0x28); sunxi_lcd_delay_ms(20); sunxi_lcd_cmd_write(sel, 0x10); sunxi_lcd_delay_ms(20); sunxi_lcd_pin_cfg(sel, 0); } static s32 LCD_open_flow(u32 sel) { lcd_fb_here; /* open lcd power, and delay 50ms */ LCD_OPEN_FUNC(sel, LCD_power_on, 50); /* open lcd power, than delay 200ms */ LCD_OPEN_FUNC(sel, LCD_panel_init, 200); LCD_OPEN_FUNC(sel, lcd_fb_black_screen, 50); /* open lcd backlight, and delay 0ms */ LCD_OPEN_FUNC(sel, LCD_bl_open, 0); return 0; } static s32 LCD_close_flow(u32 sel) { lcd_fb_here; /* close lcd backlight, and delay 0ms */ LCD_CLOSE_FUNC(sel, LCD_bl_close, 50); /* open lcd power, than delay 200ms */ LCD_CLOSE_FUNC(sel, LCD_panel_exit, 10); /* close lcd power, and delay 500ms */ LCD_CLOSE_FUNC(sel, LCD_power_off, 10); return 0; } static void LCD_power_on(u32 sel) { /* config lcd_power pin to open lcd power0 */ lcd_fb_here; power_en(sel, 1); sunxi_lcd_power_enable(sel, 0); sunxi_lcd_pin_cfg(sel, 1); RESET(sel, 1); sunxi_lcd_delay_ms(100); RESET(sel, 0); sunxi_lcd_delay_ms(100); RESET(sel, 1); } static void LCD_power_off(u32 sel) { lcd_fb_here; /* config lcd_power pin to close lcd power0 */ sunxi_lcd_power_disable(sel, 0); power_en(sel, 0); } static void LCD_bl_open(u32 sel) { sunxi_lcd_pwm_enable(sel); /* config lcd_bl_en pin to open lcd backlight */ sunxi_lcd_backlight_enable(sel); lcd_fb_here; } static void LCD_bl_close(u32 sel) { /* config lcd_bl_en pin to close lcd backlight */ sunxi_lcd_backlight_disable(sel); sunxi_lcd_pwm_disable(sel); lcd_fb_here; } /* sel: 0:lcd0; 1:lcd1 */ static s32 LCD_user_defined_func(u32 sel, u32 para1, u32 para2, u32 para3) { lcd_fb_here; return 0; } static int lcd_set_var(unsigned int sel, struct fb_info *p_info) { return 0; } static int lcd_set_addr_win(unsigned int sel, int x, int y, int width, int height) { address(sel, x, y, width, height); return 0; } static int lcd_blank(unsigned int sel, unsigned int en) { return 0; } struct __lcd_panel st7789v_panel = { /* panel driver name, must mach the name of lcd_drv_name in sys_config.fex */ .name = "st7789v", .func = { .cfg_open_flow = LCD_open_flow, .cfg_close_flow = LCD_close_flow, .lcd_user_defined_func = LCD_user_defined_func, .blank = lcd_blank, .set_var = lcd_set_var, .set_addr_win = lcd_set_addr_win, }, }; ``` ### 对接驱动框架 完成了屏幕驱动的编写,接下来需要对接到 SPILCD 驱动框架。首先编辑 `Kconfig` ![在这里插入图片描述](https://img-blog.csdnimg.cn/2563f0c719d04900bc06e1a5a932d9e9.png#pic_center) 增加 `st7789v` 的配置 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ec8ed4ca5799475795ea04676b2afcfe.png#pic_center) ``` config LCD_SUPPORT_ST7789V bool "LCD support st7789v panel" default n ---help--- If you want to support st7789v panel for display driver, select it. ``` 然后编辑 `panels.c` 在 `panel_array` 里增加 `st7789` 驱动的引用 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ff388c27cc384a1ea6ce227e9afad36c.png#pic_center) 如下图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/eb00246233fa492f8546545a48ef4bc1.png#pic_center) ```c #ifdef CONFIG_LCD_SUPPORT_ST7789V &st7789v_panel, #endif ``` 之后编辑 `panels.h` 同样增加引用 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ffda9d8d9e7f4b48828196cda2065d88.png#pic_center) 如下图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f7a37d0f17d14d1fb676d67a0a16f80d.png#pic_center) ```c #ifdef CONFIG_LCD_SUPPORT_ST7789V extern struct __lcd_panel st7789v_panel; #endif ``` 最后编辑外层的 `Makefile` 增加编译选项 ![在这里插入图片描述](https://img-blog.csdnimg.cn/c4119bf2f7bb46f5b4a1202d7ffdc0e2.png#pic_center) 如下所示 ![在这里插入图片描述](https://img-blog.csdnimg.cn/08a2747f5d794e83a8ab48505f8e55e8.png#pic_center) ```c obj-${CONFIG_LCD_SUPPORT_ST7789V} += panels/st7789v.o ``` ### 选择 ST7789V 驱动 在 SPILCD 驱动选择界面可以看到 ` LCD_FB panels select` 选择 SPI 屏幕的驱动 进入 `LCD_FB panels select` 选项 ![在这里插入图片描述](https://img-blog.csdnimg.cn/6adcb067418b40bfa1315ecdb5e37b8d.png#pic_center) 选择并勾选 `[*] LCD support st7789v panel` ![在这里插入图片描述](https://img-blog.csdnimg.cn/6f1e6c5c1c2b43d2bbf0ca5dd9c017b0.png#pic_center) ### 配置 SPI LCD 引脚 打开你喜欢的编辑器,修改文件:`board/r128s2/module/configs/sys_config.fex` ``` [lcd_fb0] lcd_used = 1 lcd_model_name = "spilcd" lcd_driver_name = "st7789v" lcd_x = 240 lcd_y = 320 lcd_width = 37 lcd_height = 48 lcd_data_speed = 50 lcd_pwm_used = 1 lcd_pwm_ch = 1 lcd_pwm_freq = 5000 lcd_pwm_pol = 0 lcd_if = 0 lcd_pixel_fmt = 11 lcd_dbi_fmt = 2 lcd_dbi_clk_mode = 1 lcd_dbi_te = 1 fb_buffer_num = 2 lcd_dbi_if = 4 lcd_rgb_order = 0 lcd_fps = 60 lcd_spi_bus_num = 1 lcd_frm = 2 lcd_gamma_en = 1 lcd_backlight = 100 lcd_power_num = 0 lcd_gpio_regu_num = 0 lcd_bl_percent_num= 0 lcd_spi_dc_pin = port:PA19<1><0><3><0> ;RESET Pin lcd_gpio_0 = port:PA20<1><0><2><0> ``` ## 编译打包 运行命令 `mp` 编译打包,可以看到编译了 `st7789v.o` ![在这里插入图片描述](https://img-blog.csdnimg.cn/9b309db9dc8f4584be9cd0ba9806562f.png#pic_center) ## 测试 烧录启动之后,屏幕背光启动,但是屏幕全黑。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/406b6892f4f6449b95dd0c1de84ad23d.png#pic_center) 输入 `test_spilcd` ,屏幕显示黄色。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e4c075ac04724ce8a15913fdde6afe30.png#pic_center) ![在这里插入图片描述](https://img-blog.csdnimg.cn/903af0849fd8420a9d04fc8199db173f.png#pic_center) 输入 `lv_examples 1` 可以显示 `lvgl` 界面 ![在这里插入图片描述](https://img-blog.csdnimg.cn/d6385e258f2f47d39183b25f905ad193.png#pic_center) ## 常见问题 ### 屏幕白屏 屏幕白屏,但是背光亮起 ![](https://img-blog.csdnimg.cn/21fa6b9c0d4c4dce81a1690cddd77890.png#pic_center) 白屏是因为屏幕没有初始化,需要检查屏幕初始化序列或者初始化数据是否正确。 ### 屏幕花屏 屏幕花屏,无法控制 ![在这里插入图片描述](https://img-blog.csdnimg.cn/758ab8612ef84f53af31bc5cf0732eb3.png#pic_center) 花屏一般是因为屏幕初始化后没有正确设置 `addrwin`,或者初始化序列错误。 ### LVGL 屏幕颜色不正确 出现反色,颜色异常 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e933982dd37c4bbf828def59190c09e4.png#pic_center) 请配置 LVGL `LV_COLOR_DEPTH` 参数为 16,`LV_COLOR_16_SWAP` 为 1,这是由 SPI LCD 的特性决定的。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/6e8f32522bb541bfac2b01b8d775ead0.png#pic_center) ### 显示反色 运行`test_spilcd` ,屏幕显示蓝色。 这是由于屏幕启动了 RB SWAP,一般是 `0x36` 寄存器修改 正常显示 ``` sunxi_lcd_cmd_write(sel, 0X36); sunxi_lcd_para_write(sel, 0x00); ``` 反色显示 ``` sunxi_lcd_cmd_write(sel, 0X36); sunxi_lcd_para_write(sel, 0x08); ```
此帖出自
国产芯片交流论坛
点赞
关注
(0)
回复
分享
扫一扫,分享给好友
复制链接分享
链接复制成功,分享给好友
举报
提升卡
变色卡
千斤顶
返回列表
发新帖
回复
您需要登录后才可以回帖
登录
|
注册
发表回复
回帖后跳转到最后一页
活动
更多>>
ADI & WT 痛点问题探索季第一站:征集 | 晒电机控制痛点与难题,一起寻求最优解!
有奖直播报名 |TI全新推出极具性价比的通用型处理器AM62L
【NI有奖直播报名】当DeepSeek遇到LabVIEW
2025玄铁RISC-V生态大会 火热报名中,参会赢好礼
Microchip 直播|利用motorBench
®
开发套件高效开发电机磁场定向控制方案
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
福禄克有奖直播:高精度测温赋能电子制造
有奖直播 | TI 助力机器人电机控制系统设计
开源项目
更多>>
DC2459A-B,具有 LT6600 16 位、50Msps DAC、差分 ±0.25V 输出的 LTC1668 演示板
EVAL-ADM2914EBZ,用于服务器 ADM2914 微处理器电源监控的评估板
LT3091MPT7 产生极低输出电压的典型应用
#第八届立创电赛#桌面时钟
IS-DEV KIT-7D,ISC01P OLED智能显示器开发套件
使用 Analog Devices 的 LTM4636-1EY 的参考设计
CN0224
A8591 宽输入电压、2A 降压稳压器系列的典型应用电路,其中显示了关键路径/环路
用于自动测试设备的 12 位、2CH DAC
FNA41060 Motion SPM 45 系列的典型应用
随便看看
ROS2下Rviz显示orbbec相机depth深度图
[attach]888617[/attach]视频讲解在《ROS2下编写orbbec相机C++package并Rviz显示》的基础上,继续添加depth图像的获取及显示rgb_publisher_=this->create_publisher<sensor_msgs::msg::Image>("rgb_image",10);depth_publisher_=this->create_publish ...
有什么家庭能用的小型机器人?
汽车电子应用环境以及由此带来的测试要求,对设计的要求
LA8演示版LCD显示驱动及字符代码
智能用电监控、保护系统创意进度帖+坑爹篇
连续式变压器设计.pdf
如何实现控制?
全球半导体市场06年收入将达2500亿 增10%
查找数据手册?
搜索
EEWorld Datasheet 技术支持
热门标签
源代码
单片机
放大器
TI
ST
电源
分立器件
传感器
测试测量
模拟
同步电机励磁电源
集成运算放大器
电力系统电压
汽车防撞系统
物理传感器
高温流量计
微波限幅器
标准热电偶
鸿蒙系统
分频器
相关文章
更多>>
消息称英特尔代工可能引入多家外部股东,含台积电、高通、博通等巨头
2 月 17 日消息,台媒《经济日报》在北京时间今日凌晨的报道中指出,英特尔代工可能会引入包括台积电、高通、博通在内的多家外部股东,提升美国本土先进半导体代工服务的竞争活力。 其中高通、博通与英特尔
国内首个电动汽车超充设施标准体系建设指南发布
2 月 17 日消息,深圳市市场监督管理局与市发展改革委日前联合发布《深圳市电动汽车超充设施标准体系建设指南(2024 年)》,为充分发挥标准在电动汽车超充设施领域的基础性和引领性作用,高质量推进超
比亚迪:固态电池2030年之后大规模应用 未来和液态电池可以做到同价
日前,比亚迪锂电池CTO孙华军在第二届中国全固态电池创新发展高峰论坛上表示,目前固态电池处于逐步从实验室迈向规模化应用的前期,预计在2030年左右会有比较稳定的商业化应用。 比亚迪预计,在2027年
三星稳坐全球前十大半导体品牌厂商第一
研究揭示:先进驾驶辅助系统可能会增加车祸风险
解密超市供应链:智能追踪如何重塑食品行业
台积电2nm、Intel 18A工艺首次对比:一个更密、一个更快
消息称Arm寻求从客户中招募高管,参与芯片设计工作
消息称苹果仍在与百度合作,在中国开发AI技术用于iPhone
消息称 AMD 考虑向三星下达 EPYC 霄龙处理器 4 纳米 IOD 芯片代工订单
新帖速递
STM32和无源蜂鸣器播放声音的问题
车规级AECQ200介绍,混合铝电解电容器的选择
嵌入式教程_DSP技术_DSP实验箱操作教程:2-28 搭建轻量级WEB服务器实验
OPA847IDBVR运放器国产替代
AG32VF407测试UART
【得捷电子Follow Me第二期】第一章 收到货物的分享
请问这个红外接收头是什么型号?能用哪个型号代替?谢谢
出售全新未拆封ZYNQ 7Z020 FPGA核心板
用在锂电池供电的水表设置上的LORA模块,当有100块水表集中安装在一个楼道内时,节能
请问一下,当某个端口被设置为 RX0后,这个端口的输入输出方向还有必要设置吗
今年怎么这么难,比疫情时还难,三十了面临失业好迷茫
请教稳压管测试问题
【小华HC32F448测评】关于小华半导体的UART中断发送和PRINTF构造和重定向
【BIGTREETECH PI开发板】 HDMI输出测试
【BIGTREETECH PI开发板】+08.音频测试(zmj)
福禄克有奖直播:高精度测温赋能电子制造 报名中!
直播时间:2025年2月28日(周五)上午10:00
直播主题:高精度测温赋能电子制造
小伙伴们儿快来报名直播吧~好礼等你拿!
查看 »
有奖直播 | TI 助力机器人电机控制系统设计
直播时间:2月27日(周四)上午10:00
活动奖励:家具壶、保温杯、充电线
查看 »
有奖直播:ADI 超低功耗 MCU MAX326xx 系列介绍
直播时间:3月20日(周四) 上午10:00
活动奖励:双肩包、充电宝、小夜灯
查看 »
【回帖赢京东卡】无线技术盛宴第二趴
【活动时间】即日起—2025年2月28日
【活动好礼】30元京东卡
查看 »
DigiKey 应用探索站 | 无线技术盛宴第二趴
当月好物、热门无线技术资源、特色活动、DigiKey在线实用工具,干货多多~
查看 »
开发板申请:拥有 AI 加持的 STM32N6570-DK 免费试用 !
申请时间:即日起-3月2日
查看 »
安世半导体智能工业应用探索站,闯关赢好礼!
点击页面内“开始探索”按钮,填写并提交表单;
请根据序号依次完成3个安世半导体智能工业应用的探索,并根据给出的资料完成共计9题(每个应用3题),答对5题以上的玩家即可获得抽奖资格;
每人仅有一次参与答题的机会,请慎重作答,活动结束后,我们将抽取30位玩家赠送礼品。
查看 »
Microchip 直播|多相降压电源控制技术的发展与探讨 报名中!
直播主题:多相降压电源控制技术的发展与探讨
直播时间:2025年2月25日(星期二)上午10:30-11:30
快来报名!
查看 »
答题赢好礼,PI电源小课堂第3期来啦!
本期内容:集成式半桥驱动IC BridgeSwitch 2, 助力高效永磁同步电机逆变器的设计
活动时间:即日起-2月28日
看视频答题即可赢取京东卡!
查看 »
本周精选下载推荐:电源管理基础Dummies
本周小编给大家带来一本超简单、超干货的电子书——《电源管理基础Dummies》!内容深入浅出,排版舒服简洁,分分钟能get到电源管理最核心的知识内容。
查看 »
关闭
站长推荐
1
/10
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
电信业务审批[2006]字第258号函
京公网安备 11010802033920号
Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复
返回顶部
返回列表
论坛首页
版块列表
专业技术中心
TI技术论坛
ST传感器与低功耗无线技术论坛
ADI参考电路
DigiKey得捷技术专区
ADI · 世健工业技术
电子技术交流
边缘AI
嵌入式系统
单片机
国产芯片交流
电机控制
FPGA/CPLD
模拟电子
电源技术
无线连接
传感器
PCB设计
综合技术交流
下载中心专版
大学堂专版
测评中心专版
行业应用
汽车电子
机器人开发
工业自动化与控制
能源基础设施
医疗电子
消费电子
创意与实践
电子竞赛
DIY/开源硬件专区
淘e淘
创意市集
休息一下
聊聊、笑笑、闹闹
工作这点儿事
为我们提意见&公告
EEWorld颁奖专区
信息发布
最新帖子
最新帖子
最新回复
精华
消灭零回复
测评中心
活动中心
积分兑换
E金币兑换
芯积分
厂商专区
TI技术论坛
ST传感器与低功耗无线技术论坛