引子

“老王,有个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,控制信号,工作原理,重要寄存器,时序,电气特性。

好了,这次对话应该能为以后软件和硬件的合作打下良好的基础。希望以后软件不用再为硬件擦屁股了。硬件也不用给软件量信号,协助分析软件问题了,伤不起啊。

码农大讲堂这节课就到这吧,下课。老王要补觉去了,哇咔咔。

迎关注老王微信公众号:“嵌入式职场加油站” 查看更多精彩文章。希望能够在一些技术点上为大家抛砖引玉,答疑解惑。你们的关注将是激励我坚持创作和分享更多干货技能的源动力。更多技术干货经验技巧会第一时间发布在公众号上,欢迎查阅!

狗蛋(驱动小白)和老王(硬件老司机)关于硬件那点事儿的一次密谈相关推荐

  1. 《老王,老刘和老张》《小红和小芳》

    老王,老张和老刘都是美国中西部一个州立大学的博后, 之所以叫做老王,老张,老刘,并不是因为昵称或者爱称, 而是因为他们的确都很老.30多岁还在学校里晃悠,既不是学生,也不是老师, 而且看起来很像老师, ...

  2. python将姓王的都改成老王_老王Python基础+进阶+项目篇(高清无密)

    老王Python教程 基础篇 基础篇1-福利课python先入为主上 基础篇2-福利课-python先入为主下篇 基础篇3-虚拟机安装xubuntu开发环境 基础篇4-linux基本命令以及开发环境 ...

  3. python将姓王的都改成老王_Python老王视频习题答案

    基础篇2: 一切变量都是数据对象的引用 sys.getrefcount('test') 查看引用计数 变量命名不能以数字开头 编码:ascii.unicode.utf-8 1.阅读str对象的help ...

  4. 老王带你理解算法复杂度O(1),O(N),O(N^2)

    上图对应的是算法复杂度的图片,X轴对应的是n(问题规模),Y轴对应的是执行的运行时间. 我们先从简单的复杂度解读O(1) 从上面的图片我们可以看到O(1)的复杂度是恒定的,一点波澜都没有,什么是O(1 ...

  5. 老王讲设计模式(一)——策略模式

    策略模式属于对象的行为模式.其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换.策略模式使得算法可以在不影响到客户端的情况下发生变化. 老王最近接到一个工作,上 ...

  6. C++中的友元——编程界的老王

    c++中友元类可以访问类的所有域,简直是编程世界的老王. 老王可以得知邻居李的名字,户籍,甚至是 *wife**. 但是老王却不一定知道邻居李的儿子的亲生父亲. 老王的儿子,可以通过老王得知邻居李叔的 ...

  7. 马上2021年了线性表你还不知道原理?给老王整的明明白白

    文章目录 一.线性表必知必懂的原理 (一)线性表通俗易懂原理 二.线性表对数据的操作 (一)增加操作(老王插队神操作) (二)删除操作(小明取完票让位给老王) (三)查找操作 三.单链表案例 (一)案 ...

  8. java 的23种设计模式 之单身狗和隔壁老王的故事

    2019独角兽企业重金招聘Python工程师标准>>> 觉得代码写的别扭了,回头翻翻java 的23种设计模式. today,额,这么晚了,困了.就弄个最简单的单例模式吧. 单例模式 ...

  9. java 从入门到单身狗_java 的23种设计模式 之单身狗和隔壁老王的故事

    觉得代码写的别扭了,回头翻翻java 的23种设计模式. today,额,这么晚了,困了.就弄个最简单的单例模式吧. 单例模式:俗称单身狗 package singleton; public clas ...

最新文章

  1. 基于英飞凌AURIX的平衡单车组逐飞BLDC项目开源
  2. 网摘精灵教程:网摘自动提交工具。
  3. c#/.net 循序渐进理解-委托
  4. iOS系统 越狱系统还原(平刷)
  5. [Leedcode][JAVA][第820题][字典树][Set]
  6. 『飞秋』测试驱动开发TDD系列(二)
  7. Java入门学习思维导图
  8. 03-搭建Eureka注册中心和服务端
  9. 4 谐波_谐波的基础知识
  10. Python 文件操作三
  11. Soul 网关源码阅读(四)Dubbo请求概览
  12. 专科学院计算机专业全国排名,2019年专科专业排行_2019世界大学排名 计算机专业...
  13. 零基础学python好学吗-Python0基础好学吗?
  14. 《Oracle SQL疑难解析》——1.10 删除表中的所有行
  15. 分类网络 resnet
  16. 贴片元器件与插件元器件的区别在哪?
  17. Kick Start Round A 2022
  18. PHP在UTF8下生成的.csv在excel中乱码问题解决
  19. 敏感词过滤优化的解决方案
  20. Python(x,y)安装

热门文章

  1. Asp默认的上传文件大小限制是200K
  2. JSON.stringify() 格式化 输出log
  3. ActiveMQ学习笔记(21)----ActiveMQ集成Tomcat
  4. navicat中文版安装
  5. 相比传统游戏,区块链游戏的价值在哪里?
  6. 做一个有梦想的咸鱼!
  7. Javascript中 toFixed 规则介绍及其改进方法
  8. MySQL之最基本命令
  9. java标识符遵循规范
  10. 使用css3实现瀑布流布局效果