# 教程总述
**对于高速电路设计一直比较感兴趣,想自己做一个XX派,但苦于资料太少了。** 过去6个月在摸索中完成了全志H6开发板。相信肯定也会有其他小伙伴有类似的想法,因此就有了这样一个《从零入门ARM高速电路设计》教程。
**本教程,将给出一个可行的学习路径**,分享我自己在做的过程中的一些经验(看别人似乎挺容易的,但自己操作起来怎么那么难,eg. BGA焊接),以及设计过程中的一些考量。
我作为高速电路设计的初学者,肯定有知识和经验上面的不足,要是有错误或者资料的补充,欢迎在评论区指出和补充。**大家可以一起完善这个教程。**
项目主页:[https://oshwhub.com/logicworld/h6_board](https://oshwhub.com/logicworld/h6_board)
# 焊接和调试
## 机焊的质量-整板焊接
接下来正式进入焊接环节。
### 正面焊接
因为,我的正面使用了JLC SMT贴片,我的开局正面就已经贴完了70%。只是剩下一些大器件(H6, LPDDR3, AXP805),少量阻容晶振小器件,以及一些接口器件。
* 一些大器件:后面会专门详述;
* 对于少量阻容小器件:可以用电烙铁焊接,也可以锡膏+热风焊台;
* **我基本采用后者,主要原因是器件比较密集,好些地方都难以放下电烙铁头。**
* 具体方法是,用针筒从针头挤出少量锡膏到焊盘上,放上元器件,然后,热风吹。针头要比较细的那种,可以挤出非常少量的锡膏。稍加练习,应该也可以焊0402封装的元件。焊接效果,基本和机焊没有什么差别。
* 一些接口器件:正常电烙铁焊接,没有什么特别的;
![1677345379229_未焊接正面.png](//image.lceda.cn/pullimage/3MYBGgMw3xFEUEBrZQFeKBrnMWnYO0ApSbqN5s4W.png)
**如果,你的开局是空白的板子,那么,建议的方式是使用钢网,刷锡膏,人肉贴片,加热台或热风焊台加热。** 一次性把BGA,QFN封装都焊接好,可能是比较依赖经验的,可以试一把,但如果你是第一次焊接BGA,我觉得失败的概率比较大。不过,这条路我没有走,因此,也不能给出更具体的建议了。
### 背面焊接
背面是完全没有焊接的,都是一些阻容元件。**我采用了“对钢网,刷锡膏,人肉贴片,热风焊台加热”的方案。**
**刷锡膏:**
![1679419646906_刷锡膏_1.jpg](//image.lceda.cn/pullimage/bkJtQavw1MI1hMvrioXHbINuJay2UJTcgQjrN2sD.jpeg)
**人肉贴片:** 人肉贴片贴的不完全正,但是,融化后的锡的表面张力会把元器件拉回正确位置;
![1679419670136_人肉贴片_1.jpg](//image.lceda.cn/pullimage/teRP5J6EJAfGny0Q9iXye60oPcOIJtMIyvZbmB2N.jpeg)
**焊接成果:**
![1679246828831_板子背面_1.jpg](//image.lceda.cn/pullimage/Pf2bEpI3L8CXSWQMlYM2RfMlYLiJSA0GPEhx2GqD.jpeg)
### 焊接后的检查
1. **用放大镜看一下是否有连锡短路或者虚焊断路的情况**,对于疑似情况,用万用表进行深入检查;
2. **使用万用表通断档,检查是否有短路或断路的情况;**
1. 测量相邻的元器件,相邻焊盘,电容两端是否有短路的情况;我一般是会把所有电容两端都查一遍,以防电源直接短路了。
2. 测量是否有虚焊/断路的情况,一般情况下是一个表笔接触元器件的引脚,另一个表笔接触焊盘或者电气联通的另一个焊盘。
**做完上面这些步骤后,板子上正反面的大部分器件应该都已经焊接上了,且初步检查没有发现什么问题。** 因为,缺乏电源和主控芯片的焊接,此时还无法上电测试。
## 第一座大山-QFN焊接和调试
上面这些章节的操作,还是和MCU板子是比较类似的。**接下来,我们来到了第一座大山面前-AXP805 QFN封装的焊接**,它的焊盘基本都是在底面,侧面稍微露出来一点,且焊盘和焊盘之间非常密集,两焊盘中心间距为0.4mm。
![AXP805.png](//image.lceda.cn/pullimage/UQLaklTau22SMa3Ote3BMJyO9r7aVW4JwVBMCEwX.png)
### QFN焊接
**我们先看两个焊接的视频,看看别人是怎么焊接**,你也可以去B站上面搜索更多的QFN焊接视频。[《如何手工焊接QFN封装-粗糙版》](https://www.bilibili.com/video/BV1Pm4y1Q7wW),[《技能分享\>从此不再畏惧QFN》](https://www.bilibili.com/video/BV1tR4y1g7Qx)
我大致总结一下焊接的流程和我的操作经验:
1. 将芯片的引脚和PCB上面的焊盘上锡;
1. **建议使用中温锡或者低温锡,不要使用高温锡,焊接难度会比较大;** 我一开始就用焊锡丝上锡,疑似是高温锡,导致热风焊台吹半天锡都不融化。
2. **我自己使用的方式是在焊盘上挤出锡膏,模仿SMT时刷锡膏的流程,而不是直接上锡。** 主要原因是发现用烙铁上锡因为引脚/焊盘比较密集,导致特别容易连锡。AXP805的引脚数和引脚密集程度是比视频中的来得更高(第二个视频焊接的是IP5328相邻引脚中心距离为0.5mm),因此AXP805的焊接难度也更大。
* 我的操作方法类似下图,只是下图加锡加得偏多了一些(截图自第二个视频):
![QFN_加锡.png](//image.lceda.cn/pullimage/0Pt0thb3lKsugV9AafAAjRM0EJ42xs3eD3UV6ZXv.png)
2. **将芯片放置到PCB上面,对齐1脚,大致对齐引脚和焊盘;**
1. 此时是很难完全对齐的,但是,关系不大,锡融化后,会通过表面张力把芯片归位的。
3. **热风焊台吹芯片,挤出多余的焊锡;**
1. 焊台风口温度设置到280-300℃;风嘴我使用了10mm直径的圆形风嘴;
2. 围绕芯片四周吹,使得板子和芯片一起被加热;
3. 等外围的锡融化之后,用镊子轻轻按压芯片,挤出多余的锡;
4. **轻轻戳一下芯片,看看是否有自动归位的操作;**
1. 我看过好多BGA和QFN的焊接,有人总结说,[戳一戳是焊接BGA和QFN的精髓。](https://www.bilibili.com/video/BV1Hu411z72D)
2. 但是,**这个戳一戳是这里操作起来最难的,也是最关键的**。一旦看到有归位动作,焊接也成功了7-8成。
3. 戳一戳的主要难度在于戳的幅度得很小,大约是0.4mm这个级别的,如果,手稍微抖一下很容易把芯片戳飞了。我的手是抖得不行,焊接0603都抖,根本没有那些Up主那么稳的手。
4. 经过摸索,**我发现通过压一压芯片,看他是否有归位动作,其实更容易操作**。压一压芯片主体是垂直方向的位移,但是附带会产生一个少量的水平方向的位移(估计只有零点几mm),这个位移是足够小的,且很容易产生。具体可以看[《技能分享\>从此不再畏惧QFN》](https://www.bilibili.com/video/BV1tR4y1g7Qx)第02分17秒左右,Up主下意识的压了一下芯片,芯片有一个归位的动作,可以放慢速度看一下。自己焊接时,就可以找这样归位的感觉。
5. 看到归位动作之后,可以加焊10-20秒;
5. **使用烙铁刮掉四周多余的锡,并用洗板水清洁一下芯片;**
6. **用放大镜检查是否连锡或虚焊;**
7. 焊接失败:
1. 如果,你是第一次焊接的话,那么,绝对不会那么容易的。我遇到的两个最大的问题是,戳一戳一直手抖,看不到归位动作。另一个是,芯片引脚有连锡问题。
2. 焊接失败之后,需要用吸锡带+烙铁把芯片和焊盘上面的锡都清理掉。**注意:嘉立创的PCB容易掉阻焊,刮的时候要轻一些**。然后,从头开始走流程。
3. 我大约经过了10+次尝试才慢慢找到感觉,可以焊接出用放大镜看大体没有问题,可以进入下一步调试流程。
### AXP805 PMU调试
调试流程:
1. **万用表检查短路和断路:**
1. 用万用表的通断档检查一遍所有的电容两端,QFN相邻引脚,确认没有短路出现。
2. 断路不太好查,可以等后面的上电测试。
2. **主控芯片上面的反馈电压:**
1. AXP805的DCDC-A&B,DCDC-C的电压反馈引脚是接到了主控芯片H6的内部电压反馈CPU-FB和GPU-FB上面。而此时我们还没有焊接主控芯片H6,也就是AXP805的电压反馈引脚是悬空的。
2. 此时如果上电的话,PMU会进入自我保护状态,不会输出任何电压,就像是芯片坏了一样。
3. 因此,我们需要临时飞线,把AXP805的电压反馈引脚接到AXP805的对应电源电压输出引脚上面。即将电压反馈回路给连通上。
3. 上电测试:
1. **此时我们开始需要使用可调电源了**,可调电源可以设定电压,控制最大电流(防止短路烧掉芯片,初期调试可以设置最大电流为0.5A),以及查看当前电流的大小,判断芯片是否正常工作。关于通过电流判断机器运行状态,可以找[B站 笔记本维修厮](https://space.bilibili.com/382666849)看看,我也是从他那里学的。
2. **设置完可调电源后,我们就可以正式上电了**。上电的那一下,注意看可调电源的输出电流,
1. **如果,电流直蹦0.5A走**,那么,赶紧掐掉电源,估计是哪里短路了。
2. **如果,电流直接就是0.000A**,那么,可能是哪里不正确。可能有短路出现,芯片进入自我保护状态,直接不工作了。或者某些地方虚焊了。
3. **如果,电流是0.00xA**,那么,这个是正常的状态。你可以对着电源树,用万用表开始测量一下各个位置,确认各个点位的电压都是正常的。
![电源树.png](//image.lceda.cn/pullimage/urR75lnvmOrECjSVgkDCvINcM11Z6JVbXIcGLOvO.png)
4. 测试失败:
1. 上面这个测试流程我大概走了几遍,才达到了正常的电压输出状态。
2. **建议是先把PMU搞定了,再去搞主控芯片**。一开始我是把主控芯片和PMU都焊上了,期望一次性搞定两个,高估了自己的水平,导致难以查出来到底哪里有问题。
## 在迷宫中慢慢摸索-BGA焊接和调试
**翻过了QFN这座大山,我对于焊接有了一些敬畏之心,也积攒了一些经验。** 但是,接下来遇到了更难的问题,BGA的焊接。BGA的引脚都在芯片底下,是否虚焊或短路,肉眼都不可见,工厂是依赖X-ray来查看的。**我们手工焊接一切全凭经验,如同走迷宫一般,不知身在何处。**
![H6芯片.png](//image.lceda.cn/pullimage/gD88O2L0k0e28lZztMUICK8blMIdvwHEUOQCmswI.png)
### BGA植球
**在焊接之前,我们先学另外一个能力-BGA植球。** 我们买到的芯片,哪怕是散片,一般也都是完成植球的。如果,我们是初学BGA焊接的话,那么,我们大概率是无法一次性焊接成功的。也就是我们得重新植球后焊接。
我们还是先来看几个视频,[《想自己DIY固态和U盘?up教你如何进行BGA植球》](https://www.bilibili.com/video/BV1SK4y1Z7t7),[《锡浆植球太难?其实很简单》](https://www.bilibili.com/video/BV1Dq4y1373Y),[《快速学会植锡》](https://www.bilibili.com/video/BV1d4411s7zE),[《锯下来几个7010,进行一个BGA拆焊植球》](https://www.bilibili.com/video/BV1f34y1C7Tt)。你可以在B站上面找更多的视频,但基本也都大同小异了。
我大致总结一下植球的流程和我的操作经验:
1. 确定钢网:
1. **SMT贴片用的钢网和植球的钢网是有些不同的,毕竟两者用途不同。**
1. 一方面是,SMT钢网一般是0.12mm厚度,植球的钢网是0.2mm厚度;
2. 另一方面是,植球的钢网的孔偏大一些;(当然这个和封装设计时有关系)
2. **整体的目的都是为了让单个锡珠更大一些。** 左图是SMT贴片用的钢网植球结果,右图是芯片买来的时候自带的植球结果。右图的植球大小明显比左图大。锡球太小会导致,BGA部分焊盘虚焊。
![1677349099747_BGA植球_1.jpg](//image.lceda.cn/pullimage/KtUpwufw2SfJH89RDf4MisrwAxnT4QjKVi3cQxDG.jpeg)
3. **因此,要么使用通用的钢网,要么,专门去打印植球用的钢网。** 注意通用钢网的pitch和主控芯片得相同。主控芯片并不是每一个位置都有引脚的,它的引脚排列是不规则的,但是,通用钢网是规则的。这个是通用钢网最大的问题,会给植球带来一些困难。
![通用钢网2.png](//image.lceda.cn/pullimage/g2laxR2hH2yCDLhFJznW3Yq09i2lxBMw48WPCgQt.png)
![通用钢网.png](//image.lceda.cn/pullimage/qj97RGFCsDkaHE7dEqanp332xMxyHVuexFONYDnt.png)
2. **用吸锡带+烙铁清理掉芯片上面的锡球;**
3. **使用钢网对准芯片焊盘:**
1. 芯片下面可以垫一张餐巾纸,防止芯片划走;
2. 然后,小心对齐芯片和钢网;
4. **刷锡膏;**
1. 朝一个方向刷,否则,锡膏容易渗到钢网和芯片的缝隙中;
5. **热风焊台吹锡膏;**
1. 风口温度300℃足够了,稍微吹一下,锡浆就会变成明亮的锡珠。
2. **钢网会热胀冷缩,而变得不太平整,需要用镊子压住钢网**,否则,锡球容易出现流动和融合。
6. **取下芯片;**
1. 可以用牙刷沾着洗板水刷,可以方便的完整取下芯片。
2. 如果,从一个角落开始掰的话,小心可能会掰掉锡珠。
7. **[可选]刷掉多余的锡球;**
1. 如果,你使用了通用钢网的话,需要用牙刷沾着洗板水,刷掉多余的锡珠。
8. **重新吹一遍锡球,让锡球归位;**
1. 如果,有少量的焊盘缺了锡珠的话,可以用镊子沾点锡膏修补一下,然后重新吹一遍。
9. **洗板水刷干净芯片,以备用;**
10. 植球失败:
1. 植球容易出现两种失败情况:
1. 一些引脚缺锡球;
2. 有连锡现象,导致某些锡球特别大;
2. **我也是失败了10+次,才能相对稳定的可以完成植球。所以,还是需要多次练习,再练习。**
3. 上面视频中的芯片都偏小一些,植球相对也会更容易一些。
### BGA焊接
**完成芯片植球之后,我们终于来到了BGA焊接。**
首先我们还是看几个视频,[《如何手工焊接BGA封装 -- 粗糙版》](https://www.bilibili.com/video/BV1DM4y1F7uQ),[《BGA芯片焊接演示》](https://www.bilibili.com/video/BV1hJ411J7pt), [《用EMMC芯片练习BGA焊接》](https://www.bilibili.com/video/BV13T411m7Qa),[《\[保姆级教程\]随身wifi扩容4g一秒扩容到16g》](https://www.bilibili.com/video/BV1XG411N7Dg)。
我再来总结一下,操作流程和我自己的经验:
1. **在芯片锡珠或者PCB焊盘上面涂上薄薄一层焊油;**
2. **将芯片对齐PCB上面的丝印:**
1. 芯片引脚和焊盘可以不完全对齐,但是最多不能超过1/2个pitch,否则会错行。
3. **热风焊台吹芯片;**
1. 焊台风口温度设置到350℃;风嘴我使用了边长12mm的方形风嘴,因为,BGA本身是方形的,圆形风嘴对于BGA的4个角的加热情况不太好;**方形风嘴很关键,否则,BGA难以被同时加热到焊锡融化的温度,导致焊接异常困难;**
2. 如果,BGA只有一部分的锡球融化的话,是无法正常焊接的,也无法产生自动归位的效果。**我们期望的效果是芯片整体被加热,所有锡球都融化,芯片漂浮在锡球液滴之上,** 就像[这个视频](https://www.bilibili.com/video/BV1ny4y1k7Pv)展示的那样。使用了方形风嘴之后,更容易全面加热,焊接就容易了许多。
3. 因为,H6的芯片比较大,其实比视频中演示的芯片(eg. eMMC)都要更难以焊接。
4. **轻轻戳一下芯片,看看是否有自动归位的操作;**
1. **我们又到了这个最难,且最关键的环节。** 这次按压芯片的方法不能再使用了,因为,按压可能导致BGA底下出现连锡的问题,而且也很难从表面看出来。
2. **我依然手抖,无法精准的轻戳pitch/2的距离。** 偶然之间我发现了一个绝妙的方法。
3. 因为,我对于BGA附近的温度没有把握,因此,我在热风焊台吹的时候,也用热电偶温度计去探测BGA附近的温度,从而能够感知焊接的进展。**热电偶温度计的探头是一根柔软的线,我发现可以用它替代坚硬的镊子来戳芯片。**
4. **如果,芯片已经漂浮在锡珠液滴之上了的话,柔软的探头也可以戳动**,如果,锡珠还未融化,那么,柔软的探头就不太容易戳动芯片。另一方面,拿镊子时手是悬空的,更容易抖,**握线时的手全程是放在桌子上的,更稳一些。**
![1679940396899_戳一戳.jpg](//image.lceda.cn/pullimage/JQPTRmdeJWmI5hCBihdDjuQo52BFEwKA3FPfntvI.jpeg)
5. 焊接失败:
1. 失败的情况大概率是无法看到自动归位的现象,或者直接被戳飞了。因为,引脚全在底下,是否连锡或虚焊,都没有办法通过肉眼直接看。
2. **我也是经历了10+次焊接,才能够比较顺利的看到自动归位的现象。很容易焊的怀疑人生,进而准备放弃,但一定要坚持,慢慢尝试和一点点进步,加油!加油!**
### 主控芯片H6调试
**焊接完成主控芯片(BGA封装)之后,就需要开始主控芯片的调试。**
1. **万用表检查短路和断路:**
1. 用万用表的通断档检查一遍所有的电容两端,确认没有短路出现。**如果,你此时发现某些电容两端的电阻只有几十欧姆,甚至十几欧姆,这是正常的情况。** 只要不是0欧姆,就还算正常。
2. 断路不太好查,可以等后面的系统级别的测试了。
2. 去掉电压反馈的飞线,让反馈电压由主控芯片来提供;
3. 上电测试:
1. **因为新增了主控芯片,电流会有所增加,电流大约在0.0xA。**
2. 测量PMU电源输出电压,确保电压正常。
2. 测量VDD-CPU和VDD-GPU应该是可以正常通过主控芯片来提供反馈电压。如果,电压为0的话,可能是主控芯片的电源和电压反馈引脚焊接存在问题。
3. **使用示波器测试晶振**:没有示波器的话,可以用万用表,测试晶振两个引脚的对地电压,两个引脚的值应该都不为0。否则,晶振引脚焊接存在问题。
1. 32.768K晶振:
![1677345141489_32K晶振测试.png](//image.lceda.cn/pullimage/iDFRMAMVo1S2bGMhAGoLAMS8Lvt5SRX2ijbME52G.png)
2. 24M晶振:
![1677345019311_24M晶振.png](//image.lceda.cn/pullimage/wzUmQyVi6j1kLnKOalTdx3rAN66KHHvHcleL2H3L.png)
4. 测试失败:
1. 测试失败之后,只能是尝试重新BGA焊接,看看是否存在焊接问题。
2. 这里我大概尝试了几次焊接,**在这过程中,也是比较煎熬,不知道是否原理图有问题,或者焊接有问题,还是芯片坏了。**
## 看到曙光了-DragonHD DDR内存测试
**焊接完主控芯片之后,再把LPDDR3给焊接上。** 因为经过了主控芯片的焊接,相比较而言,LPDDR3的焊接就容易了许多。
**但是,焊接完之后,离奇的事情发生了,VCC-DRAM对地短路了。** 一开始我以为是焊接问题,我重复焊了2-3遍,并且都满足了戳一戳会归位的要求。但是,依然还是短路。没有办法,我就只能在原理图/PCB上面找找是否有什么问题,怎么就短路了呢?**然后我就发现了大问题,LPDDR3的原理图库存在问题**,其中G6引脚实际上是VSS,原理图中错误的认为是VDD。
事已至此,再去打一次板的时间周期也太久了,而且我也不知道是否还有其他问题。**只能继飞线,割铜皮等补救办法之后,又发明了抠锡珠的方法**,让G6引脚虚焊。再次测量,发现短路消失了。上电之后,电流来到了0.11A,看起来它已经成功给LPDDR3供上电了。eMMC因为已经在SMT时焊接好了,也就不需要再次焊接了。
**从[这个项目](https://oshwhub.com/dingcheng/quan-zhi-a64-kai-fa-ban-2)知道了DragonHD这样一个全志的DDR内存测试工具。** 原项目的版本比较老,不支持H6,又在网上找了一圈,找到了更新的DragonHD V1.7.7,它支持H6的测试。购买USB公头转公头的刷机线,安装USB驱动,电脑识别到板子上的USB设备,DragonHD刷入测试程序,开始测试,电流在0.2A-0.3A之间跳动,它稳稳的通过了100MHZ的内存测试。200MHZ,300MHZ,500MHZ……,最后可以稳定的通过888MHZ。
**这意味着H6主控芯片可以正常执行指令,调试USB正常,LPDDR3内存连接正常,eMMC连接正常,阻抗匹配正常,核心最小系统工作正常,系统从硬件向软件飞跃。经过了这么多个夜晚的奋战,终于我看到了曙光。**
![1677345047778_LPDDR3内存测试.png](//image.lceda.cn/pullimage/DvrpZCcPWNCfYjtsiXDh0nxVvh3qJuJxzPE9WrKt.png)
## 小结
至此我们完成了H6开发板的最小系统焊接和调试过程,下一章我们将开始软硬件联调部分。
![1680200013454_通过内存测试.jpg](//image.lceda.cn/pullimage/IIRddnxqd8kGCTHSlWDUSMbCNukvmgzAvx09V00G.jpeg)