1. 课程导论:全志T113平台概述、SPI总线协议简介、课程目标与学习路径
1.1 全志T113平台概述
全志T113系列是一款面向工业控制、智能家居、车载娱乐和物联网网关的高集成度应用处理器。该平台采用双核ARM Cortex-A7架构,主频最高可达1.2GHz,内置64位DDR2/DDR3控制器,并集成了丰富的外设接口,使其成为嵌入式Linux开发的热门选择。
核心特性速览:
- CPU: 双核Cortex-A7,支持NEON SIMD指令集
- 内存: 支持DDR2/DDR3,最高2GB
- 视频: 集成GPU,支持H.264/H.265编解码
- 显示: 支持LVDS/RGB/MIPI DSI接口
- 网络: 内置百兆以太网MAC + PHY
- 存储: SD/MMC、NAND Flash、SPI NOR/NAND
在SPI接口方面,T113提供了3个独立SPI控制器(SPI0、SPI1、SPI2),每个控制器支持多片选,可灵活配置为主机或从机模式。下表列出了各SPI控制器的关键硬件特性:
| 控制器 | 片选数量 | FIFO深度 | 最高时钟 | DMA支持 | 典型用途 |
|---|---|---|---|---|---|
| SPI0 | 2 (CS0/CS1) | 64字节 | 100 MHz | 是 | SPI NOR Flash / 传感器 |
| SPI1 | 2 (CS0/CS1) | 64字节 | 100 MHz | 是 | LCD / 触摸屏 |
| SPI2 | 1 (CS0) | 64字节 | 50 MHz | 否 | 低速外设 / 调试 |
开发提示: T113的SPI控制器在硬件上支持SPI模式0~3,但实际使用中需要根据外设数据手册确认正确的时钟极性(CPOL)和时钟相位(CPHA)配置。错误的模式配置会导致通信数据错位。
1.2 SPI总线协议简介
SPI(Serial Peripheral Interface)是一种全双工、同步、主从式串行通信总线,由Motorola公司提出。它使用4根信号线实现设备间的高速数据交换:
- SCLK(Serial Clock): 由主机产生的时钟信号,决定数据传输速率。
- MOSI(Master Out Slave In): 主机输出、从机输入数据线。
- MISO(Master In Slave Out): 主机输入、从机输出数据线。
- CS(Chip Select): 片选信号,低电平有效,用于选择通信的从机设备。
SPI协议定义了4种工作模式,由时钟极性(CPOL)和时钟相位(CPHA)组合决定:
| SPI模式 | CPOL | CPHA | 时钟空闲电平 | 数据采样边沿 | 典型应用 |
|---|---|---|---|---|---|
| 模式0 | 0 | 0 | 低电平 | 第一个跳变沿(上升沿) | W25Qxx SPI Flash |
| 模式1 | 0 | 1 | 低电平 | 第二个跳变沿(下降沿) | 某些ADC芯片 |
| 模式2 | 1 | 0 | 高电平 | 第一个跳变沿(下降沿) | 某些传感器 |
| 模式3 | 1 | 1 | 高电平 | 第二个跳变沿(上升沿) | SD卡(SPI模式) |
常见错误: 在设备树中配置SPI模式时,必须确保 spi-cpol 和 spi-cpha 属性与外设数据手册严格一致。模式不匹配时,数据会在错误的时钟边沿被采样,导致通信数据全部错位,且难以通过逻辑分析仪以外的工具排查。
1.3 课程目标与学习路径
本课程旨在帮助嵌入式Linux开发者系统掌握在全志T113平台上进行SPI接口设备树配置与驱动移植适配的完整技能。通过本课程的学习,你将能够:
- 理解全志T113 SPI控制器的硬件架构与寄存器布局。
- 掌握设备树中SPI节点的编写规则与属性配置方法。
- 学会从零开始移植SPI外设驱动(如SPI Flash、SPI LCD、SPI传感器)。
- 具备独立调试SPI通信问题的能力(使用逻辑分析仪、内核调试接口)。
- 能够将现有Linux内核中的SPI驱动适配到T113平台。
课程按照由浅入深、理论与实践结合的原则,设计了以下学习路径:
| 阶段 | 章节范围 | 核心内容 | 实战项目 |
|---|---|---|---|
| 基础篇 | 第1~5章 | 平台概述、SPI协议、设备树基础、T113 SPI控制器驱动分析 | 点亮SPI接口LED |
| 进阶篇 | 第6~15章 | 设备树节点编写、时钟与引脚配置、DMA传输、中断处理 | 驱动SPI NOR Flash读写 |
| 实战篇 | 第16~25章 | SPI LCD驱动移植、SPI传感器驱动开发、多从机通信 | 移植ST7789V LCD驱动 |
| 调试篇 | 第26~30章 | 内核调试接口、逻辑分析仪使用、性能优化、常见问题排查 | SPI通信性能调优 |
学习建议: 建议在学习过程中准备一块全志T113开发板(如芒果派MangoPi-MQ-R或全志官方T113-S3开发板),配合逻辑分析仪(如Saleae Logic 8)进行实操验证。理论讲解与动手实践交替进行,效果最佳。
1.4 课程所需软硬件环境
为了顺利完成本课程的所有实验,建议准备以下开发环境:
| 类别 | 项目 | 推荐型号/版本 | 备注 |
|---|---|---|---|
| 硬件 | 开发板 | 全志T113-S3开发板 / 芒果派MangoPi-MQ-R | 必须包含SPI接口引出 |
| 硬件 | 调试器 | USB转TTL (CH340/CP2102) | 用于串口控制台 |
| 硬件 | 逻辑分析仪 | Saleae Logic 8 / 24MHz采样率 | 调试SPI时序必备 |
| 硬件 | SPI外设 | W25Q64 / ST7789V LCD / MPU9250 | 课程实战使用 |
| 软件 | 主机系统 | Ubuntu 20.04 / 22.04 LTS | 用于交叉编译 |
| 软件 | 交叉编译器 | gcc-arm-linux-gnueabihf (9.x+) | 全志官方SDK自带 |
| 软件 | 内核源码 | Linux 5.4 / 5.10 (全志BSP) | 课程基于5.4内核讲解 |
| 软件 | 设备树编译器 | dtc (Device Tree Compiler) | 内核源码中自带 |
课程源码获取: 本课程所有设备树文件、驱动源码、测试程序均会随章节提供,并托管在课程配套的Git仓库中。每章末尾会提供对应的源码标签,方便学员对照学习。