狗蛋(驱动小白)和老王(硬件老司机)关于硬件那点事儿的一次密谈
“老王,有个bug啊,很紧急啊?” QA急忙反馈到。
“什么问题? 老王心里咯噔了下,心想,NND,被QA缠住,看来今晚又得和我的躺椅相依为伴了。”
“这个陀螺仪有低概率会漂啊,定不住啊?”QA焦虑到。马上要发版本了,才测出这个问题,QA也是很急。
“我分析分析看先,#@@##@#@#%¥¥¥@!!”一分钟过去了,一小时过去了,一个通宵过去了。。。。。。
“QA,起床了,分析出来了,原来是这个机器的LCD屏异常了,然后软件上重新拉了下它的LDO电源,然而这路LDO又和陀螺仪是共用的,所以LDO重新下电,上电导致陀螺仪也复位了,最终导致其数据异常,乱飘了。”老王疲倦的吧啦吧啦到。
“那赶紧解决吧,老板盯得很紧了。”QA说道。
“解不了,硬件设计问题,这个得找硬件。和SW没有关系。”老王理直气壮的回答到。
“什么?。。。10分钟过后。”
“老张啊,老王说这个是硬件问题啊,你看怎么解决啊?很紧急啊。”QA拉着硬件部的老张说道。
“这个我是按照参考设计来的,HW已经定版了,改不了。老王,你看软件上能不能规避下?”
“晕,又是规避,每次硬件出问题,都让SW来擦屁股,有没有天理啊,这已经是第几次了啊?” 我心里极度愤怒。”
“老张啊,不行啊,软件改的话如果LCD异常,只能做reset,不一定有用啊?,这个本来是硬件上设计的疏漏啊,不能一路LDO为两个芯片同时供电啊,万一其中一个LDO被复位,另外一个芯片不就懵逼了?”
“先改改,让QA测测吧,HW这边实在没办法改啊,你们软件改几行代码就能搞定的了。只有你们SW想办法啦。”
“我&**……%%¥¥¥,好吧,看来还是我们软件万能啊,我只想到这一句话。”
结论:做驱动的永远都和做硬件的是一对欢喜冤家啊,与其事后出事两相埋怨,还是事先我们多多沟通,避免设计上的疏漏吧。
最后老王想起了一首歌词:
因为我们是一家人
相亲相爱的一家人
最后也因此引发了这次软件和硬件的一次密谈,目的是为了坦诚沟通,消除隔阂。让我们来一起围观下他们的对话吧。
1. 硬件板的几个常见概念,它们之间的关系
狗蛋(软件小白):PCB?
老王(硬件大拿):Printed Circuit Board 印刷线路板,PCB没有任何元器件。
狗蛋:PCBA?
老王:Printed Circuit Board +Assembly 线路板组装成品。通过SMT或者插件加工在原材料PCB板上焊接组装上所需的电子元器件,例如IC,电阻,电容,晶振,变压器等电子元器件,经过回流焊炉高温加热,就会形成元器件与PCB板之间的机械连接,从而形成PCBA。
狗蛋:面包板?
老王:面包板是由于板子上有很多小插孔,专为电子电路的无焊接实验设计制造的。由于各种电子元器件可根据需要随意插入或拔出,免去了焊接,节省了电路的组装时间,而且元件可以重复使用,所以非常适合电子电路的组装、调试和训练。
狗蛋:SMT?
老王:表面组装技术(Surface Mount Technology的缩写),它是一种将无引脚或片状元器件安装在印制电路板(PCB)的表面或其它基板的表面上,通过回流焊或浸焊等方法加以焊接组装的电路装连技术。是目前电子组装行业里最流行的一种技术和工艺。
狗蛋:驱动可能涉及的问题,如何应对?
老王:
1) SMT时炉温引起的虚焊,如DDR/CPU/各种外设。一些硬件单体异常问题可以考虑这种情况。
2) SMT贴错/贴反/漏贴器件。
2. 主要器件的摆放位置(BB/RF/MEMORY)
狗蛋:如何找器件?
老王:根据原理图的器件标识号结合器件的位号图来找。
狗蛋:如何确认器件贴片是否正确?
老王:观察芯片的PIN脚顺序。
3. 其他附件
狗蛋:屏蔽罩?
老王:用屏蔽体将元部件,电路,组合件,电缆或整个系统的干扰源包围起来,防止干扰电磁场向外扩散;用屏蔽体将接收电路,设备或系统包围起来,防止它们受到外界电磁场的影响。
狗蛋:定位孔?
老王:代表芯片第一个引脚的位置,用来识别芯片的引脚的,有的可能代表焊接或者插入芯片插座的正确方向。
4. 关于驱动
狗蛋:驱动调试的顺序?
老王:
1)器件的位置,型号,接口(读写接口,电源,其他信号如中断等等)。
2)软件配置(增加驱动代码,配置接口)。
3)读取关键调试信息(CHIP ID,驱动加载是否成功,获取数据是否正确)。
4)贴片是否正确,外围电路是否有缺失。
5)量取信号(电源,中断,读写总线是否有数据,以及更进一步的数据是否正确,比如时序,干扰,电平,时钟)。
狗蛋:PCB评审时驱动注意什么?
老王:
1)器件高度(大电容/TVS/ESD等和屏蔽罩/壳体的干涉)。
2)PCB强度。
2)走线距离板边。
4)重要信号调试点是否预留,尤其是新器件。
5. 认识各个模块的电路
狗蛋:模块电路关注什么?
老王:
1)每个模块有哪些重要信号。
2)输入输出引脚。
3)硬件控制的原理。
4)是否曾经有重要的Bug。
6. 电路中的重要器件和概念
狗蛋:上下拉电阻的作用?
老王:
1)加大高电平输出时引脚的驱动能力。
2)电平匹配,拉高低电平。
3)芯片闲置管脚接上拉,提高输入电平,管脚悬空易受电磁干扰。
4)上拉电阻是解决驱动能力不足时提供电流,下拉电阻用于吸收电流,解决灌电流。
狗蛋:0欧姆电阻的作用?
老王:
1)跳线,考虑兼容,为调试预留位置,美观方便。
2)数字地和模拟地的单点连接。
3)配置电路,类似拨码开关,比如选择器件地址,更改电路功能。
4)做保险丝用,PCB走线熔断电流较大,而0欧姆电阻电流承受能力较弱,在短路过流时发生熔断,保护重要电路。
狗蛋:电感在电路中的作用?
老王:
通直流,阻交流;当直流通过时,电感相当于导线,在交流电路中,产生阻抗,但它与电阻阻碍电流不同,电阻阻碍电流是以消耗电能为标准,而电感则阻碍电流的变化,则是纯粹不让电流变化,当电流增加时,阻碍电流增加,并将能量以磁场的形式存储起来,在电流减小时,将储藏的能量释放出来,以结果来说,就是阻碍电流变化。
狗蛋:电容在电路中的作用?
老王:
1)旁路,将输入信号中的干扰作为滤除对象。
2)去耦,是把输出信号的干扰作为滤除对象,防止干扰信号返回。
3)滤波,隔直通交,一般接在电源正负极之间,以滤除直流电源中不需要的交流成分,使直流电平滑。
狗蛋:什么是驱动能力?
老王:驱动能力就是指输出端口的电流最大流入流出能力或者限制。
狗蛋:什么是电平匹配?
老王:电平匹配指的是电路级连时前级的输出电压与后级要求的输入电压相近或相同,凡是电平匹配的前后级可以直连,否则要经过适当的电平转换,例如,同样TTL数字集成电路因电平匹配就可以直接互连,而TTL要驱动CMOS集成电路就要因为电平不匹配要额外加转换芯片。
狗蛋:什么是差分信号?
老王:通俗地说,就是驱动端发送两个等值、反相的信号,接收端通过比较这两个电压的差值来判断逻辑状态“0”还是“1”。而承载差分信号的那对走线就称为差分走线。
特点
a.抗干扰能力强。
b.能有效抑制 EMI。
c.时序定位精确。
狗蛋:如何看datasheet?
老王:由单元电路组成,包括主控制芯片,存储,电源,射频,辅助功能电路(TP/LCM/SENSOR/CAMEMRA/GPS等)。芯片命名规则,特性,Pin,控制信号,工作原理,重要寄存器,时序,电气特性。
好了,这次对话应该能为以后软件和硬件的合作打下良好的基础。希望以后软件不用再为硬件擦屁股了。硬件也不用给软件量信号,协助分析软件问题了,伤不起啊。
码农大讲堂这节课就到这吧,下课。老王要补觉去了,哇咔咔。
迎关注老王微信公众号:“嵌入式职场加油站”
查看更多精彩文章。希望能够在一些技术点上为大家抛砖引玉,答疑解惑。你们的关注将是激励我坚持创作和分享更多干货技能的源动力。更多技术干货经验技巧会第一时间发布在公众号上,欢迎查阅!