社区首页
技术讨论创新帖
全部新帖
资料区
社区活动
联系管理员
★ 社区积分制度
★ 新手必读
★ 申请版主★
请
登录
后使用快捷导航
没有帐号?
注册
首页
|
电子技术
|
嵌入式
模拟电子
单片机
电源管理
传感器
半导体
电子应用
|
工业控制
物联网
汽车电子
网络通信
医疗电子
手机便携
测试测量
安防电子
家用电子
机器人
新能源
电子头条
|
社区
|
论坛
测评
博客
大学堂
|
下载
|
下载中心
电路图
精品文集
电路图
|
参考设计
|
Datasheet
|
活动
|
直播
datasheet
datasheet
文章
搜索
登录
注册
论坛
切换旧版
电子工程世界-论坛
»
论坛
›
电子技术交流
›
国产芯片交流
›
全志R128应用开发案例——适配SPI驱动ST7789V2.4寸LCD
返回列表
发新帖
回复
阅
727
|
回
0
aleksib
当前离线
纯净的硅(中级)
最后登录
2024-11-20
在线时间
38 小时
威望
967分
芯积分
480分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
aleksib
276
帖子
0
TA的资源
纯净的硅(中级)
+ 好友
私信
楼主
发表于2023-11-2 13:38
只看该作者
全志R128应用开发案例——适配SPI驱动ST7789V2.4寸LCD
[复制链接]
# SPI驱动ST7789V1.47寸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屏为 `ZJY147S0800TG01`,使用的是 SPI 进行驱动。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ffd187931ac14186a91c7c6faf3fa010.png#pic_center) 引脚配置如下: | R128 Devkit | TFT 模块 | | :---------- | :------- | | PA12 | CS | | PA13 | SCL | | PA18 | SDA | | PA9 | BLK | | PA20 | RES | | PA19 | DC | | 3V3 | VCC | | GND | GND | ## 载入方案 我们使用的开发板是 R128-Devkit,需要开发 C906 核心的应用程序,所以载入方案选择 `r128s2_module_c906` ```bash $ source envsetup.sh $ lunch_rtos 1 ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/4801485782a14909b17729659dc58902.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/7ff1d2956857456eb8a2a9bcd70f2a16.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/b243dd57d8b448eea1bbd86c5b07867c.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/d8cd5a8223ec48dfaf334fc03265a3ec.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/6a13923eaaaa47c0942b465e1c4ec639.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/5640ea3035a84cf085b5e6c89dc0c546.png#pic_center) ## 编写 SPI LCD 显示屏驱动 ### 获取屏幕初始化序列 首先询问屏厂提供驱动源码 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e00a1d2b7e9a4136876fedfdfd7bfc6d.png#pic_center) 找到 LCD 的初始化序列代码 ![在这里插入图片描述](https://img-blog.csdnimg.cn/195d649816c14869a0b2eb6b8f19ffc6.png#pic_center) 找到屏幕初始化的源码 ![在这里插入图片描述](https://img-blog.csdnimg.cn/83b15c7020344844a5e6b97d4ccc3789.png#pic_center) 整理后的初始化代码如下: ```c LCD_WR_REG(0x11); delay_ms(120); LCD_WR_REG(0x36); LCD_WR_DATA8(0x00); LCD_WR_REG(0x3A); LCD_WR_DATA8(0x05); 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); 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(0xD0); LCD_WR_DATA8(0xA4); LCD_WR_DATA8(0xA1); LCD_WR_REG(0xD6); LCD_WR_DATA8(0xA1); LCD_WR_REG(0xE0); LCD_WR_DATA8(0xF0); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x04); LCD_WR_DATA8(0x04); LCD_WR_DATA8(0x04); LCD_WR_DATA8(0x05); LCD_WR_DATA8(0x29); LCD_WR_DATA8(0x33); LCD_WR_DATA8(0x3E); LCD_WR_DATA8(0x38); LCD_WR_DATA8(0x12); LCD_WR_DATA8(0x12); LCD_WR_DATA8(0x28); LCD_WR_DATA8(0x30); LCD_WR_REG(0xE1); LCD_WR_DATA8(0xF0); LCD_WR_DATA8(0x07); LCD_WR_DATA8(0x0A); LCD_WR_DATA8(0x0D); LCD_WR_DATA8(0x0B); LCD_WR_DATA8(0x07); LCD_WR_DATA8(0x28); LCD_WR_DATA8(0x33); LCD_WR_DATA8(0x3E); LCD_WR_DATA8(0x36); LCD_WR_DATA8(0x14); LCD_WR_DATA8(0x14); LCD_WR_DATA8(0x29); LCD_WR_DATA8(0x32); LCD_WR_REG(0x21); LCD_WR_REG(0x11); delay_ms(120); LCD_WR_REG(0x29); ``` ### 用现成驱动改写 SPI LCD 驱动 选择一个现成的 SPI LCD 改写即可,这里选择 `nv3029s.c` 驱动来修改 ![在这里插入图片描述](https://img-blog.csdnimg.cn/bd25172db1f44447972fc444c7de1014.png#pic_center) 复制这两个驱动,重命名为 `st7789v.c` ![在这里插入图片描述](https://img-blog.csdnimg.cn/ee4ff36ee3c049cca78e78885db6c59f.png#pic_center) 先编辑 `st7789v.h` 将 `nv3029s` 改成 `st7789v` ![在这里插入图片描述](https://img-blog.csdnimg.cn/49a1098bfc8b484c8bf4fecf3880778a.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/7d1587c73a4b481c9392d4457323d36f.png#pic_center) ### 编写初始化序列 先删除 `static void LCD_panel_init(unsigned int sel)` 中的初始化函数。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/649230e25d424a8299dacca4ebc4789c.png#pic_center) 然后将屏厂提供的初始化序列复制进来 ![在这里插入图片描述](https://img-blog.csdnimg.cn/b3120f5779f0431fb2af1033c26ec034.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/eec9bb811ebd4f588f2dce2930e0e2d4.png#pic_center) 完成后如下 ![在这里插入图片描述](https://img-blog.csdnimg.cn/23eeb2cecf0f48e4b7d515ea16f7bccf.png#pic_center) 然后对照屏厂提供的驱动修改 `address` 函数 ![在这里插入图片描述](https://img-blog.csdnimg.cn/8745a63572954828b0a7ff6add84a25b.png#pic_center) 做如下修改 ```c static void address(unsigned int sel, int x, int y, int width, int height) { sunxi_lcd_cmd_write(sel, 0x2A); /* Set coloum address */ sunxi_lcd_para_write(sel, (x + 34) >> 8); sunxi_lcd_para_write(sel, (x + 34)); sunxi_lcd_para_write(sel, (width + 34) >> 8); sunxi_lcd_para_write(sel, (width + 34)); sunxi_lcd_cmd_write(sel, 0x2B); /* Set row address */ sunxi_lcd_para_write(sel, y >> 8); sunxi_lcd_para_write(sel, y); sunxi_lcd_para_write(sel, height >> 8); sunxi_lcd_para_write(sel, height); sunxi_lcd_cmd_write(sel, 0x2c); } ``` 完成驱动如下 ```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, 0x2A); /* Set coloum address */ sunxi_lcd_para_write(sel, (x + 34) >> 8); sunxi_lcd_para_write(sel, (x + 34)); sunxi_lcd_para_write(sel, (width + 34) >> 8); sunxi_lcd_para_write(sel, (width + 34)); sunxi_lcd_cmd_write(sel, 0x2B); /* Set row address */ sunxi_lcd_para_write(sel, y >> 8); sunxi_lcd_para_write(sel, y); sunxi_lcd_para_write(sel, height >> 8); sunxi_lcd_para_write(sel, height); 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); sunxi_lcd_cmd_write(sel, 0x36); sunxi_lcd_para_write(sel, 0x00); sunxi_lcd_cmd_write(sel, 0x3A); sunxi_lcd_para_write(sel, 0x05); 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); 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, 0xD0); sunxi_lcd_para_write(sel, 0xA4); sunxi_lcd_para_write(sel, 0xA1); sunxi_lcd_cmd_write(sel, 0xD6); sunxi_lcd_para_write(sel, 0xA1); sunxi_lcd_cmd_write(sel, 0xE0); sunxi_lcd_para_write(sel, 0xF0); sunxi_lcd_para_write(sel, 0x00); sunxi_lcd_para_write(sel, 0x04); sunxi_lcd_para_write(sel, 0x04); sunxi_lcd_para_write(sel, 0x04); sunxi_lcd_para_write(sel, 0x05); sunxi_lcd_para_write(sel, 0x29); sunxi_lcd_para_write(sel, 0x33); sunxi_lcd_para_write(sel, 0x3E); sunxi_lcd_para_write(sel, 0x38); sunxi_lcd_para_write(sel, 0x12); sunxi_lcd_para_write(sel, 0x12); sunxi_lcd_para_write(sel, 0x28); sunxi_lcd_para_write(sel, 0x30); sunxi_lcd_cmd_write(sel, 0xE1); sunxi_lcd_para_write(sel, 0xF0); sunxi_lcd_para_write(sel, 0x07); sunxi_lcd_para_write(sel, 0x0A); sunxi_lcd_para_write(sel, 0x0D); sunxi_lcd_para_write(sel, 0x0B); sunxi_lcd_para_write(sel, 0x07); sunxi_lcd_para_write(sel, 0x28); sunxi_lcd_para_write(sel, 0x33); sunxi_lcd_para_write(sel, 0x3E); sunxi_lcd_para_write(sel, 0x36); sunxi_lcd_para_write(sel, 0x14); sunxi_lcd_para_write(sel, 0x14); sunxi_lcd_para_write(sel, 0x29); sunxi_lcd_para_write(sel, 0x32); sunxi_lcd_cmd_write(sel, 0x21); sunxi_lcd_cmd_write(sel, 0x11); sunxi_lcd_delay_ms(120); 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/728f6f6faf53420cbc67fda2676dd650.png#pic_center) 增加 `st7789v` 的配置 ![在这里插入图片描述](https://img-blog.csdnimg.cn/5b29cf35e6b84c018b011488bc7beb9e.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/8bff9d3f8d844f5490e95993823c2963.png#pic_center) 如下图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a2559b3c11034947aeadc5af238d94e1.png#pic_center) ```c #ifdef CONFIG_LCD_SUPPORT_ST7789V &st7789v_panel, #endif ``` 之后编辑 `panels.h` 同样增加引用 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ca4005078a3144be8f717ade24edde85.png#pic_center) 如下图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/40ea19a9cc684c20a7fe7cceb435dcce.png#pic_center) ```c #ifdef CONFIG_LCD_SUPPORT_ST7789V extern struct __lcd_panel st7789v_panel; #endif ``` 最后编辑外层的 `Makefile` 增加编译选项 ![在这里插入图片描述](https://img-blog.csdnimg.cn/cbeb0764ffc74565a1e36942a7f2c0d5.png#pic_center) 如下所示 ![在这里插入图片描述](https://img-blog.csdnimg.cn/33375feb786d4329ad5121b4bb6f38cb.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/1e36bba7e2284d8d80f262a83806df04.png#pic_center) 选择并勾选 `[*] LCD support st7789v panel` ![在这里插入图片描述](https://img-blog.csdnimg.cn/b6512aa0503f49dba080bb71c2068bc2.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 = 172 lcd_y = 320 lcd_width = 17 lcd_height = 32 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/5546bd13574d442da72323900ef42e4a.png#pic_center) ## 测试 烧录启动之后,屏幕背光启动,但是屏幕全黑。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/196392446bf145c48dc920fa76467e50.png#pic_center) 输入 `test_spilcd` ,屏幕显示黄色。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/8c61ee893a494d1b98cda7b917a74e67.png#pic_center) ![在这里插入图片描述](https://img-blog.csdnimg.cn/2bd77fa2c5f3430ca98961af09a876b6.png#pic_center) 输入 `lv_examples 1` 可以显示 `lvgl` 界面 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9467c1e6c18e424bae49d5e0409f9d59.png#pic_center) ## 常见问题 ### LVGL 出现 DMA Over Size ![在这里插入图片描述](https://img-blog.csdnimg.cn/a7ba18c3b06c47bd92c7651da610a0ae.png#pic_center) 这是由于 LVGL 配置的 `LV_COLOR_DEPTH` 为 32,但是 SPI 屏配置为16位。请修改 `lv_conf.h` ![在这里插入图片描述](https://img-blog.csdnimg.cn/9595c1e03d974b49bb8975941f837142.png#pic_center)
此帖出自
国产芯片交流论坛
点赞
关注
(0)
回复
分享
扫一扫,分享给好友
复制链接分享
链接复制成功,分享给好友
举报
提升卡
变色卡
千斤顶
返回列表
发新帖
回复
您需要登录后才可以回帖
登录
|
注册
发表回复
回帖后跳转到最后一页
浏览过的版块
大学堂专版
WindowsCE
活动
更多>>
有奖直播报名中!抢占工业4.1先机,WT·世健科技日等你来!
罗姆有奖直播 | 重点解析双极型晶体管的实用选型方法和使用方法
STM32N6终于要发布了,ST首款带有NPU的MCU到底怎么样,欢迎小伙们来STM32全球线上峰会寻找答案!
免费下载 | 安森美电动汽车充电白皮书,看碳化硅如何缓解“里程焦虑”!
是德科技有奖直播 | 应对未来高速算力芯片的设计与测试挑战
TI 有奖直播 | 使用基于 Arm 的 AM6xA 处理器设计智能化楼宇
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
开源项目
更多>>
使用 IXYS 的 Z8F0830 的参考设计
基于AD5933的复阻抗测量仪
LTC4367CDD-1 用于滞后调节的过压电源控制器的典型应用
时钟控制/2相双极型步进电机驱动IC —— TB67S109AFNG
EVAL-RS485HDEBZ,用于 ADM485E 半双工 RS-485 收发器的评估板,采用 8 引脚 SOIC 封装
使用 NXP Semiconductors 的 TDA8933B 的参考设计
音乐频谱灯_2022-10-06_13-59-40
NCP380LSN05AGEVB,笔记本USB开关评估板
LTC3622IDE-23/5 5V/3.3V Vout 突发模式操作应用同步降压稳压器的典型应用电路
【训练营】四足机器人
随便看看
【Follow Me第二季第4期】开箱帖
今天早上来了收到活动订购的3块板子~~~[attach]863669[/attach]展示一下!接着,可以用之前picoW/pico的底板把Pico2玩一下再来Arduino玩一下ConnectNano,最后,BLE耍一耍~~~[attach]863670[/attach]
【Follow me第二季第3期】 开箱 + RA6M5
EEWORLD大学堂----财哥说钛丝
AD7903数据读取问题
hypercube and Four-dimensional space
77Ghz单芯片毫米波传感器可实现自动停车
(转帖)Xilinx CORE Generator心得
EVC中同时对n个控件做同一个操作的方法!!!!!!
查找数据手册?
搜索
EEWorld Datasheet 技术支持
热门标签
源代码
单片机
放大器
TI
ST
电源
分立器件
传感器
测试测量
模拟
电容温度系数
全钒液流电池
磁流变阻尼器
速度继电器
缓冲放大器
直流变压器
电导电极
滑环电机
励磁机
TDA2822M
相关文章
更多>>
消息称铠侠最快明天获上市批准,市值有望达 7500 亿日元
11 月 21 日消息,路透社报道称,在贝恩资本的支持下,铠侠将于当地时间周五(11 月 22 日)获东京证券交易所上市批准。 根据其 IPO 指示价,铠侠的市值预计达到约 7500 亿日元(当前约
美国政府敲定对格芯 15 亿美元《CHIPS》法案补贴,支持后者提升在美产能
11 月 21 日消息,美国商务部当地时间昨日正式宣布将向格芯 GlobalFoundries 提供合计 15 亿美元(当前约 108.71 亿元人民币)的《CHIPS》法案直接资金,具体补贴发放将
SK 海力士宣布量产全球最高的 321 层 1Tb TLC 4D NAND 闪存,计划 2025 上半年对外出货
11 月 21 日消息,SK 海力士刚刚宣布开始量产全球最高的 321 层 1Tb(太比特,与 TB 太字节不同)TLC(Triple Level Cell)4D NAND 闪存。 据介绍,此 32
UWB上车新花样,无线BMS也能用它?
填补国内空白!中国移动、华为等联合发布首颗GSE DPU芯片
三星电子 NRD-K 半导体研发综合体进机,将导入 ASML High NA EUV 光刻设备
苹果揭秘自研芯片成功原因:竞争对手没法用最新尖端技术
芯片大混战将启:高通、联发科涉足笔记本,AMD 被曝入局手机
Exynos 2600 芯片成关键,消息称三星将打响 2nm 芯片反击战
曾称华为不可能追上!台积电制程遥遥领先,2nm未量产已招大客户抢单
新帖速递
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)
精选推荐
CW32L010学习笔记
帮忙分析下EMI不过的原因
报名剩2天:30套RV1106 Linux开发板(带摄像头),邀您挑战边缘AI~
拯救电源EMI的铁三角:电感、磁珠、电容
开关电源上拉电阻和上拉电阻电路图解
启明云端&触觉智能与您相约2024年慕尼黑国际电子元器件博览会,不见不散!
深度学习框架的相关讨论
[STM32H7R/S]测评 ⑦制作一个NANO EDGE AI STUDIO采集数据使用的Data Logger
启明云端&触觉智能与您相约2024年慕尼黑国际电子元器件博览会,不见不散!
【2024 DigiKey创意大赛】基于树莓派的幸福晚年辅助宝
等待很久的STM32N6终于要发布了!
ST首款带有NPU的MCU到底怎么样,欢迎小伙们来STM32全球线上峰会寻找答案!报名峰会,还能赢【开发板、京东卡】呦~12月12日14:00不见不散!
查看 »
有奖直播报名| 高可靠性IGBT新选择 —— 安世半导体650V IGBT
【直播时间】12月19日(周四)下午15:00-16:30
【直播好礼】定制双肩商务包、30元京东卡、吸管玻璃杯
查看 »
安世半导体直播报名中
直播主题:安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
直播时间:12月17日(周二)下午14:00
报名就有机会获得:定制双肩商务包、30元京东卡、吸管玻璃杯
查看 »
PI 电源小课堂 | 无 DC-DC 变换实现多路高精度输出反激电源
时间:即日起-12月15日
看视频学习电源干货,答题赢取京东卡!
查看 »
参会有好礼 | 2024 瑞萨电子MCU/MPU工业技术研讨会
深圳站:11月30日(周六)深圳湾万怡酒店
上海站:12月06日(周五)上海喜玛拉雅酒店
奖励设置:现金红包、螺丝刀套装或30元京东卡
查看 »
Littelfuse 新品赋能电子产品安全可靠并高效, 10+挑战等你探索!
Littelfuse 应用赋能星球,覆盖了诸多应用痛点及解决办法,邀请工程师一起探索,解锁更多设计力!
查看 »
下载资料赢好礼!看Vicor模块化电源解决方案如何推动创新
活动时间:即日起-2024年12月31日
如何参与:点击活动页内您想了解的模块,找到资料下载即可参与抽奖,活动结束后统一发奖!
查看 »
有奖活动|英飞凌高密度双相电源模块为高性能运算平台而生
活动时间:即日起-12月15日
活动奖励:蓝牙音箱、氮化镓充电器套装、黑色小背包
查看 »
本月精选下载推荐:
Vishay——选型-汽车级表面贴装和通孔超快整流器
查看 »
本周精选下载推荐:电源管理基础Dummies
本周小编给大家带来一本超简单、超干货的电子书——《电源管理基础Dummies》!内容深入浅出,排版舒服简洁,分分钟能get到电源管理最核心的知识内容。
查看 »
关闭
站长推荐
1
/10
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
电信业务审批[2006]字第258号函
京公网安备 11010802033920号
Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复
返回顶部
返回列表
论坛首页
版块列表
专业技术中心
TI技术论坛
ST传感器与低功耗无线技术论坛
ADI参考电路
DigiKey得捷技术专区
ADI · 世健工业技术
电子技术交流
嵌入式系统
单片机
国产芯片交流
电机驱动控制
FPGA/CPLD
模拟电子
电源技术
PCB技术
RF/无线
传感器
综合技术交流
下载中心专版
大学堂专版
测评中心专版
创意与实践
电子竞赛
DIY/开源硬件专区
淘e淘
创意市集
行业应用
汽车电子
移动便携
医疗电子
工控电子
安防电子
休息一下
聊聊、笑笑、闹闹
工作这点儿事
为我们提意见&公告
EEWorld颁奖专区
信息发布
最新帖子
最新帖子
最新回复
精华
消灭零回复
测评中心
活动中心
积分兑换
E金币兑换
芯积分
厂商专区
TI技术论坛
ST传感器与低功耗无线技术论坛