全志T113平台概述:芯片、SPI控制器与数据手册导读

做嵌入式Linux驱动,说白了就是跟芯片的寄存器打交道。但如果你连芯片的基本家底都不清楚,那调试起来就像在黑屋子里找开关。这一章,我带你把全志T113这个平台摸个透。

T113芯片简介:一颗“小钢炮”

全志T113,我习惯叫它“小钢炮”。它是一颗针对工业、车载、物联网市场设计的双核ARM Cortex-A7处理器。为什么说它“钢”?因为它在成本、功耗和性能之间找到了一个很舒服的平衡点。

我个人觉得,T113最吸引人的地方有几点:

  • 双核A7 + 单核DSP:主频最高1.2GHz,跑Linux 5.4/5.10内核很稳。DSP可以用来做音频前处理,省掉一颗外挂芯片。
  • 内置128MB/256MB DDR3:这个设计很聪明。省掉了DDR走线的麻烦,PCB层数可以降到4层,打样成本直接砍半。
  • 丰富的外设接口:SPI、I2C、UART、CAN、Ethernet、LCD、CSI摄像头接口……基本上工业场景常用的接口它都有。
  • 宽温设计:-40℃到+85℃,工业级。我在做户外设备项目时,这一点特别重要。

核心参数速览

参数规格
CPU双核 Cortex-A7 @ 1.2GHz
DSPHiFi4 DSP @ 600MHz
内存内置DDR3 128MB/256MB
视频解码H.264 1080p@60fps
封装BGA 13×13mm, 0.65mm pitch

SPI控制器特性:不只是“发数据”那么简单

T113集成了两个SPI控制器:SPI0和SPI1。每个控制器都支持主模式和从模式。嗯,这里要注意,SPI0通常被系统用来连接NOR Flash或NAND Flash,所以如果你要做外设扩展,优先用SPI1。

它的特性列表,我挑几个关键的讲:

  • 支持标准SPI、Dual SPI、Quad SPI:标准模式就是MOSI/MISO两条线。Dual和Quad模式可以同时用多根数据线,速度翻倍。我在驱动一个QSPI Flash时,用Quad模式把读取速度从20MB/s提到了80MB/s。
  • 时钟频率最高100MHz:这是理论值。实际布线时,如果走线太长或者没做阻抗匹配,跑到60MHz以上就容易丢数据。
  • 支持DMA传输:大块数据搬运时,用DMA可以解放CPU。我曾经遇到过一个问题:不用DMA时,CPU占用率高达40%,一帧数据都丢。换成DMA后,CPU占用率降到5%以下。
  • 可编程的CS(片选)控制:支持硬件自动拉高拉低CS,也支持软件手动控制。有些奇葩的SPI设备需要CS在传输间隙保持低电平,这时候就得用软件模式。
  • FIFO深度64字节:收发各64字节。够用,但如果你一次传输超过64字节,就得配合DMA或者中断来做了。

我的经验:T113的SPI控制器有一个“连续传输模式”(Continuous Transfer Mode)。开启后,CS在多个数据帧之间不会拉高。这个模式对驱动一些需要“原子操作”的传感器特别有用。比如驱动一个温湿度传感器,你需要先发命令,再读数据,中间CS不能断。

数据手册关键章节导读:别从头啃到尾

全志的数据手册,说实话,写得不算差,但信息量很大。如果你从头读到尾,大概率读到第三章就睡着了。我建议你按这个顺序来读:

  1. 第1章:芯片概述 —— 了解芯片的整体架构、电源域、时钟树。这部分花10分钟扫一遍就行。
  2. 第2章:引脚描述 —— 找到SPI相关的引脚(SPI0_MOSI、SPI0_MISO、SPI0_CLK、SPI0_CS)。确认这些引脚有没有被其他功能复用。我踩过一个坑:SPI1的引脚和UART3的引脚是复用的,默认配置下UART3占用了,导致SPI1死活拉不起来。
  3. 第3章:系统控制 —— 重点看CCU(时钟控制单元)和RST(复位控制单元)。SPI的时钟源从哪里来?怎么使能时钟?怎么复位控制器?这些都在这里。
  4. 第4章:SPI控制器寄存器描述 —— 这是核心。你需要看明白以下几个寄存器:
    • SPI_CTL:控制寄存器,配置主从模式、时钟极性、相位、传输模式。
    • SPI_CLK_CTL:时钟分频寄存器,决定SCLK频率。
    • SPI_FIFO_CTL:FIFO控制,设置触发阈值。
    • SPI_TXD/RXD:数据发送/接收寄存器。
    • SPI_STA:状态寄存器,查看FIFO空满、传输完成标志。
  5. 第5章:电气特性 —— 看时序图。SPI的建立时间、保持时间、时钟占空比。这部分在硬件设计阶段就要看,软件调试时也要回来对照。

避坑指南:我曾经在调试一个SPI触摸屏时,发现数据总是错位。查了两天,最后发现是数据手册里SPI_CTL寄存器的bit[3]描述有歧义。全志的文档偶尔会有这种“小惊喜”。所以,当你怀疑寄存器配置没问题时,去翻一下芯片的User Manual(用户手册)而不是Datasheet(数据手册)。User Manual对寄存器的描述更详细,有时还会给出初始化代码示例。

SPI控制器内部结构图

下面这张图是我根据数据手册整理的SPI控制器内部结构。你看一眼,就能明白数据是怎么从CPU走到外设的。

T113 SPI控制器内部结构 CPU Core AHB总线 寄存器组 时钟分频 FIFO (64B) 移位寄存器 SPI引脚 DMA控制器 数据流向:CPU → AHB → 寄存器 → FIFO → 移位寄存器 → SPI引脚 DMA模式:DMA控制器直接搬运数据到FIFO,CPU只需配置一次

这张图里,你重点关注两个地方:

  • FIFO的位置:它夹在寄存器和移位寄存器之间。数据先写到FIFO,然后由硬件自动移位发送。接收时也一样,移位寄存器收完一个字节,自动推入FIFO。
  • DMA的路径:DMA控制器直接连到FIFO,不经过CPU。这就是为什么DMA能省CPU的原因。

小结

这一章我们聊了T113这颗芯片的定位、SPI控制器的关键特性,以及怎么高效地读数据手册。说白了,做驱动开发,80%的时间是在读文档和看寄存器。剩下的20%才是写代码。所以,把数据手册读透,比什么都重要。