
简介面向电子设计与嵌入式硬件工程师的 micro SD/TF 卡封装集成包解决了在 Altium Designer 中手动绘制存储卡器件容易出错、效率低的问题提供原理图库、PCB 封装库与 3D 模型一体化的标准元件集适用于移动设备、数码相机及嵌入式数据存储模块的电路设计。压缩包共 5 个文件包含 LibPkg 集成包、SchLib 原理图库、PcbLib 封装库、PNG 预览图及 htm 说明文档整体仅 524KB便于快速下载与导入工程。已有 701 人学习使用。库中按工业规范定义卡座尺寸、引脚位置、焊盘形状与接触点信息原理图符号覆盖信号线定义3D 模型可用于物理干涉检查LibPkg 将多个库文件集中打包设计者可一次性加载全部资源从原理图到 PCB 布局保持数据一致适合需要可靠 SD 卡接口设计的中级硬件工程师参考在原理图与 PCB 阶段均可直接复用显著减少重复建模工作。1. 一个能直接投板的 micro SD 卡 AD 集成库该是什么样micro SD/TF 卡座是嵌入式硬件里容易“想当然”的器件。 原理图上只是一个八个引脚的小连接器真把库从网上下下来或自己画焊盘间距、卡扣定位柱、金属外壳接地和卡插入后的 3D 干涉任何一个没处理好板子回来不是卡插不到位就是 FPGA 读不到镜像甚至打样厂反馈定位柱孔是镀铜的没法拆。 一个完整的“micro SD TF SD卡集成库原理图库PCB库AD封装库器件库3D库AD库”就应该把这些一次性打包.SchLib 负责信号名.PcbLib 负责焊盘和厂界3D 模型负责机壳检查再用一个 .IntLib 把它们锁在一起。 这篇文会拆开这类 AD 库讲安装、映射、BOM 对照和排错也给出没有现成库时的重建方法面向正在画 STM32/FATFS 板、Zynq/PetaLinux 启动卡或独立 FPGA 读卡小板的硬件工程师。2. 分离库还是集成库先把 micro SD 卡的四个组成部分拆开在 AD 里为什么要用“集成库”而不是直接散放一个原理图符号和一个 PCB 封装 因为 micro SD 卡是存在多个设计域状态的器件原理图纸上只有逻辑引脚焊盘有二维尺寸卡扣和外壳有三维结构。 集成库通过 .IntLib 把符号、封装和模型绑定换一台电脑或换一个工程都不会丢掉链接。 打开“micro SD TF SD卡集成库原理图库PCB库AD封装库器件库3D库AD库”这类 zip里面至少应该有 SchLib、PcbLib、Step 模型文件夹和一个 IntLib有时候还有一个 Excel 参数表。 这种分层关系先看明白后面遇到“为什么只有符号没有封装”才不会懵。2.1 原理图库引脚排列与电气引脚类型是第一个坑标准 micro SD/TF 卡座斜插或推拉式多为 9 或 11 焊盘8 个信号/电源焊盘1 个卡检测开关焊盘外加 2 个定位柱机械焊盘通常为 NPTH也可能只做 SMT 支撑盘。 引脚 18 的定义是固定的DAT2、DAT3、CMD、VDD、CLK、VSS、DAT0、DAT1。 你在新建 .SchLib 时最需要注意的是引脚编号与封装焊盘编号一一对应电气类型选 Power 还是 Passive。 VDD 和 VSS 如果设成 PassiveERC 不会报短路但仿真和网络共享容易出错我一般把 VDD 设成 Power、VSS 设成 Power 并加注释连接到电源符号。信号引脚通用对照表可以做成原理图库的文本注释方便画原理图的时候直接对照 STM32 或 FPGA 的 I/O 分配引脚编号信号名模式MCU/FPGA 对应说明1DAT2SDIO / SPI MISOGPIOSPI 模式不用但需上拉2DAT3CD / CSGPIO卡检测引脚上拉电阻 10k3CMDSDIO CMDGPIO命令/响应引脚上拉 10k~50k4VDD电源3.3V至少放一个 0.1uF 和一个 1uF MLCC5CLK时钟GPIO布线要求最短加串阻 22Ω6VSS地GND与主控地共地避免形成地环路7DAT0SDIO D0GPIO数据位 08DAT1SDIO D1GPIO数据位 1SPI 模式下悬空或上拉引脚类型的设置路径在 .SchLib 里双击引脚在 Properties 面板把 Electrical Type 设为 Power/Passive。 大多数网络上的 AD 库容易在这里偷懒全设成 Passive这会导致集成库编译时不报错但实际布板时电源网络不进入电源平面规则检查留隐患。 这是我建议自己核对一遍的原因。2.2 PCB 库焊盘尺寸、定位柱和卡座本体占位PCB 封装部分micro SD 卡座不是标准封装没有统一的 footprint 名称。 每一家的卡座都有差异常见的有 Molex、TE、Amphenol 等引脚间距有 0.5mm 到 1.1mm 不同版本。 做库时必须以规格书的“Recommended PCB Layout”为准不能拿一个封装图走天下。 核心检查点信号焊盘SMD pad长度 0.8mm 左右宽度与引脚的 foot 形成外延保证焊盘间最小距离 0.2mm 以上。卡座固定柱一般是两个非金属化孔孔径 1.0mm1.2mm位号放在机械层同时加一个直径 1.8mm2.2mm 的丝印圈提示不可布线。金属壳接地弹片很多卡座有 2 个以上接地焊盘用于 EMI 屏蔽这些焊盘命名为 Shield 或 GND在集成封装里必须映射到 GND 网络否则 DRC 会直接报未连接。一个经验维度是针对卡插入方向的三维占位。 在 PCB 库里我会再放一层“Placement Outline”用机械层 15 画卡座本体范围用另一个机械层 13 画卡插入后的悬出体积。 这个体积平时看不见等到做结构干涉检查时就有用。2.3 3D 库Step 模型的镜像、原点与金属壳3D 部分最容易翻车的不是模型本身而是模型原点。 下载来的 .step/.stp 模型通常有两种视图从卡接触面透视图或从引脚底视图。 导入 Altium 时若不对齐会出现三维预览中引脚和封装焊盘错位半个引脚的情况。 在 .PcbLib 中导入 3D 模型的路径是 Tools → Manage 3D Bodies或者直接拖拽 step 文件。 导入后必须把模型的原点对齐到封装原点旋转角度按数据手册的标准放置方向核对尤其注意壳体上那个“push-push”推杆方向这是最多人搞错的点。2.4 集成库打包把散件编译成一个 IntLib完成 .SchLib 和 .PcbLib 后必须做一次关联动作打开原理图符号在 Model 区域添加 Footprint 和 3D 模型。 这一步完成后创建集成库项目File → New → Project → Integrated Library把上述文件加入然后执行 Project → Compile Integrated Library。 编译进度条走完后输出目录会生成 .IntLib 文件。 这里有一个判断原则outputs 里有 .IntLib才叫“集成库”只有散件那只是资料包。验证散件与集成库关系可以用一段脚本检查 zip 中的文件完整性很多从网上下下来的“AD库.zip”只是散件乱放先跑一遍再导入 ADunzip -l micro SD TF SD卡集成库原理图库PCB库AD封装库器件库3D库(AD库).zip | awk {print $4} | sed s/.*\.// | sort | uniq -c | sort -rn输出会明确告诉你这个包里有多少 .SchLib、多少 .PcbLib、多少 .step、有没有 .IntLib。 例如结果是1 .IntLib, 0 .PcbLib说明编译好的库是存在的但也意味着想改封装必须去解包 .IntLibExtract Source从源码编译回落点更准。 我用这个命令整理过几十个来源不明的 AD 库能快速分清“能用”和“要返工”两类。3. 把 micro SD 集成库装进 Altium 工程可用库、Footprint 映射与 BOM 对照在 Altium Designer 里典型的分发机制是 *.IntLib 文件。 该 zip 包若包含一个编译好的 IntLib在工程中使用它最简单的方法是两步将文件复制到库目录然后在 Libraries 面板中单击“三横线” → File-based Libraries Preferences路径指向该目录。 很多人下载库后图省事直接在 Libraries 面板中“Install”而没有把路径配置到全局 Preferences结果新工程一开库又被清掉提示“找不到器件”。 这是热词里“AD库怎么找”最最常见的真实原因——不是库出问题是路径没加进来。3.1 在工程里绑定集成库而不是散装符号Altium 的集成库有两种挂载状态Available Libraries 全局可用与 Project Libraries 只在当前工程内可见。 如果是团队协作我倾向把 .IntLib 加到全局 Available Libraries同时在工程文件里保留一份库源码.LibPkg避免成员之间档案漂移。 在 Preferences → Data Management → File-based Libraries 中点击 Install选择 IntLib 后原理图库、PCB 库和 3D 模型会作为一个实体出现。 这里有一个细节IntLib 一旦编译好就只读想要改引脚名或封装需要从 IntLib 中 Extract Source它会释放出 .SchLib/.PcbLib 并新建一个集成库工程。 改完之后重新编译再回安装目录覆盖原文件。 这一系列动作不会再有“改了但保存不上”的疑难杂症。要特别提醒Altium 的 Library 面板默认显示的是“Libraries”而不是“Components”。 如果你在面板的搜索栏输入micro SD搜索结果可能会因为库的索引缓存滞后而搜不到。 操作顺序应该是在 Preferences 中先 Global Update然后在 Libraries 面板中刷新最后再放置 New Component。 很多用户在这里就直接判定“AD库找不到”其实只要强制重建索引右下角面板 → Libraries → 选 “Rescan”)就好。3.2 放置 micro SD 卡座后必须做的三处参数核对放置器件后不要立刻连线。 先双击元件打开 Properties检查以下参数Designator 位号必须唯一并且有翻转方向PCBA 需要丝印方向不要用默认的?。Comment 值填写料号比如“TF-01A”或“DM3BT-DSF-PEJS”比默认的 “Micro SD Card” 有用。 在 BOM 输出时Comment 是采购件过滤的核心字段。Footprint 名称确认是连接器的完整 PCB 封装比如TF_CARD_SMD_HRO-9-0204而不是随便选的SDCARD-ADAFRUIT。然后在原理图和 PCB 之间更新Design → Update PCB Document。 如果 PCB 封装库内焊盘编号和原理图引脚编号不一致这一步会出现错误报告错误类型是“Footprint Not Match”或“Extra Pin Sequence”实际焊盘数 9 个、原理图引脚数 8 个就是正常的因为定位柱机械焊盘不会出现在原理图里。 这里要观察 Reports 中是否有“引脚缺失”的 warning注意不要把机械焊盘的差异误判成错误后面第 4 章会细讲。3.3 导出一份完整的 AD 元器件库对照表“AD 中元器件库对照表” 这句话背后的需求是把库里的元件和描述输出成表格和生产、采购甚至结构工程师对齐。 在 Altium 中选中原理图或整个工程然后 Reports → Bill of Materials勾选字段 Designator、Comment、Footprint、Quantity、Manufacturer Part Number。 导出 .xlsx 后第 2 列就是封装名第 3 列是位号。 用表格记录库名与封装名能有效防止两个不同库封装同名、焊盘数不同的混乱。DesignatorCommentFootprintQuantityJ1Micro SD 9PinTF-01A-SMT1J2Micro SD 8Pin 推推式SMD-MSD-08P1这条映射建议直接写在工程 Notes 里作为“库对照表”附在项目文件夹。 因为采购拿到 PCB 加工文件不会看 AD 原理图只会看集成库出的 BOM 和装配图。3.4 从库到主控STM32 FATFS 与 Zynq 启动卡的电平约束micro SD 卡座画完后原理图连接逻辑也要直接写进引脚库的文档属性。 STM32 用 SDIO 跑 FATFS 时DAT、CMD 线的上拉电阻 10kΩ 应该放在卡座附近SPI 模式则只需要 CS、CLK、MOSI、MISO 四根线DAT1/DAT2 需上拉但仍接 SDIO 内部。 库元件若带上推荐外围电路图或电路参数注释画图时就不用翻数据手册。对于 Zynq/PetaLinux 这组场景硬件基本一样Zynq 的 SDIO 控制器输出 3.3V卡座 VDD 引 3.3VCLK 线建议闭环CMD 与 DAT 加 22Ω~33Ω 串联电阻PetaLinux 2025.1 生成 boot.bin、boot.scr、image.ub 后是按 FAT32 分区丢到 SD 卡上硬件上任何一根 DAT 线断或虚焊都会导致启动时卡在“MMC0: Card did not respond to voltage select”或引导 shell 里报 “sdhci: Timeout waiting for hardware interrupt”。 这些报错跟库本身无关但库原理图符号如果没给电源滤波电容板子上就很容易出现类似“SD 卡显示没有文件”的怪问题。 因此我的习惯是在 .IntLib 的注释字段写一排“VDD_CAP1uF0.1uF, CLK_SER22R, DATA_PU10K”。4. 引脚错位、3D 镜像与 SD 卡挂不上库调试的九成问题都在这些环节这套资料如果有坑多半不是原理图封装不完整而是使用者对 Altium 的库机制存在误读。 这一节直接把调试经验拆成三类编译期、装配期、调试期。4.1 编译期集成库在 Project Compiler 突然报错当你在工程中添加了 IntLib只要库的源文件和封装文件链接完整编译工程一般不会因为“元件找不到封装”而失败。 最常见的错误是“Unknown Pin”我验证一个第三方 micro SD 库时原理图引脚名是 GND1封装焊盘名是 GND手动一改Pin1 网络丢失DRC 里直接报“Floating Net Label”。 解决方式是利用封装库编辑器里的同步功能在 .PcbLib 中 Tools → Footprint Manager把焊盘名改成和原理图引脚一模一样的 GND1再重新编译或者干脆把原理图引脚改成 GND并统一所有 drawing 的引脚名。 在 micro SD 卡座里因为 GND 焊盘数量多这个命名冲突概率非常高检查成本高所以建库时定个纪律把信号地全部命名为 “GND” 且不要加后缀卡座的金属外壳位叫 “SHIELD” 或 “GND_SHIELD”用网络分类器在原理图中并网。4.2 装配期PCB 封装与 3D 模型方向不一致许多 zip 包里的 3D 模型是从供应商官网拿的空壳模型没有按卡座实际安装姿态做旋转变换。 常见现象3D 模式下卡座本体躺在 PCB 上金属推杆悬空朝下SMT 引脚和模型上的引脚完全对不上。 这时候要用主视角解决先固定 .PcbLib 的编辑窗口为 top view在 3D Body 属性里填 Rotation X/Y/Z 角度。 大部分单位习惯坐标组 90, 0, 180重点不是多少度而是三个轴的旋转顺序千万不要为了“看起来对”一下调到 (45, 0, 45)那是治标不治本。 规范做法是记录供应商 step 文件内 local origin 与 PCB 封装原点的偏移量并写入 3D 模型文件名比如TF-01A_top_left_X0_Y0.step下次直接替换不踩坑。4.3 调试期SD 卡不能挂载或 FATFS 读不到文件这些现象在成品板上表象是“SD 卡显示没有文件”实测是卡座和信号完整性故障。 硬件上优先级最高的是 VDD 供电micro SD 卡在写操作瞬间电流能到 60~100mA如果你只在库原理图里放了一个 0.1uF没有大电容电流跌落会导致卡内部电压监测复位文件系统刚 mount 上就断开。 库内信号建议上加一只 10uF 钽电容位置尽量贴近卡座同时在 VDD 和 GND 间加 0.1uF 高频去耦离电源引脚 3mm 以内。当主控是 STM32 且使用 FATFS 时若 SPI 模式 CLK 频率过高超过 400kHz 初始化上限卡不会回复 CMD0现象就是“mount 返回 FR_DISK_ERR”。 排除库本身之后依次降低 SPI 时钟、检查 DAT3 拉上和 CDCard Detect连接。 一个常见错误是把 CD 引脚当成数字输入用但它的机械开关没有电气驱动必须外部上拉很多库的 CD 焊盘只是机械支撑引脚上没接网络画原理图时容易漏导致一体板无法识别卡重新插拔。FATFS 返回值含义排查方向FR_DISK_ERR底层读写错误CLK 频率、VDD 电压跌落FR_NOT_READY卡未就绪CD 引脚上拉、卡座弹片FR_NO_FILESYSTEM没格式化确认分区表、不是 RAW 格式FR_NO_FILE没找到文件文件名 8.3 格式或路径4.4 Zynq/PetaLinux 启动卡对应的信号完整性检查当库用到的 micro SD 卡座被放在 Zynq 板卡上加载 image.ub 和 boot.scr 的时候系统对时序要求比 STM32 高。 不遵守规则的板子会出现有时能挂载、有时无法挂载的现象这是典型的 SDIO 信号质量问题。 先在 PCB 检查清单里过几项CLK 到 GND 之间没有预留 22R 串阻或走线过孔太多。CMD 与 DAT 线没有 10k 上拉且靠近卡座。卡座正下方的地平面被断开。SD 卡座和主控之间距离超过 15mm 且没有包地。这些条件在库的 PCB 封装里其实就反映为布线层次如果封装本身把 VDD 和信号脚排布在相邻侧就很难把电容放在电源脚旁边。 这个时候宁愿换一个带双排焊盘分布的封装也不要硬拗线。 使用 Zynq boot.bin 启动时U-Boot 如果报switch to partitions #0, OK后卡死先量 CLK 波形再查卡座接地弹片到主控地是否有回地阻抗这通常能覆盖 90% 的怪毛病。5. 用规格书重建 micro SD 库并做 3D 干涉验收的规范5.1 从 pdf 规格书拿到 PLP 定位图如果你想从零开始我这里给出一套步骤。 拿到卡座的 PDF 数据手册找到 PLPPin / Pad Location图记录下所有焊盘编号、挖孔尺寸、edge keepout。 如果说明书里有供应商 STEP 模型不要急着直接导入。 先把原来的如果有库提取出来File → Extract Source拿到 .SchLib 和 .PcbLib作为脚手架因为封装上有位置偏移和相对坐标有用再对照规格书修改。5.2 绘制焊盘组并导入 STEP 模型在 .PcbLib 里画一个完全对齐的焊盘组。 把所有焊盘都放在 Top LayerX/Y 坐标按数据手册换算成 mil 或 μm 单位用坐标表格一次性输入不要拖拽。 机械固定孔放 Mechanical Layer 15孔径填 NPTH井径要比规格书大 0.15mm。 然后用 IPC-7351 的 f 值减去焊接盘外延量给每个信号焊盘加长方形 SMD 焊盘。第三步是导入 STEP 模型到封装。 具体操作Tools → Manage 3D Bodies → Paste 一个 .step 文件把原点拿到 (0,0)然后依照卡座数据手册的 top 视角旋转到与 .PcbLib 一致。 选一个极小的测试点比如螺丝孔来找到旋转角度如果与模型显示不一致就记下旋转度数写回文件名。5.3 编译集成库与 3D 干涉验收最后一步是集成库编译与 3D 干涉验证。 建立 LibPkg 并加入修改后的文件改完注释后编译确认 outputs 下面有 .IntLib。 然后在 PCB 编辑器中打开 3D 模式以原点撞线的方式View → Board in 3D查看卡座四周按快捷键 VB 展开板子再配合按下 Tab 键切换透明。 确认卡座本体不会顶到旁边的 USB 座推杆方向不会和限位块冲突。三个细节决定这个库好不好用第一把卡座型号写进元件 Comment 字段第二在 PCB 封装中把机械层的卡插入悬空体积用闭合线画出第三在 Components 面板搜索 micro SD 时把关键词 “TF”“SD”“HRO”“Molex” 都丢到搜索列里这样才能在不同供应商之间切换型号。 做完这一步后你的 micro SD 集成库才算从“别人给的包”变成“可复核的工程资产”。本文还有配套的精品资源点击获取