
1. 项目概述一块3.4英寸800x800方形LCD的深度探索最近在捣鼓一个小型的嵌入式显示项目核心需求是在极小的空间内实现一块高分辨率、高刷新率的方形屏幕显示。市面上常见的3.5英寸屏大多是480x320或800x480的长方形直到我遇到了这块3.4inch 800x800 LCD。这个规格立刻引起了我的兴趣——800x800的正方形分辨率像素密度高达约294 PPI在这么小的尺寸上显示效果会非常细腻。它不像传统的16:9或4:3屏幕方形的显示区域对于仪表盘、工业HMI的圆形表盘显示、或者一些需要1:1预览的创意应用如方形照片、UI组件预览来说简直是天生绝配。这块屏的接口通常比较丰富从热词里能看到HDMI、Type-C、SPI这些关键词。这意味着它可能是一个多合一的显示模块既可以通过HDMI作为电脑或开发板如RK3588的副屏享受即插即用的便利和高性能也可以通过Type-C接口进行供电和视频信号传输比如支持DisplayPort Alt Mode而对于资源受限的微控制器如STM32H750其自带的SPI接口则提供了另一种可能尽管驱动高分辨率需要用到DMA来减轻CPU负担。围绕这块屏我们可以玩出很多花样从简单的桌面扩展屏到复杂的嵌入式图形界面。接下来我就结合自己的实操经验从驱动原理、接口实战到避坑指南为你完整拆解这块特别的方形LCD。2. 核心规格解析与方案选型背后的逻辑拿到一块屏幕第一步不是急着接线而是彻底读懂它的数据手册。对于这块3.4英寸800x800的LCD我们需要关注几个核心参数这直接决定了后续的驱动方案和性能上限。2.1 屏幕物理与电气特性深度剖析首先3.4英寸指的是屏幕对角线的长度。通过勾股定理简单计算在800x800的正方形下单边像素长度约为对角线长度的1/√2可以推算出单个像素的尺寸非常小这也是高PPI的由来。高PPI带来的直接好处是文字和图形边缘锐利几乎没有颗粒感但同时也对驱动IC的带宽和信号完整性提出了更高要求。800x800的分辨率总像素点为64万。假设我们追求60Hz的刷新率采用RGB88824位色格式那么每秒需要传输的数据量为800 * 800 * 60 * 24 ≈ 921.6 Mbps。这还只是像素数据算上行场同步等消隐期的开销实际带宽需求会更高轻松超过1Gbps。这个数字是选择接口和主控芯片的关键依据。从热词看这块屏可能支持多种接口模式HDMI接口这是实现“即插即用”和最高性能的首选。HDMI 1.4标准就足以支持800x80060Hz RGB888。它传输的是已经编码好的差分信号TMDS主控端需要有HDMI TX控制器或者通过专用芯片如Silicon Image的系列将RGB信号转换为TMDS信号。RK3588这类高性能SoC内置了HDMI TX可以直接驱动。Type-CDP Alt Mode这是现代设备的趋势。通过Type-C接口的DisplayPort替代模式可以直接传输DisplayPort视频信号。其带宽更高且同时集成供电和数据。这需要主控端支持DP输出或者通过一颗USB-C控制器芯片来协商启用Alt Mode。并行RGB/MCU接口有些LCD模块会引出RGB666或RGB888并行总线以及行场同步、时钟、数据使能信号。这种接口需要主控有对应的LCD控制器LTDC并且引脚数量多布线复杂但延迟极低。STM32H750的LTDC外设就可以驱动。SPI接口这通常用于驱动内置显存GRAM的屏幕。屏幕自带驱动IC如ST7789v、ILI9341的升级版主控通过SPI向显存写入数据驱动IC负责按刷新率循环读取显存并点亮屏幕。驱动800x800分辨率对SPI速率和DMA效率是巨大考验。为什么一块屏要设计这么多接口这其实是模块厂商为了最大化适用性。HDMI面向高性能、通用桌面应用Type-C面向便携和一体化设备SPI则面向低成本和低引脚数的单片机应用。你需要根据你的项目核心需求性能、成本、开发难度、功耗来选择。2.2 驱动方案选型从高性能到低成本的全景图面对多种接口我们该如何选择这完全取决于你的应用场景和主控平台。方案一HDMI直驱高性能、即插即用这是最“省心”的方案。如果你的主控是RK3588、树莓派、或者任何带有标准HDMI输出口的电脑/开发板你只需要一根HDMI线注意接口尺寸可能是mini HDMI或micro HDMI。系统会将其识别为一个标准显示器在显示设置中你可以设置其分辨率、缩放和方向。注意并非所有标称HDMI的屏幕都支持“免驱”。有些屏幕的HDMI接口需要依赖主控的EDID扩展显示标识数据读取能力来正确识别分辨率。如果遇到黑屏可能需要检查主控是否支持输出800x800这个非标准分辨率有时需要在设备树或配置文件中手动添加该显示模式。方案二MCURGB接口低延迟、深度定制这是嵌入式图形显示的经典方案。以STM32H750为例其内置的LTDC控制器性能强大可以直接产生RGB时序信号。你需要将屏幕的RGB数据线、时钟PCLK、行同步HSYNC、场同步VSYNC、数据使能DE接到MCU对应的引脚上。然后配置LTDC的时序参数前廊、后廊、同步脉冲宽度等这些参数必须严格匹配屏幕数据手册。 它的优势是延迟极低帧率稳定并且可以充分利用STM32的DMA2D硬件图形加速器进行填充、混合、旋转等操作效率极高。缺点是占用大量IO口对PCB布线要求高需要处理高速信号完整性电磁干扰问题。方案三MCUSPIDMA引脚节约、挑战极限这是资源受限又想驱动高分辨率屏的“硬核”方案。如前所述800x800的全屏刷新数据量巨大。以SPI时钟80MHzSTM32H750的SPI极限之一每个时钟传输1位数据来计算传输一帧24位色图片需要的时间大约是(80080024) / 80,000,000 ≈ 0.192秒理论帧率仅约5.2 FPS。这显然不够。 因此优化策略至关重要使用最高速SPI启用四线SPIQSPI或八线SPI如果屏幕支持可以成倍提升数据吞吐量。最大化利用DMA配置SPI的DMA传输让数据搬运完全由DMA完成解放CPU。这里就是热词中“stm32h750 dma 驱动 spi lcd 问题”的典型场景。常见问题包括DMA传输完成中断TC和SPI传输完成中断TXE处理不当造成的撕裂、卡顿或者DMA缓冲区设置错误导致的数据错乱。局部刷新与双缓冲只刷新屏幕上变化的部分区域而不是全屏刷新。同时使用双缓冲机制在后台另一个缓冲区准备好下一帧图像然后通过DMA快速切换避免撕裂。 这个方案是性能和资源之间的极致平衡非常考验开发者的优化功力。3. 基于STM32H750的SPI DMA驱动实战与避坑让我们深入最具有挑战性的方案三用STM32H750通过SPI DMA来驱动这块屏。这里会涉及大量底层寄存器和代码细节我会把踩过的坑和优化技巧都分享出来。3.1 硬件连接与初始化序列首先确认屏幕的驱动IC型号通常是ILI9488、ST7796或类似的变种。找到其数据手册查看SPI通信协议是标准的4线CS, SCK, MOSI, MISO还是3线9位数据帧包含指令/数据位。我们假设是4线标准SPI。硬件连接示例LCD_CS- PA4 (SPI1_NSS)LCD_SCK- PA5 (SPI1_SCK)LCD_MOSI- PA7 (SPI1_MOSI)LCD_DC(数据/命令选择) - PG10 (任意GPIO)LCD_RST(复位) - PG11 (任意GPIO)LCD_BL(背光) - PG12 (PWM输出用于调光)初始化步骤至关重要顺序错了屏幕可能毫无反应硬件复位拉低LCD_RST引脚至少10ms然后拉高等待120ms以上让驱动IC稳定。发送初始化命令序列这是驱动IC厂商提供的一连串寄存器配置值用于设置伽马、色彩格式、扫描方向、电源控制等。必须严格按照数据手册的顺序和延时要求发送。设置内存访问控制MAC这个命令通常是0x36决定了屏幕的旋转、RGB/BGR顺序、行列地址更新方向。对于800x800的方形屏旋转设置尤为重要。设置像素格式例如设置为RGB56516位色可以比RGB888减少三分之一的数据量是SPI驱动下的常用选择。命令通常是0x3A。退出睡眠模式打开显示。// 示例发送命令函数 void LCD_Write_Cmd(uint8_t cmd) { LCD_DC_CMD(); // DC引脚拉低表示命令 HAL_SPI_Transmit(hspi1, cmd, 1, HAL_MAX_DELAY); } // 示例发送数据函数 void LCD_Write_Data(uint8_t data) { LCD_DC_DATA(); // DC引脚拉高表示数据 HAL_SPI_Transmit(hspi1, data, 1, HAL_MAX_DELAY); } // 初始化序列片段 LCD_Write_Cmd(0x11); // 退出睡眠 HAL_Delay(120); LCD_Write_Cmd(0x36); // 内存访问控制 LCD_Write_Data(0x48); // 设置参数例如MY1, MX0, MV1, BGR0代表旋转180度3.2 SPI与DMA的极限配置与帧缓冲管理要驱动800x800我们必须把SPI和DMA的性能压榨到极致。SPI配置时钟极性(CPOL)与相位(CPHA)必须与屏幕驱动IC要求一致通常是Mode 0 (CPOL0, CPHA0) 或 Mode 3。数据大小8位。时钟预分频器设置为系统时钟分频后能得到允许的最高频率。对于H750主频400MHz配置SPI时钟为80-100MHz是可行的。在CubeMX中选择Prescaler为2或4。NSS信号模式设置为软件控制我们在代码中手动控制CS片选。DMA配置为SPI的TX流配置DMA例如SPI1_TX对应DMA2 StreamX。方向存储器到外设。增量模式外设地址不增量存储器地址增量。数据宽度字节Byte。模式正常模式非循环。因为我们是一次性发送一帧或一块数据。使能DMA传输完成中断TC和半传输完成中断HT用于实现双缓冲。帧缓冲管理 在内存中开辟一个或多个缓冲区大小至少为800 * 800 * 2字节RGB565格式。这个缓冲区很大约1.28MB要确保它被放置在合适的RAM中。STM32H750有多个内存域其中DTCM RAM速度最快128KB但放不下整个帧缓冲。我们可以将其放在AXI SRAM512KB或外部SDRAM中。如果使用外部SDRAM需要先初始化SDRAM控制器。// 在外部SDRAM中定义双缓冲区 #define LCD_WIDTH 800 #define LCD_HEIGHT 800 #define BUFFER_SIZE (LCD_WIDTH * LCD_HEIGHT * 2) // RGB565 __attribute__((section(.sdram))) uint16_t lcd_frame_buffer0[LCD_WIDTH * LCD_HEIGHT]; __attribute__((section(.sdram))) uint16_t lcd_frame_buffer1[LCD_WIDTH * LCD_HEIGHT]; volatile uint16_t* current_draw_buffer lcd_frame_buffer0; // 当前用于绘制的缓冲区 volatile uint16_t* current_display_buffer lcd_frame_buffer1; // 当前用于显示的缓冲区 volatile uint8_t buffer_swapped 0; // 缓冲区交换标志双缓冲DMA传输流程应用程序在current_draw_buffer中绘制图形。绘制完成后设置屏幕的列地址和行地址设置要更新的区域通常是全屏。启动DMA将current_draw_buffer的数据通过SPI发送到屏幕的GRAM。在DMA传输完成中断TC中交换current_draw_buffer和current_display_buffer的指针并设置buffer_swapped标志。主循环检测到buffer_swapped标志后可以开始在新的current_draw_buffer上准备下一帧。3.3 关键问题排查与性能优化技巧在实际操作中你会遇到各种问题。以下是我总结的排查清单和优化点问题1屏幕花屏、条纹、错位检查初始化序列确保每个命令和数据的延时都满足数据手册要求。有时需要微调复位后的等待时间。检查SPI时序用逻辑分析仪抓取CS、SCK、MOSI波形确认CPOL/CPHA设置正确时钟稳定数据在正确的边沿被采样。检查内存访问控制0x36命令MY, MX, MV, ML, BGR这几个位设置错误会导致显示旋转、镜像或颜色通道错乱。对于方形屏MV行列交换位的影响尤其明显。检查像素格式确保MCU发送的数据格式如RGB565与屏幕配置的接收格式一致。问题2DMA传输卡顿、撕裂、只显示部分屏幕DMA缓冲区溢出确保DMA配置的传输数据量NDTR寄存器与你实际发起传输的数据量完全一致。传输800x800的RGB565数据数量是800*800而不是字节数。SPI或DMA中断冲突避免在DMA传输过程中被高优先级中断频繁打断。可以适当调整中断优先级。内存访问速度如果帧缓冲放在外部SDRAM确保SDRAM的初始化正确并且访问速度能跟上DMA的节奏。检查SDRAM的刷新时序和CAS延迟设置。双缓冲同步确保在DMA传输完成前不会修改正在被传输的缓冲区内容。使用标志位或信号量进行严格的同步。问题3帧率过低肉眼可见的刷新慢计算理论极限如前所述80MHz SPIRGB565全屏刷新理论帧率约5.2 FPS。这是物理瓶颈。启用QSPI如果屏幕支持QSPI四线模式理论上带宽翻倍。需要修改初始化序列启用QSPI模式并配置MCU的SPI为四线模式。局部刷新这是最重要的优化手段。只更新屏幕上发生变化的矩形区域。你需要实现一个函数只发送该区域的坐标和对应的像素数据。void LCD_Update_Area(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t *color_data) { // 1. 设置列地址范围 (x1, x2) LCD_Write_Cmd(0x2A); LCD_Write_Data(x1 8); LCD_Write_Data(x1 0xFF); LCD_Write_Data(x2 8); LCD_Write_Data(x2 0xFF); // 2. 设置行地址范围 (y1, y2) LCD_Write_Cmd(0x2B); LCD_Write_Data(y1 8); LCD_Write_Data(y1 0xFF); LCD_Write_Data(y2 8); LCD_Write_Data(y2 0xFF); // 3. 发送像素数据 LCD_Write_Cmd(0x2C); uint32_t num_pixels (x2 - x1 1) * (y2 - y1 1); HAL_SPI_Transmit_DMA(hspi1, (uint8_t*)color_data, num_pixels * 2); // 启动DMA传输 }降低色深如果应用允许使用RGB56516位甚至RGB3328位可以大幅减少数据量。图形优化使用硬件加速如STM32的DMA2D来绘制几何图形、填充颜色、混合图像这比用CPU操作快几个数量级。绘制完成后再通过SPI DMA发送更新区域。4. HDMI与Type-C接口应用实战如果你追求极致的显示性能和便捷性那么HDMI或Type-C接口就是你的菜。这更像是一个系统集成工作而非底层驱动编写。4.1 基于RK3588的HDMI驱动与显示配置RK3588是一款强大的嵌入式SoC其内置的显示子系统可以直接输出HDMI信号。要让这块3.4寸屏工作主要工作集中在软件配置上。硬件连接使用一根合适的HDMI线可能是micro HDMI转标准HDMI连接RK3588开发板的HDMI输出口和屏幕的HDMI输入口。同时确保屏幕供电充足Type-C或单独的电源适配器。内核设备树DTS配置这是Linux系统下的关键。你需要确保内核中包含了正确的显示时序和分辨率信息。找到RK3588的HDMI节点通常是hdmi开头的节点。添加一个display-timings子节点定义800x800分辨率的详细时序参数。这些参数必须从屏幕的数据手册中获取包括像素时钟pixelclock、水平/垂直的前廊front porch、同步脉冲sync pulse、后廊back porch。hdmi0 { status okay; pinctrl-names default; pinctrl-0 hdmim0_tx; // 可能还需要配置PHY等 }; hdmi0_out: hdmi0-out { status okay; compatible rockchip,hdmi; #address-cells 1; #size-cells 0; port0 { reg 0; hdmi0_out_panel: endpoint { remote-endpoint panel_in_hdmi; }; }; }; // 假设屏幕连接在hdmi0_out上 panel { compatible panel-dpi; status okay; width-mm ...; // 屏幕物理宽度 height-mm ...; // 屏幕物理高度 panel-timing { clock-frequency 30000000; // 像素时钟例如30MHz需计算 hactive 800; vactive 800; hfront-porch 40; // 需根据手册填写 hback-porch 40; hsync-len 10; vfront-porch 20; vback-porch 20; vsync-len 5; hsync-active 0; // 同步极性 vsync-active 0; de-active 1; pixelclk-active 0; }; port { panel_in_hdmi: endpoint { remote-endpoint hdmi0_out_panel; }; }; };编译并更新设备树重启系统。用户空间配置系统启动后使用xrandr命令可以查看和设置显示输出。# 查看所有显示接口 xrandr # 如果屏幕被识别为例如 HDMI-1可以设置其分辨率 xrandr --output HDMI-1 --mode 800x800如果xrandr列表里没有800x800模式可能需要用cvt或gtf命令生成一个该分辨率的模型ine然后用xrandr添加新模式。cvt 800 800 60 # 生成800x80060Hz的模型ine # 复制输出中“Modeline”后面的内容 xrandr --newmode 800x800_60.0 [粘贴模型ine参数] xrandr --addmode HDMI-1 800x800_60.0 xrandr --output HDMI-1 --mode 800x800_60.0热词问题排查如果遇到“rk3588 hdmi接屏幕没有i2c信息”这通常是正常的。HDMI的DDC通道用于读取EDID是通过I2C总线实现的。你可以通过i2cdetect工具扫描I2C总线。如果没有看到设备地址通常是0x50可能是硬件连接问题、屏幕EDID损坏或者内核驱动中HDMI的DDC/I2C功能未正确启用。检查设备树中HDMI节点的ddc-i2c-scl和ddc-i2c-sda引脚配置是否正确。4.2 Type-C DisplayPort Alt Mode的应用要点通过Type-C驱动屏幕意味着屏幕模块内部集成了一个USB-C控制器它能够与主机你的电脑或开发板协商启用DisplayPort替代模式。连接与供电使用一根全功能的Type-C to Type-C线缆连接主机和屏幕。这根线缆必须支持USB 3.1 Gen2及以上标准和DisplayPort Alt Mode。屏幕通常可以通过Type-C接口直接取电PD协议也可能需要额外供电。主机端要求你的主机设备如笔记本电脑、嵌入式板卡的Type-C接口也必须支持DP Alt Mode输出。对于嵌入式开发像瑞芯微的RK3588、晶晨的A311D等芯片其Type-C接口通常支持DP输出但需要在设备树中正确配置显示通路将显示控制器的输出映射到Type-C的DP通道上而不是HDMI或eDP。信号与协议在DP Alt Mode下视频信号走的是DisplayPort协议。对于800x80060Hz RGB888所需的带宽不高DP 1.2标准绰绰有余。信号通过Type-C接口中的高速差分对TX/RX传输。屏幕内部的控制器会进行协议转换将DP信号转换为LCD驱动IC能识别的RGB或LVDS信号。开发板实战以一块支持DP输出的RK3588核心板为例除了配置显示控制器还需要配置USB Type-C控制器通常是TCPM的工作模式为DRP双角色端口或DFP下行端口并启用DP功能。这部分的设备树配置相对复杂需要参考芯片原厂的参考设计和内核文档。注意Type-C接口的差分走线对信号完整性要求极高。在自行设计PCB时必须遵循USB 3.1/DP的高速信号布线规则等长、阻抗控制通常90欧姆差分阻抗、远离干扰源。热词中提到的“type-c 6p 电路图 ad”和“type-c接口 ch340pcb差分走线示意图”都强调了这一点。糟糕的布线会导致连接不稳定、黑屏或花屏。4.3 电磁干扰EMI设计与信号完整性无论是HDMI、DP还是高速RGB并行接口都涉及高速差分信号传输HDMI协议、DP协议。热词中提到的“hdmi电磁干扰设计图”点出了这个关键问题。常见干扰源与解决思路电源噪声为屏幕和驱动电路提供干净、稳定的电源。使用LDO或低噪声的DC-DC并在电源入口处增加大容量电解电容如100uF和小容量陶瓷去耦电容如0.1uF, 0.01uF组成的滤波网络。高速信号串扰差分对内部确保D和D-走线长度严格等长误差控制在5mil以内。走线平行、紧耦合间距保持一致。差分对之间保持足够的间距至少3倍线宽必要时用地线进行隔离。地平面分割为高速数字电路如HDMI控制器、SDRAM和模拟电路如音频提供独立的地平面并通过单点连接磁珠或0欧电阻连接避免数字噪声串入模拟地。屏蔽与接地使用带屏蔽层的HDMI/Type-C线缆。在连接器外壳和PCB地之间提供良好的低阻抗连接多个接地过孔。如果屏幕本身是干扰源其背光驱动电路可能产生噪声可以在屏幕排线与主板连接处增加共模扼流圈或铁氧体磁珠。端接匹配HDMI的TMDS差分线在源端通常已经有端接电阻。在PCB设计时要确保从芯片引脚到连接器的走线阻抗连续避免反射。一个简单的HDMI接口滤波设计可以参考如下示意图文字描述HDMI Connector - [ESD Protection Diode Array] - [Common Mode Choke] - [Series Resistor (optional)] - SoC HDMI TX Pins | GND (via capacitors)ESD二极管用于防静电共模扼流圈抑制共模噪声串联电阻可用于轻微的阻抗匹配调整。5. 进阶应用与系统集成思考当你成功驱动了这块屏幕后就可以基于它构建更复杂的应用了。这里分享几个进阶方向和集成经验。5.1 构建嵌入式图形界面GUI对于STM32H750方案你可以移植轻量级的GUI库如LVGL、emWin、TouchGFX。这里以LVGL为例它开源、资源占用适中、效果华丽。移植LVGL将LVGL源码加入工程。实现其需要的lv_port_disp显示驱动接口和lv_port_indev输入设备接口如果需要触摸。显示驱动适配在lv_port_disp中关键函数是disp_flush。当LVGL需要刷新一块区域时会调用此函数。你在这个函数里调用前面实现的LCD_Update_Area函数通过SPI DMA将区域数据发送到屏幕。务必使用DMA异步传输并在DMA传输完成回调中调用lv_disp_flush_ready告知LVGL该区域刷新完成否则会严重阻塞LVGL任务。双缓冲与局部刷新LVGL本身支持局部刷新和多种缓冲模式。对于SPI屏最佳实践是使用两道缓冲模式并为LVGL提供两个屏幕大小的缓冲区。LVGL在一个缓冲区绘制同时DMA从另一个缓冲区传输。这需要精细的同步但能获得最流畅的体验。性能优化关闭LVGL中不用的特效如阴影、渐变使用RGB565色彩格式并充分利用STM32的硬件加速DMA2D来优化LVGL的绘图操作如填充、混合。5.2 音频与视频系统集成热词中提到了“hdmi 转 iis 芯片”和音频转接线这启发我们可以将这块屏作为一个多媒体终端。音频输出如果你的主板只有HDMI或DP视频输出但想从屏幕的3.5mm耳机孔输出音频就需要提取音频数据。HDMI和DP协议都包含音频数据包。你可以使用一颗专用的芯片如Silicon Image的SiI9134HDMI接收芯片或TI的SN65DP159DP接收芯片它们可以解析视频流分离出I2S音频信号。然后你可以将I2S信号送给一个DAC芯片再输出到音频放大器或耳机孔。音频输入热词中的Type-C转3.5mm音频线内部通常有一颗ADC/DAC芯片通过USB音频类UAC协议工作。如果你想通过屏幕的Type-C接口输入音频那么屏幕模块内部需要集成一个USB音频编解码器或者你的主控需要支持USB Host并运行相应的UAC驱动。5.3 多屏协同与工业应用方形屏在工业领域有独特优势。例如在一个800x800的界面上可以完美地并排显示四个400x400的监控子画面布局整齐。或者用于显示一个完整的、无需滚动的圆形工艺流程。结合RK3588这类多显示输出能力的SoC你可以实现主屏大屏显示总览这块3.4寸方形屏作为辅助屏显示关键参数或快捷控制按钮。在Linux系统下可以使用Wayland或X11的多显示器配置来实现。对于更复杂的应用如热词中提到的“基于zynq的linux hdmi驱动开发与petalinux集成实战”其思路是相通的。在Zynq或类似的FPGAARM平台上你可以在PL可编程逻辑部分实现自定义的显示控制器或图像处理流水线通过AXI总线与PS处理器系统交互最终通过HDMI TX IP核输出到这块屏幕实现超高定制化的显示方案。驱动一块非常规分辨率的LCD从最底层的SPI时序调校到系统级的HDMI配置再到最终的应用集成是一个完整的嵌入式系统开发生态链的缩影。每一个环节的深入理解都能让你对“显示”这件事有更深刻的把握。这块3.4英寸800x800的方形屏不仅仅是一个显示器件更是一个绝佳的学习平台和创意画布。