第三章 硬件原理图分析: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功能,结果调试了三天,一直以为是驱动问题。你想想看,硬件没通,软件再怎么调也没用。
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片选信号被设计成高电平有效,但驱动里默认是低电平有效。结果就是片选永远拉不低,通信失败。
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时钟一直出不来波形。
3.4 知识结构图:SPI硬件原理图分析流程
下面这张图,是我自己总结的SPI硬件原理图分析流程。每次拿到新板子,我都按这个步骤走一遍,基本不会漏东西。
这张图把整个分析流程串起来了。从拿到原理图开始,到最终确认上拉电阻,每一步都不能跳过。尤其是核对复用功能和检查电平匹配这两步,最容易出问题。
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硬件原理图分析,说白了就是三步:找引脚、对功能、查电平。把这三步走扎实了,驱动开发就成功了一半。