本章目标:
-
掌握多种专用外设接口的硬件时序与寄存器配置
-
理解接口特点与典型应用场景,包括显示、摄像、车载通信与超高速闪存
-
通过实战案例,完成 LCD 并行驱动、Camera DVP 采集、LIN 总线节点通信与 Octo-SPI Flash XIP
章节结构
6.1 LCD 并行 / RGB 接口
6.1.1 并行时序与信号线定义
6.1.2 STM32 FSMC / LTDC 控制器寄存器解析
6.1.3 驱动框架(DMA + DMA2D 加速)
6.1.4 实战案例:2.4″ TFT LCD 全屏刷新
6.2 Camera DVP 接口
6.2.1 D-PHY vs DVP 简介
6.2.2 STM32 DCMI 外设寄存器解析
6.2.3 DMA 驱动与双缓冲
6.2.4 实战案例:摄像头图片采集与 JPEG 编码
6.3 LIN(Local Interconnect Network)
6.3.1 LIN 协议层次与帧格式
6.3.2 硬件物理层(UART+电平转换)
6.3.3 STM32 USART LIN 模式寄存器解析
6.3.4 驱动框架(主/从节点与唤醒)
6.3.5 实战案例:车载仪表 LIN 总线通信
6.4 Octo-SPI / Octo-SDRAM 等扩展总线
6.4.1 Octo-SPI 与 Octo-SDRAM 区别与应用
6.4.2 STM32 H7 Octo-SPI 控制器寄存器解析
6.4.3 XIP、缓存与 ECC 支持
6.4.4 实战案例:Octo-SDRAM 上运行小型 RTOS
6.5 本章小结与选型建议
6.1 LCD 并行 / RGB 接口
6.1.1 并行时序与信号线定义
-
并行 RGB:通常包含 8/16/24 位数据线(R[7:0]、G[7:0]、B[7:0])、同步信号(VSYNC、HSYNC)、像素时钟(PCLK)、数据使能(DEN)
-
时序:
-
行同步(HSYNC):低电平有效,表示一行开始
-
场同步(VSYNC):低电平有效,表示一帧开始
-
数据有效(DEN):在有效像素区数据线上输出颜色值
-
-
ISP / Tearing Effect:为了避免刷新断层,可在 VSYNC 期间更新帧缓冲
|<— HBP —>|<—— HACT ——>|<— HFP —>|
|<————— HSIZE —————>|
HSYNC ──‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾|
DEN ──‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾|
PCLK ──▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁▔▁|
6.1.2 STM32 FSMC / LTDC 控制器寄存器解析
FSMC(Flexible Static Memory Controller) 用于并行 TFT 泛用驱动:
-
FSMC_BCRx:控制寄存器(片选使能、总线宽度、读写时序)
-
FSMC_BTRx:时序寄存器(地址建立/保持、数据宽度控制)
-
FSMC_PCR / PMEM / PATT:用于 NAND / NOR 可选
LTDC(LCD-TFT Display Controller) 专用高级控制器:
-
LTDC_SSCR:同步信号设置(HSYNC / VSYNC 长度)
-
LTDC_BPCR:后台消隐周期(HBP / VBP)
-
LTDC_AWCR:有效区域(HACT / VACT)
-
LTDC_GCR:总控制(像素时钟极性、DE 极性)
-
Layerx_CR / WHPCR / WVPCR / PFCR:多图层控制(地址、尺寸、像素格式)
6.1.3 驱动框架(DMA + DMA2D 加速)
-
帧缓冲区地址:将显存映射到 SDRAM,通过 DMA2D(Chrom-Art Accelerator)将图像块从内存拷贝到 Layer 地址
-
双缓冲:切换 Active / Back 帧缓冲,避免撕裂
-
触发机制:使用 LTDC 中断(Line