第 41 / 50 课 · 核心课程。返回课程合集。
接口名字不替代面板规格
并行 RGB、LVDS、DSI 与 HDMI 的物理连接和协议机制不同。LVDS 本身描述电气传输方式,具体显示映射还需核对;不能把所有差分显示线直接归为同一种接口。
面板可能需要供电时序、reset 和命令初始化,背光亮只证明背光路径部分工作。DSI 的命令与视频模式需要面板和主控支持;桥接芯片又增加一段独立配置。
有效分辨率不是完整时序
对使用像素扫描时序的模式,水平总像素与垂直总行包含前后肩和同步等区间。像素时钟常按总宽×总高×刷新率计算,而不只是可见宽×可见高。具体链路还受编码、打包和时钟模式影响。
显示缓冲的像素格式、stride 和刷新同步也需正确。CPU 在扫描过程中直接修改同一缓冲可能产生撕裂,双缓冲仍需在正确时机切换,并等待缓冲不再被扫描后复用。
练习与参考结论
构造水平总长 2200、垂直总高 1125、60Hz,像素时钟为 148.5MHz。该例不授权给任意 1080p 面板使用,必须匹配具体 mode。
黑屏排查分成供电/背光、复位与初始化、链路时钟、有效时序、缓冲内容。用可控纯色或棋盘测试区分像素格式与业务绘制问题。
配套代码
下载包包含独立运行所需文件,使用 Python 标准库;这里验证机制和计算,不代表开发板测量结果。
运行本课机制与计算示例
查看完整代码:main.py
def main():
total_width, total_height, refresh = 2200, 1125, 60
clock = total_width * total_height * refresh
assert clock == 148500000
print("example pixel clock MHz", clock / 1e6)
print("仅给定扫描时序的算术;面板、桥接和 PHY 需分别核对")
if __name__ == "__main__":
main()
在项目根目录执行;下载包解压后,在解压目录执行 python3 main.py。
cd 'content/posts/驱动、bootloader、文件系统/嵌入式SoC与接口/41-显示链路:DSI、RGB、LVDS 与 HDMI/code' && python3 main.py