第三章 硬件原理图分析:SPI引脚复用功能、原理图关键信号解读、电平匹配与上拉电阻选择

做驱动开发,最怕什么?

最怕板子焊好了,软件调不通,最后发现是原理图看错了。

我早年吃过这个亏。那次SPI死活拉不高时钟,折腾了两天,最后拿万用表一量——片选信号电平压根不对。从那以后,我拿到任何新板子,第一件事就是打开原理图,把SPI相关的每个引脚、每个电阻、每个跳线都过一遍。

这一章,咱们就聊聊怎么看懂全志T113的SPI硬件原理图。说白了,就是教你避开我当年踩过的坑。

3.1 SPI引脚复用功能解读

全志T113这颗芯片,引脚复用是出了名的复杂。一个引脚可能同时属于SPI、UART、I2C、PWM好几个外设。你得先搞清楚,你用的到底是哪一组SPI。

T113总共有4路SPI控制器:SPI0、SPI1、SPI2、SPI3。但并不是所有引脚都引到了板边排针上。我习惯先看芯片数据手册的Pin Mux Table,找到SPI对应的功能号。

SPI控制器 引脚名 功能号 默认功能
SPI0 PC0/PC1/PC2/PC3 FUNC 2 GPIO
SPI1 PD11/PD12/PD13/PD14 FUNC 4 GPIO
SPI2 PE0/PE1/PE2/PE3 FUNC 3 GPIO
SPI3 PF4/PF5/PF6/PF7 FUNC 5 GPIO

嗯,这里要注意:默认功能都是GPIO。如果你不在设备树里配成SPI功能,这些引脚就是普通的输入输出口,不会自动变成SPI。

我在项目中遇到过有人把SPI1的引脚配成了UART功能,结果调试了三天,一直以为是驱动问题。你想想看,硬件没通,软件再怎么调也没用。

我的习惯:拿到原理图后,先搜索"SPI"关键字,找到所有带SPI标号的网络。然后对照芯片手册,确认每个引脚的功能号是否与原理图标注一致。这一步能过滤掉80%的硬件配置错误。

3.2 原理图关键信号解读

一张完整的SPI原理图,至少包含以下5个关键信号。我一个个说。

  • SCLK(时钟线):由主设备输出,从设备接收。原理图上通常标注为SPIx_SCLK或SPIx_CLK。注意看有没有串联电阻或电容,这些会影响时钟质量。
  • MOSI(主出从入):主设备发送数据给从设备。标注为SPIx_MOSI或SPIx_TX。
  • MISO(主入从出):从设备发送数据给主设备。标注为SPIx_MISO或SPIx_RX。
  • CS(片选信号):低电平有效。标注为SPIx_CS或SPIx_SS。注意看是硬件片选还是软件GPIO模拟。
  • WP/HOLD(写保护/保持):Flash类设备常用。如果不用,必须上拉或下拉,不能悬空。

我见过最典型的错误:CS片选信号被设计成高电平有效,但驱动里默认是低电平有效。结果就是片选永远拉不低,通信失败。

避坑指南:我曾经在一个项目里发现原理图上CS信号标注为"SPI1_CS#",但实际走线却连到了GPIO。后来查了半天,原来是原理图符号和PCB封装对不上。所以,一定要核对原理图符号和PCB封装,别只看网络名。

3.3 电平匹配与上拉电阻选择

电平匹配,是SPI硬件设计里最容易出问题的地方。T113的IO电压是3.3V,但如果你接的从设备是1.8V或者5V,那就得做电平转换。

我习惯把电平匹配分成三种情况:

从设备电压 匹配方式 注意事项
3.3V 直连 确认T113 IO口是否配置为3.3V模式
1.8V 电平转换芯片(如TXS0108) 注意方向控制引脚,SPI是双向的
5V 开漏输出+上拉电阻 T113 IO口耐压是否支持5V?不支持必须加转换

上拉电阻的选择,也有讲究。SPI的SCLK和MOSI是推挽输出,一般不需要上拉。但MISO和CS,尤其是CS,建议加上拉电阻,防止浮空误触发。

电阻值怎么选?我一般遵循这个原则:

  • 4.7kΩ ~ 10kΩ:通用上拉,适合大多数SPI从设备
  • 1kΩ ~ 2.2kΩ:高速SPI(>50MHz)时使用,保证信号上升沿陡峭
  • 不接:如果从设备内部已有上拉,外部可以省略

嗯,这里有个坑:如果你把上拉电阻选得太小(比如100Ω),那T113的IO口在输出低电平时,会被这个电阻拉高,导致电平无法拉低。我当年就因为这个,SPI时钟一直出不来波形。

核心结论:SPI硬件设计,电平匹配是前提,上拉电阻是保障。先确认电压域,再选电阻值。别想当然,一定要看从设备的数据手册。

3.4 知识结构图:SPI硬件原理图分析流程

下面这张图,是我自己总结的SPI硬件原理图分析流程。每次拿到新板子,我都按这个步骤走一遍,基本不会漏东西。

SPI硬件原理图分析流程 SPI硬件原理图分析流程 获取原理图 定位SPI引脚 核对复用功能 检查电平匹配 确认上拉电阻 常见问题 • CS片选极性反了 • 上拉电阻太小拉低电平 • 电平不匹配导致通信失败 • 引脚复用功能配错 我的建议 • 先看数据手册再画原理图 • 每个信号都加测试点 • 上拉电阻预留0欧姆位置

这张图把整个分析流程串起来了。从拿到原理图开始,到最终确认上拉电阻,每一步都不能跳过。尤其是核对复用功能和检查电平匹配这两步,最容易出问题。

3.5 实战:一个完整的SPI原理图分析案例

假设你拿到了一块T113的开发板,上面接了一个SPI Flash(比如W25Q64)。原理图上标注如下:

  • SPI0_SCLK → PC0
  • SPI0_MOSI → PC1
  • SPI0_MISO → PC2
  • SPI0_CS → PC3
  • WP → 3.3V上拉(10kΩ)
  • HOLD → 3.3V上拉(10kΩ)

第一步,查芯片手册。PC0~PC3的FUNC 2是SPI0功能,没问题。

第二步,看电平。Flash是3.3V,T113也是3.3V,直连没问题。

第三步,看上拉。CS信号没有外部上拉,但Flash内部有弱上拉,可以不加。不过我个人习惯,还是会在CS上加一个10kΩ上拉到3.3V,防止上电瞬间误触发。

第四步,检查WP和HOLD。这两个引脚如果不接,必须上拉。原理图上已经做了,没问题。

一个小技巧:我习惯在原理图上给每个SPI信号加一个测试点。调试的时候,用示波器夹上去就能看到波形,不用到处找焊点。这个习惯帮我省了不少时间。

好了,这一章的内容就到这里。SPI硬件原理图分析,说白了就是三步:找引脚、对功能、查电平。把这三步走扎实了,驱动开发就成功了一半。