1、上拉电阻
网上有很多观点认为硬件设计上一定要在 SDIO 的所有信号上加上拉电阻。根据当前对 SDIO 协议的理解,个人见解如下
首先上拉电阻的作用仅仅是使 SDIO 空闲状态,一些 IO 关闭输出的情况下,使 IO 信号保持为高电平。避免高阻态,电平不确定,导致主从机任意一方可能采样到错误的数据或信号,从而影响 SDIO 工作。SDIO 传输数据过程,IO 是一定处于输出态的,所以上拉强度不会影响 SDIO 通信(外部上拉电阻阻值常见选用10KΩ、47KΩ)。但不建议使用过大的阻值,太弱的上拉强度容易受干扰信号影响,无法保持 IO 为高电平。
CLK:CLK信号是由主机输出驱动的,IO 并不会像其他信号那样会存在三态切换,所以 CLK 一定是不需要上拉电阻的(无论SDIO主从机双方是否能使能内部上拉)。另外即使主机在不输出时钟信号的情况下会将 CLK IO 配置为高阻态,这也不需要上拉。因为 SDIO 的数据传输需要结合 CMD 信号生成一个开始时序,从机才会开始接收数据。
CMD:主机端一定要具备上拉电阻。如果主机可以使能内部上拉,则硬件上无需单独增加上拉电阻。
D0-D3:在主从机直接固定设计在 PCBA 板的情况下,只要主机或者从机一方可以使能内部上拉,则硬件上无需单独增加上拉电阻,反之硬件上应当具备上拉电阻;如果主从机并不固定连接,从机是热拔插的,则主机端设计,只有主机不具备内部上拉的情况下,硬件才需要外部上拉电阻。
CD:在支持热拔插的设计场景下,为了方便检查卡插入,会有个CD信号。比较常见的是,卡槽本身单独提供了一个 CD pin 脚,在卡插入的情况下,会与地导通拉低。这种情况下,主机内部上拉或硬件外部上拉有一个即可。另外一种比较特殊的用法,在 SDIO 主机 IO 不够用或者卡槽本身没有 CD pin 信号的情况下,复用 D3 用作 CD 信号,软件处理起来会更复杂一些,且要求从机设备使能内部上拉(TF卡/SD卡是具备的):首先软件上如果主机端有使能内部上拉,应该特别注意关闭;主机端 D3 信号硬件设计上不需要上拉电阻,使用 470KΩ 下拉电阻连接。在卡未插入情况下,D3 为低电平;卡插入且未执行 SDIO 传输操作状态下,D3 为高电平。
2、预留串联电阻
在 PCB 走线设计不太好的情况下,信号可能产生过冲、振铃,可能导致采样错误,通常每个信号串联 22Ω 或 33Ω 的电阻。
3、PCB 走线
SDIO 时钟频率并不高(通常几十 MHz),所以并不需要特别刻意要求等长走线。