• 单片机中一个程序的运行过程详解

    单片机中一个程序的运行过程分为取指令,分析指令和执行指令几个步骤。 取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。 分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。 下面我们将举个实例来说明指令的执行过程: 开机时,程序计算器PC变为0000H。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。 例如执行指令:MOV A,#0E0H,其机器码为“74H E0H”,该指令的功能是把操作数E0H送入累加器,0000H单元中已存放74H,0001H单元中已存放E0H。当单片机开始运行时,首先是进入取指阶段,其次序是: 1 程序计数器的内容(这时是0000H)送到地址寄存器; 2 程序计数器的内容自动加1(变为0001H); 3 地址寄存器的内容(0000H)通过内部地址总线送到存储器,以存储器中地址译码电跟,使地址为0000H的单元被选中; 4 CPU使读控制线有效; 5 在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。 至此,取指阶段完成,进入译码分析和执行指令阶段。 由于本次进入指令寄存器中的内容是74H(操作码),以译码器译码后单片机就会知道该指令是要将一个数送到A累加器,而该数是在这个代码的下一个存储单元。所以,执行该指令还必须把数据(E0H)从存储器中取出送到CPU,即还要在存储器中取第二个字节。其过程与取指阶段很相似,只是此时PC已为0001H。指令译码器结合时序部件,产生74H操作码的微操作系列,使数字E0H从0001H单元取出。因为指令是要求把取得的数送到A累加器,所以取出的数字经内部数据总线进入A累加器,而不是进入指令寄存器。至此,一条指令的执行完毕。单片机中PC=0002H,PC在CPU每次向存储器取指或取数时自动加1,单片机又进入下一取指阶段。这一过程一直重复下去,直至收到暂停指令或循环等待指令暂停。CPU就是这样一条一条地执行指令,完成所有规定的功能。 ROM是只读存储器,用于存储程序代码;RAM是数据存储器,用于存放单片机运行时的数据,也就是说RAM中的数据掉电(复位)后就会消失,而ROM中的数据不会。 中断最主要的作用是保护现场,计时器用于精确定时和长定时,如果你看不懂,在问我! 中断是通过硬件来改变CPU的运行方向的。计算机在执行程序的过程中,当出现CPU以外的某种情况时,由服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序。这种程序在执行过程中由于外界的原因而被中间打断的情况称为“中断”。 “中断”之后所执行的相应的处理程序通常称之为中断服务程序或中断处理子程序。 原来正常运行的程序称为主程序。 主程序被断开的位置(或地址)称为“断点”。 引起中断的原因,或能发出中断申请的来源,称为“中断源”。 中断源要求服务的请求称为“中断请求”(或中断申请)。 当硬件电路将中断信号送给cpu时,给主程序设置一个断点,然后去响应中断请求,当完成中断的内容后,在返回断点处继续执行主程序。

    时间:2018-06-06 关键词: 单片机 单片机程序

  • 你知道单片机的启动过程吗?看这里

    启动代码通常都烧写在flash中,它是系统一上电就执行的一段程序,它运行在任何用户c代码之前。上电后,arm处理器处于arm态,运行于管理模式,同时系统所有中断被禁止,pc到地址0处取指令执行。一个可执行映像文件必须有个入口点,而能放在rom起始处的映像文件的入口地址也必须设置为0.在汇编语言中,我们已经说过怎样定义一个程序的入口点,当工程中有多个入口点时,需要在连接器中使用-entry指出程序的入口点。如果用户创建的程序中,包含了main函数,则与c库初始化代码对应的也会有个入口点。 总的来说,启动代码主要完成两方面的工作,一是初始化执行环境,例如中断向量表、堆栈、i/o等;二是初始化c库和用户应用程序。在第一阶段,启动代码的人物可以描述为: (1)建立中断向量表; (2)初始化存储器; (3)初始化堆栈寄存器; (4)初始化i/o以及其他必要的设备; (5)根据需要改变处理器的状态。 -->建立中断向量表 初始化代码必须建立好中断向量表,以备应用程序后续使用。如果系统的地址0处是rom,则中断向量表直接是一些跳转指令就可以了,他们转到相应的中断处理函数执行。如果系统的0地址处不是rom,则中断向量表是通过动态的方式创建的,这主要是通过存储器映射的方式来实现:即上电后,rom中的地址被映射到地址0,它首先开始执行以便完成环境的初始化,最重要的它会将中断向量表拷贝到ram中,然后通过地址映射将ram地址映射为0,这样ram中的中断向量就可以使用了。 -->初始化存储系统 对于有mmu的处理器,需要正确初始化mmu,没有的只需正确初始化存储控制器,为每个bank配置正确的参数就可以了。 -->初始化堆栈指针 初始化代码必须初始化处理器各个模式下的堆栈指针,所有系统或用户程序会涉及的处理器模式对应的堆栈指针都应该初始化。通常未定义指令和预取指终止异常对应模式的堆栈指针不需要配置,除非用户需要使用它们作为调试使用。 -->初始化堆栈指针 初始化代码必须初始化处理器各种模式下的堆栈指针,所有系统或用户程序会涉及的处理器模式对应的堆栈指针都应该被初始化。通常未定义指令和预取指终止异常对应模式的堆栈指针不需要配置,除非用户需要使用它们作为调试使用。 -->初始化i/o以及其他必要设备 关键的输入输出模块必须在中断打开之前被配置,例如看门狗,否则它们会在系统启动后产生复位信号。 -->改变处理器状态和模式 启动代码运行时,处理器状态认为管理模式,如果用户程序需要运行在用户模式,可以切换转入用户模式;所有处理器上电后是处于arm状态的,如果需要改变处理器状态,也可以在启动代码里切换到thumb态。 在执行环境建立起来后,接下来就是应用程序的初始化,简单点就是讲用户程序加载到他们相应的运行地址,初始化数据区等,这个阶段完成后,才能进入用户最终的c代码区域。用户应用程序的初始化过程包括:将rw段的数据拷贝到他们的运行地址处,同时在rw段后面初始化相应大小的zi段数据,把他们初始化为0,使用了库函数的程序(工程中有main函数)是在库函数_main中自动完成这些工作的。应该还没玩,但小编找不到下文了sorry...

    时间:2018-06-06 关键词: 单片机 单片机启动

  • 光敏电阻的基础知识介绍

     一、光敏电阻 光敏电阻是用硫化隔或硒化隔等半导体材料制成的特殊电阻器,表面还涂有防潮树脂,具有光电导效应。 二、特性 光敏电阻对光线十分敏感。光照愈强,阻值就愈低。随着光照强度的升高,电阻值迅速降低,可降低至1KΩ以下。 三、工作原理 光敏电阻的工作原理是基于内光电效应,即在半导体光敏材料两端装上电极引线,将其封装在带有透明窗的管壳里就构成光敏电阻。为了增加灵敏度,两电极常做成梳状。 四、光敏模块原理图 五、用途 1. 光敏电阻模块对环境光强最敏感,一般用来检测周围环境的亮度和光强。 2. 模块在无光条件或者光强达不到设定阈值时,DO 口输出高电平,当外界环境 光强超过设定阈值时,模块D0 输出低电平。 3. 小板数字量输出D0 可以与单片机直接相连,通过单片机来检测高低电平,由 此来检测环境的光强改变。 4. 小板模拟量输出AO 可以和AD 模块相连,通过AD 转换,可以获得环境光强更 精准的数值。

    时间:2018-05-28 关键词: 半导体 光敏电阻

  • 本征半导体和PN结概念复习

     半导体 材料取自于元素周期表中金属与非金属的交界处。常温下半导体导电性能介于导体与绝缘体之间。 本征半导体 纯净的具有晶体结构的半导体称为本征半导体。(由于不含杂质且为晶体结构,所以导电性比普通半导体差) 常温下,少数价电子由于热运动获得足够的能量挣脱共价键的束缚成为自由电子。此时,共价键留下一个空位置,即空穴。原子因失去电子而带正电,或者说空穴带正电。在本征半导体外加一个电场,自由电子将定向移动产生电流;同时,价电子会按一定方向去依次填补空穴,相当于空穴也在定向移动,而且是跟电子反向的运动。本征半导体的电流是这两个电流之和。运载电荷的粒子称之为载流子。 当有一个自由电子的产生,必然会有一个空穴产生,所以自由电子与空穴对是同生同灭。当自由电子在运动中填补了一个空穴,此时两者同时消失,这种现象称之为复合。在一定温度下,两种载流子浓度相同,达到一种动态平衡。当温度升高,热运动会加剧,会有更多的电子挣脱束缚,会导致载流子浓度上升,从而打破这个平衡,温度一定后会再次建立平衡。 杂质半导体 通过扩散工艺,在本征半导体掺入某些元素。 一 .N型半导体 在本征半导体加入+5价元素磷,由于加入了最外层为5个电子的元素,在形成共价键后会多出一个电子,这个电子就成了自由电子。因为这个半导体自由电子的个数多于空穴个数,而电子带负电,所以称之为N(negative,负)型半导体。 二 .P型半导体 在本征半导体加入+3价元素硼,由于加入了最外层为3个电子的元素,在形成共价键后会多出一个空位,硅原子的最外层电子会去填补这个空位,从而会多出一个空穴。空穴带正电,所以称之为P(positive,正)型半导体。 在N型半导体中,自由电子为多数载流子,空穴为少数载流子;在P型半导体中,空穴为多数载流子,自由电子为少数载流子。 PN结的形成 采用某种工艺,可以将P型半导体和N型半导体制作在同一块硅片上。 由于浓度差,会产生扩散运动。同时,在P区N区交界处,多数载流子浓度降低,P区出现正离子区,N区出现负离子区,内部会产生一个内电场。该电场会产生一个运动去阻止扩散运动,这个运动称为漂移运动。参与扩散运动和漂移运动的载流子数目相同,达到动态平衡就形成了PN结。 PN结的单向导电性 PN结的电容效应 PN结存在着等效电容(势垒电容和扩散电容,两者之和称为结电容,具体省略),由于容抗跟频率成反比,当加在PN结上的交流电频率较高时,交流电就可以通过PN结的电容形成通路,PN结会失去单向导电的特性。

    时间:2018-05-28 关键词: 半导体 pn结

  • 你应该知道的半导体芯片知识科普

     尺寸缩小有其物理限制 不过,制程并不能无限制的缩小,当我们将晶体管缩小到 20 奈米左右时,就会遇到量子物理中的问题,让晶体管有漏电的现象,抵销缩小 L 时获得的效益。作为改善方式,就是导入 FinFET(Tri-Gate)这个概念,如右上图。在 Intel 以前所做的解释中,可以知道藉由导入这个技术,能减少因物理现象所导致的漏电现象。 更重要的是,藉由这个方法可以增加 Gate 端和下层的接触面积。在传统的做法中(左上图),接触面只有一个平面,但是采用 FinFET(Tri-Gate)这个技术后,接触面将变成立体,可以轻易的增加接触面积,这样就可以在保持一样的接触面积下让 Source-Drain 端变得更小,对缩小尺寸有相当大的帮助。 最后,则是为什么会有人说各大厂进入 10 奈米制程将面临相当严峻的挑战,主因是 1 颗原子的大小大约为 0.1 奈米,在 10 奈米的情况下,一条线只有不到 100 颗原子,在制作上相当困难,而且只要有一个原子的缺陷,像是在制作过程中有原子掉出或是有杂质,就会产生不知名的现象,影响产品的良率。 如果无法想象这个难度,可以做个小实验。在桌上用 100 个小珠子排成一个 10×10 的正方形,并且剪裁一张纸盖在珠子上,接着用小刷子把旁边的的珠子刷掉,最后使他形成一个 10×5 的长方形。这样就可以知道各大厂所面临到的困境,以及达成这个目标究竟是多么艰巨。 随着三星以及台积电在近期将完成 14 奈米、16 奈米 FinFET 的量产,两者都想争夺 Apple 下一代的 iPhone 芯片代工,我们将看到相当精彩的商业竞争,同时也将获得更加省电、轻薄的手机,要感谢摩尔定律所带来的好处呢。 在前面已经介绍过芯片制造的过程就如同用乐高盖房子一样,先有晶圆作为地基,再层层往上迭的芯片制造流程后,就可产出必要的 IC 芯片。然而,没有设计图,拥有再强制造能力都没有用,因此,建筑师的角色相当重要。但是 IC 设计中的建筑师究竟是谁呢?接下来要针对 IC 设计做介绍。 在 IC 生产流程中,IC 多由专业 IC 设计公司进行规划、设计,像是联发科、高通、Intel 等知名大厂,都自行设计各自的 IC 芯片,提供不同规格、效能的芯片给下游厂商选择。因为 IC 是由各厂自行设计,所以 IC 设计十分仰赖工程师的技术,工程师的素质影响着一间企业的价值。然而,工程师们在设计一颗 IC 芯片时,究竟有那些步骤?设计流程可以简单分成如下。 设计第一步,订定目标 在 IC 设计中,最重要的步骤就是规格制定。这个步骤就像是在设计建筑前,先决定要几间房间、浴室,有什么建筑法规需要遵守,在确定好所有的功能之后在进行设计,这样才不用再花额外的时间进行后续修改。IC 设计也需要经过类似的步骤,才能确保设计出来的芯片不会有任何差错。 规格制定的第一步便是确定 IC 的目的、效能为何,对大方向做设定。接着是察看有哪些协议要符合,像无线网卡的芯片就需要符合 IEEE 802.11 等规范,不然,这芯片将无法和市面上的产品兼容,使它无法和其他设备联机。最后则是确立这颗 IC 的实作方法,将不同功能分配成不同的单元,并确立不同单元间链接的方法,如此便完成规格的制定。 设计完规格后,接着就是设计芯片的细节了。这个步骤就像初步记下建筑的规画,将整体轮廓描绘出来,方便后续制图。在 IC 芯片中,便是使用硬件描述语言(HDL)将电路描写出来。常使用的 HDL 有 Verilog、VHDL 等,藉由程序代码便可轻易地将一颗 IC 地菜单达出来。接着就是检查程序功能的正确性并持续修改,直到它满足期望的功能为止。 ▲ 32 bits 加法器的 Verilog 范例。 有了计算机,事情都变得容易 有了完整规画后,接下来便是画出平面的设计蓝图。在 IC 设计中,逻辑合成这个步骤便是将确定无误的 HDL code,放入电子设计自动化工具(EDA tool),让计算机将 HDL code 转换成逻辑电路,产生如下的电路图。之后,反复的确定此逻辑闸设计图是否符合规格并修改,直到功能正确为止。 ▲ 控制单元合成后的结果。 最后,将合成完的程序代码再放入另一套 EDA tool,进行电路布局与绕线(Place And Route)。在经过不断的检测后,便会形成如下的电路图。图中可以看到蓝、红、绿、黄等不同颜色,每种不同的颜色就代表着一张光罩。至于光罩究竟要如何运用呢? ▲ 常用的演算芯片- FFT 芯片,完成电路布局与绕线的结果。 层层光罩,迭起一颗芯片 首先,目前已经知道一颗 IC 会产生多张的光罩,这些光罩有上下层的分别,每层有各自的任务。下图为简单的光罩例子,以集成电路中最基本的组件 CMOS 为范例,CMOS 全名为互补式金属氧化物半导体(Complementary metal–oxide–semiconductor),也就是将 NMOS 和 PMOS 两者做结合,形成 CMOS。至于什么是金属氧化物半导体(MOS)?这种在芯片中广泛使用的组件比较难说明,一般读者也较难弄清,在这里就不多加细究。 下图中,左边就是经过电路布局与绕线后形成的电路图,在前面已经知道每种颜色便代表一张光罩。右边则是将每张光罩摊开的样子。制作是,便由底层开始,依循上一篇 IC 芯片的制造中所提的方法,逐层制作,最后便会产生期望的芯片了。 至此,对于 IC 设计应该有初步的了解,整体看来就很清楚 IC 设计是一门非常复杂的专业,也多亏了计算机辅助软件的成熟,让 IC 设计得以加速。IC 设计厂十分依赖工程师的智能,这里所述的每个步骤都有其专门的知识,皆可独立成多门专业的课程,像是撰写硬件描述语言就不单纯的只需要熟悉程序语言,还需要了解逻辑电路是如何运作、如何将所需的算法转换成程序、合成软件是如何将程序转换成逻辑闸等问题。 然而,使用以上这些封装法,会耗费掉相当大的体积。像现在的行动装置、穿戴装置等,需要相当多种组件,如果各个组件都独立封装,组合起来将耗费非常大的空间,因此目前有两种方法,可满足缩小体积的要求,分别为 SoC(System On Chip)以及 SiP(System In Packet)。 在智能型手机刚兴起时,在各大财经杂志上皆可发现 SoC 这个名词,然而 SoC 究竟是什么东西?简单来说,就是将原本不同功能的 IC,整合在一颗芯片中。藉由这个方法,不单可以缩小体积,还可以缩小不同 IC 间的距离,提升芯片的计算速度。至于制作方法,便是在 IC 设计时间时,将各个不同的 IC 放在一起,再透过先前介绍的设计流程,制作成一张光罩。 然而,SoC 并非只有优点,要设计一颗 SoC 需要相当多的技术配合。IC 芯片各自封装时,各有封装外部保护,且 IC 与 IC 间的距离较远,比较不会发生交互干扰的情形。但是,当将所有 IC 都包装在一起时,就是噩梦的开始。IC 设计厂要从原先的单纯设计 IC,变成了解并整合各个功能的 IC,增加工程师的工作量。此外,也会遇到很多的状况,像是通讯芯片的高频讯号可能会影响其他功能的 IC 等情形。 此外,SoC 还需要获得其他厂商的 IP(intellectual property)授权,才能将别人设计好的组件放到 SoC 中。因为制作 SoC 需要获得整颗 IC 的设计细节,才能做成完整的光罩,这同时也增加了 SoC 的设计成本。或许会有人质疑何不自己设计一颗就好了呢?因为设计各种 IC 需要大量和该 IC 相关的知识,只有像 Apple 这样多金的企业,才有预算能从各知名企业挖角顶尖工程师,以设计一颗全新的 IC,透过合作授权还是比自行研发划算多了。 折衷方案,SiP 现身 作为替代方案,SiP 跃上整合芯片的舞台。和 SoC 不同,它是购买各家的 IC,在最后一次封装这些 IC,如此便少了 IP 授权这一步,大幅减少设计成本。此外,因为它们是各自独立的 IC,彼此的干扰程度大幅下降。 ▲ Apple Watch 采用 SiP 技术将整个计算机架构封装成一颗芯片,不单满足期望的效能还缩小体积,让手表有更多的空间放电池。(Source:Apple 官网) 采用 SiP 技术的产品,最著名的非 Apple Watch 莫属。因为 Watch 的内部空间太小,它无法采用传统的技术,SoC 的设计成本又太高,SiP 成了首要之选。藉由 SiP 技术,不单可缩小体积,还可拉近各个 IC 间的距离,成为可行的折衷方案。下图便是 Apple Watch 芯片的结构图,可以看到相当多的 IC 包含在其中。 ▲ Apple Watch 中采用 SiP 封装的 S1 芯片内部配置图。(Source:chipworks) 完成封装后,便要进入测试的阶段,在这个阶段便要确认封装完的 IC 是否有正常的运作,正确无误之后便可出货给组装厂,做成我们所见的电子产品。至此,半导体产业便完成了整个生产的任务。

    时间:2018-05-28 关键词: 半导体 芯片

  • 低通滤波器、高通滤波器,积分电路、微分电路

     输出信号与输入信号的积分成正比的电路:积分电路 输出信号与输入信号的微分成正比的电路:微分电路 1)一阶RC低通滤波器 RC低通滤波器的电路及其幅频、相频特性如下图所示。 设滤波器的输入电压为ex输出电压为ey,电路的微分方程为: 这是一个典型的一阶系统。令=RC,称为时间常数,对上式取拉氏变换,有: 或 其幅频、相频特性公式为: 分析可知,当f很小时,A(f)=1,信号不受衰减的通过;当f很大时,A(f)=0,信号完全被阻挡,不能通过。 2)一阶RC高通滤波器 RC高通滤波器的电路及其幅频、相频特性如下图所示。 设滤波器的输入电压为ex输出电压为ey,电路的微分方程为: 同理,令=RC,对上式取拉氏变换,有: 或 其幅频、相频特性公式为: 分析可知,当f很小时,A(f)=0,信号完全被阻挡,不能通过;当f很大时,A(f)=1信号不受衰减的通过. 3)RC带通滤波器 带通滤波器可以看作为低通滤波器和高通滤波器的串联,其电路及其幅频、相频特性如下图所示。 其幅频、相频特性公式为: H(s) = H1(s) * H2(s) 式中H1(s)为高通滤波器的传递函数,H2(s)为低通滤波器的传递函数。有: 这时极低和极高的频率成分都完全被阻挡,不能通过;只有位于频率通带内的信号频率成分能通过。 须要注意,当高、低通两级串联时,应消除两级耦合时的相互影响,因为后一级成为前一级的“负载”,而前一级又是后一级的信号源内阻.实际上两级间常用射极输出器或者用运算放大器进行隔离.所以实际的带通滤波器常常是有源的.有源滤波器由RC调谐网络和运算放大器组成.运算放大器既可作为级间隔离作用,又可起信号幅值的放大作用.

    时间:2018-05-28 关键词: 低通滤波器 高通滤波器

  • 浅析DC/DC的工作原理

     根据调整管的工作状态,我们常把稳压电源分成两类:线性稳压电源和开关稳压电源。 线性稳压电源,是指调整管工作在线性状态下的稳压电源。而在开关电源中则不一样,开关管(在开关电源中,我们一般把调整管叫做开关管)是工作在开、关两种状态下的:开——电阻很小;关——电阻很大。 开关电源是一种比较新型的电源。它具有效率高,重量轻,可升、降压,输出功率大等优点。但是由于电路工作在开关状态,所以噪声比较大。 通过下图,我们来简单的说说降压型开关电源的工作原理。如图所示,电路由开关K(实际电路中为三极管或者场效应管),续流二极管D,储能电感L,滤波电容C等构成。当开关闭合时,电源通过开关K、电感L给负载供电,并将部分电能储存在电感L以及电容C中。由于电感L的自感,在开关接通后,电流增大得比较缓慢,即输出不能立刻达到电源电压值。一定时间后,开关断开,由于电感L的自感作用(可以比较形象的认为电感中的电流有惯性作用),将保持电路中的电流不变,即从左往右继续流。这电流流过负载,从地线返回,流到续流二极管D的正极,经过二极管D,返回电感L的左端,从而形成了一个回路。通过控制开关闭合跟断开的时间(即PWM——脉冲宽度调制),就可以控制输出电压。如果通过检测输出电压来控制开、关的时间,以保持输出电压不变,这就实现了稳压的目的。 在开关闭合期间,电感存储能量;在开关断开期间,电感释放能量,所以电感L叫做储能电感。二极管D在开关断开期间,负责给电感L提供电流通路,所以二极管D叫做续流二极管。 在实际的开关电源中,开关K由三极管或场效应管代替。当开关断开时,电流很小;当开关闭合时,电压很小,所以发热功率U×I就会很小。这就是开关电源效率高的原因。

    时间:2018-05-28 关键词: 电源 DC/DC

  • 直流电机并联瓷片电容有什么用?

     直流电机电气噪音的典型频谱是一频带很宽且杂乱的脉冲信号,如未采取必要抑制措施,很多情况其电气干扰电平会超过限值(EMC)。 直流电机的电气噪音是尖峰电压,主要是由马达电刷产生的。是由电刷与换向片触点的断开产生的。 电容的作用是通过向噪声源的公共端提供一条阻抗很低的通路来将电压尖峰旁路掉。 电容可以接在马达的每根引线与地之间,也可以接在两根引线之间。 在电刷与地之间接入电容会有很大效果。 减小噪声的另一个方法是在电刷上直接放置一个电感器件。电感的作用是防止当电刷通过换向片间隙时流进电刷电流的突然变化。电感的电感量大约为10~25μH。串联在电路中的扼流圈可以和到地的旁路电容组合起来构成一个低通滤波器,这可以增强单个电感或电容的滤波效果。 常规的作法是直接在电机制造过程加入环形压敏电阻。

    时间:2018-05-28 关键词: 电容 直流电机

  • RC消火花电路学习笔记

     RC电路一大应用时消火花电路。产生火花电路大都是应用于感性负载,如电机、继电器线圈等 当开关k断开时候,根据楞次定律线圈两端产生感应电动势。他将和Vi叠加,其和加在开关两端,如果开关两端距离及其两端的电压达到一定的值,空气将被击穿放电,同时会伴有火花现象。这个时候,如果在下线圈两端加上rc电路以后,将减小甚至消灭火花现象的出现,也是我们希望得到的结果。原理是感应电动势形成原因是回路电流的突变。

    时间:2018-05-28 关键词: rc消火花电路

  • P型半导体带电吗?

     "P型半导体即空穴浓度远大于自由电子浓度的杂质半导体",空穴不是相当于带正电吗,既然空穴浓度大于自由电子浓度,那么和电子中和以后,剩余的空穴不还是带正电吗? 回答: P型半导体一般由硅元素掺入硼元素形成,而硅原子、硼原子都是中性的(原子核内的质子带的电荷<也称核电荷>与核外电子数是一样的,所以保持中性。)。虽然硼元素的3个核外电子未填满仅填满了本由硅元素占据的晶格周围的4个空穴中的3个,导致多了一个空穴,但是要知道,空穴是不带电的。空穴只是为了解释半导体理论引入的一个物理概念。 不带电,半导体是受一定条件影响才有电流的,其具体原理如下: P型半导体也称为空穴型半导体。P型半导体即空穴浓度远大于自由电子浓度的杂质半导体。 在纯净的硅晶体中掺入三价元素(如硼),使之取代晶格中硅原子的位子,就形成P型半导体。在P型半导体中,空穴为多子,自由电子为少子,主要靠空穴导电。空穴主要由杂质原子提供,自由电子由热激发形成。掺入的杂质越多,多子(空穴)的浓度就越高,导电性能就越强。 本身不带电啦,只不过因为掺杂而导致内部有不同极性的载流子(即空穴或者自由电子,一般指多子),这些空穴或者自由电子电子的电性与受主原子或者施主原子的电性中和,在外部呈现电中性。 但是,如果加入外电场,内部的载流子就会在电场作用下开始移动,而受(施)主原子固定不动,所以可以利用这个特性来制作电子器件的最基础单元----PN结。

    时间:2018-05-28 关键词: 半导体

  • 从能级的角度来看半导体的掺杂

    半导体一般由锗和硅两种材料构成,而由于我们生活的环境的温度不是绝对零度,所有会有本征激发(电子脱离质子的吸引力而转变成为自由电子 如下图),这就是温度可以改变半导体的特性。那么我就要引入能级了。本征激发就是将电子从价带激发到导带去,而禁带就是最外层轨道杂化使得本来处于同一轨道的电子分开成两个轨道,轨道之间就是禁带。而内层轨道形成价带,无能量进入时充满电子,外层轨道形成导带,无能量进入时无电子。我以前不能理解能级,但是现在懂了,希望可以帮到你。 而我要讲的重点来了,就是为什么掺杂可以帮助半导体提高他的导电性。 我先拿N型半导体来举例子。 半导体掺杂了五价的元素,比如磷形成N型半导体,那么便会多出一个电子,多出来的电子就成为了施主能级,他们极易成为自由电子,上面说了自由电子形成导带,所以施主能级中的电子极易转移到导带中。由于导带中自由电子增多,所以导电性增加了。 然后就是P型半导体 半导体掺杂了三价元素,比如硼就会形成P型半导体,那么由于硼的电子只有三个,便会多出一个空位,这些空位(空穴)形成了受主能级,上面由本征激发的电子也就是价带中的电子不会那么容易成为自由电子,而是被这些空位所吸附,也就是价带中的电子转移到了受主能级,电子从受主能级中也能激发到导带,形成自由电子。由于空穴的数量增多导致自由电子的转移变得“通畅”(也可以理解为停车,车位更多的地方,来往的车辆也就越多),这就导致 了掺杂后的半导体导电性增加; 总结: 自由电子形成导带; 未激发或者在电子对中的电子和空穴形成价带; 掺入五价元素而形成的多余但是没有激发的电子形成施主能级; 掺入三价元素而形成的多余的空穴形成受主能级; 好了,这些就是我的学习心得,有什么问题可以在评论区尽情讨论,有什么错误还请指出。

    时间:2018-05-28 关键词: 半导体

  • Nordic蓝牙芯片nrf52832的架构和开发

     相比TI的CC254X、DIALOG的DA1458X,nordic推出的nrf51822和nrf52832在架构和开发商都有自己独特的地方。这几颗产品都是蓝牙低功耗芯片。DA1458X使用OTP硬件架构,功耗低,成本也低,但软件开发难度是个门槛,大团队才能做到量产,当然掌握了也是竞争力(想学习开发就参考博主之前的分享吧)。如果对三种架构都很熟悉,然后从开发的角度做个比较,相信对nrf52832的架构和开发会更新青睐。 1. nrf52832有64K的ram和512K的flash,开发人员应该很喜欢吧。 2. nrf52832是cortex M4,官方SDK使用KEIL 5 on ARM,也很熟悉。当然功耗也低,SDK也有低功耗的软件架构,容易掌握。 3. nordic SDK分成softdevice、bootloader和application三个部分。Softdevice以bin提供,主要是操作系统和BLE协议和RF操作相关的程序,这部分不对外公开,熟悉接口即可。TI的SDK对外公开操作系统OSAL,开发人员更能全局掌控,DA1458X隐藏固化了操作系统和BLE协议,但是却公开了一些RF硬件寄存器的操作细节,而这个寄存器的SPEC都找不到,对于开发人员来说,看到自己搞不透也不需要关心的细节并不好。 不过nordic 的softdevice有几个版本,目前最新3.0,每个版本支持不同的SDK,目前最新13.0。版本多了,然后分别发布会让新手迷惑。 4. 由于memory足够大,所以nordicSDK在DATA RAM和CODE上对softdevice、bootloader和application三者的memory layout安排也很清晰。 5. DFU设备固件升级、OTA固件空中升级是BLE架构必备的模块。TI和DIALOG都是在应用层集成DFU进行固件空中升级,在bootloader负责版本校验和加载,因此应用和bootloader是共同负责DFU,需要协调配合。但nordic只让bootloader负责DFU空中升级,并做好校验和加载,工具链也简单。应用只需要负责一件事,就是接收到DFU命令就reset到bootloader即可,其不需要关心DFU的过程。这也是本人喜欢nordic架构的原因,当然,这是要损失一部分代码空间的,从成本角度不划算,但是nordic提供的flash也足够大了。 6. 增加一个应用和profile的架构比较简单,跟ti CC254X差不多,dialog要难一些。 7. 友好支持集成模块,如GPIO、I2C,uart,flash等,接口容易掌握,但是实现细节要弄懂也没那么容易,哈哈。 8. SDK的应用分层做得比较好,硬件模块有对应的硬件驱动driver,SDK还会进行在驱动基础上进行再次封装,以库library的形式供应用使用,降低开发难度。如nrf_drv_gpiote是驱动,上层还会分别封装提供app_button按键接口、电平中断接口app_gpiote等。 9. SDK提供的GPIOTE模块是一个按键消息接口,比较有特色。其利用button集成消息模块,支持将消息安装到对应的某个按键上,也就是在广播状态时按这个键发出的消息和连接时发出的消息是不一样的,这样易于应用处理,架构也比较清晰。但是要花时间才能理解这个模块。 10. SDK的例程非常丰富。 11.SDK的开发文档支持也非常详尽,入门到深入都相对容易。http://infocenter.nordicsemi.com/。入门可以去看中文开发文档,深入就要多看看英文说明。

    时间:2018-05-21 关键词: 蓝牙芯片 nordic

  • 什么是JTAG及其使用方法?

     JTAG不仅仅用于调试和下载程序 你可能熟悉JTAG是因为你使用过带有JTAG接口的工具。 处理器经常使用JTAG来实现调试/仿真功能,而且所有的FPGA和CPLD都利用JTAG来实现下载程序功能。 JTAG不仅仅是一种用于处理器调试/仿真的技术 JTAG不仅仅是一种为FPGA/CPLD下载程序的技术 通常与JTAG有关的调试和编程工具仅仅利用了潜在技术的一个方面即四线JTAG通讯协议。这四种信号,作为测试访问端口(TAP)而广为人知。它是IEEE 1149.1. 标准的一部分。开发该标准的目的在于提供一种印刷电路板组件(PCBA)测试的技术。这种技术不需要针床测试的物理访问,也不像功能测试那样需要定制开发量。设计TAP来与新的寄存器进行交互,这些新的寄存器被添加到器件中,以便实现这种测试方法。但是很快半导体制造商就意识到了使用TAP来访问寄存器,可以提供其它功能如调试和编程。专门用于JTAG测试而加入到器件中的寄存器主要是边界扫描寄存器(BSR)。正如它的名字所示,这个寄存器的单独的位或单元位于器件的边界,处于功能核心与引脚或焊球之间,通过引脚连接到板上——JTAG测试经常被称作边界扫描。 JTAG / 边界扫描是如何用于测试一个板的 边界扫描单元 (如上所示)可以运行在两种模式下。在功能模式下它们对器件的运行没有影响,进行测试时板子可以正常运行。在测试模式下,它们将器件的功能核心与引脚断开。通过把边界扫描单元加入到测试模式中,就可以控制从一个使能器件传入到网络的值,同时也可以监视网络的值。将使能器件的功能与引脚控制断开,使得边界扫描测试开发比传统功能测试更加容易,因为使用引脚时不需要器件配置或者引导。通过四引脚TAP,可以提供一种机制来控制和监视器件中的所有使能信号,JTAG可以显著减少测试电路板需要的物理访问。我们主要以两种方式来使用边界扫描功能测试电路板。第一种方式是连接测试(如下所述) 。它提供了很好的测试覆盖范围, 特别是对于短路故障。连接测试完全基于电路板上的JTAG器件能力,连接,网络,以及(在XJTAG情况下)电路板上的逻辑功能。第二种方式扩展了使用范围,因为它可以令电路板上的JTAG使能器件与非JTAG外设如DDR RAM 和 flash进行通讯。 什么是JTAG连接测试? 正如设计中所描述的那样,JTAG连接测试会检查电路板上JTAG使能器件周围的连通性。连接到测试中的两个JTAG使能引脚所在区域将会确保一个引脚可以被另一个控制。如果使能引脚没有被连接,则可以通过驱动一个引脚并检查到那些值不能被其它引脚读取,从而测出短路故障。缺少拉电阻以及固定型故障也可以通过连接测试来发现,而前提是 故障涉及到的逻辑器件的行为可以用真值表来描述。XJTAG会根据电路板上网表以及使能器件的JTAG信息自动生成向量,这些向量可以运行一次连接测试。 没有JTAG使能的器件该怎么办? 虽然主要的器件如处理器,FPGA通常具有JTAG能力,但是在每一个设计中仍有许多器件没有JTAG能力。 DDR, SDRAM, SRAM, flash, MDIO 控制以太网物理层, SPI 和 I2C 温度传感器, 实时RTC, ADC和 DAC就是这些器件中的一些例子。连接测试可以很好地对非JTAG器件与JTAG使能器件的网络连接进行短路故障检测,但是他不能检查JTAG器件或者非JTAG器件的开路故障。为了添加开路故障检测的功能,在使能器件上,边界扫描必须要能够与外设进行通讯。如果通讯能被证实,就不会出现开路故障。这种类型的测试是非常简单的,例如点亮一个LED并请求一个操作符来确认它被激活,或者更复杂一点如写数据到RAM存储器阵列并读取回来。 创建一个JTAG测试系统需要耗费很多工作吗? 使用XJTAG公司提供的标准非JTAG器件库,你可以进行一系列的测试,不需要开发代码来运行你的电路板。库文件包含所有类型的非JTAG器件模型,从简单的电阻和缓冲器到复杂的存储器如DDR3。因为边界扫描断开了JTAG器件上的引脚控制与功能,所以可以使用相同的模型来控制一个外设而不用考虑JTAG器件。大多数板子都包含了JTAG接口来用于编程或调试,所以不需要额外设计。 从哪里可以得到我的器件的JTAG信息? 为了运行任何基于测试的边界扫描,必须要了解一些关于电路板上使能器件的JTAG应用信息。这些信息来自于那些器件的BSDL(边界扫描描述语言)文件。为了与IEEE1149.1标准兼容,半导体厂商必须为其器件提供BADL文件。 JTAG测试仅仅用于产品吗? 完全不是。边界扫描测试的一个重要优点是只需要一个JTAG控制器。其它的产品测试技术如飞针测试,自动光学/ X射线检查或者针床测试都需要专业的测试设备,这些设备在工程师的工作台上无法获得。在电路板开发中使用边界扫描可以去除不确定性–硬件工程师可以在系统测试前甚至在固件完成之前就可以测试样机板的制作缺陷。在产品生命周期的早期阶段开发的测试系统很容易重复使用,也可以延伸到产品中。 为什么我应该使用JTAG/边界扫描来测试我的电路板? 3个简单的字母–BGA 越来越多的器件以BGA(球栅阵列)封装的形式供应。电路板上的每一个BGA器件在测试上都有严格的限制,我们可以使用传统的针床或飞针机来完成。 JTAG/边界扫描使用了简单的四引脚接口,允许使能器件上的信号被控制和监视而不需要任何直接的物理访问 另外3个字母–NRE 制作测试装置的一次性工程费用(NRE)可能会非常高。在许多情况下使用JTAG/边界扫描后就不会再需要这种装置。在其它情况下,这种装置可以被极大地简化,从而显著减少费用。 更短的测试时间 对于小批量生产的电路板,很难评估测试装置开发的费用是否合适。在这种情况下,可以选择飞针测试。但是这种技术的测试周期比较长,而JTAG/边界扫描测试的测试时间很短,并且不需要测试装置。 更低的测试开发费用 因为不同的处理器/FPGA与外设的交互方式不同,传统的功能测试需要为每一个电路板定制开发。JTAG/边界扫描可以显著减少这种开发费用,因为它提供了一个简化的接口来控制这些与外设进行交互的IO引脚。这种标准接口在所有JTAG使能器件中都是相同的。这也意味着当构建测试系统时,可以使用及重复使用一系列通用的模型。 测试和编程仅需一个工具 在产品生产研发中我们经常使用JTAG来进行下载程序这一步骤。同时我们也可以使用JTAG来进行边界扫描测试,它可以减少生产过程中的步骤和操作数量。 在工程师的工作台上为原型机提供产品级测试 传统的测试技术需要体积大且价格昂贵的设备。JTAG/边界扫描测试只需要一个JTAG控制器,例如XJTAG公司的XJLink2控制器,其大小与电脑鼠标相似。 卓越的故障诊断 JTAG/边界扫描与功能测试不同,它可以提供高精度的故障信息以帮助工程师进行快速修复。XJTAG不仅可以观测到电路板布局上的实际物理方位上的故障,也可以观测到电路区域的逻辑设计错误,这种错误存在于原理图中。 功能测试不起作用时能使‘死’板重获新生 JTAG/边界扫描测试可以运行在任何带有JTAG接口的电路板上。如果电路板不引导的话,传统的功能测试就不能正常运行。重要的外设如RAM或者时钟上的简单故障可以使用JTAG发现,但是功能测试却不能提供任何诊断信息。 关于XJTAG XJTAG公司是一个全球领先的IEEE 1149.x 标准兼容的边界扫描软件和硬件系统供应商。XJTAG致力于创新产品的开发与高质量的技术支持。公司总部位于英国剑桥,在全球与超过50家专业供应商及技术伙伴合作紧密。XJTAG为客户提供多种多样的边界扫描测试解决方案。方案覆盖多种产业,包括航空航天,汽车业,安防,医疗,制造业,网络通讯等。

    时间:2018-05-21 关键词: jtag

  • JTAG的作用和原理

     JTAG是最基本的通讯协议之一,大家可以理解为与RX TX或者USB的道理是一样的,只是一种通讯手段,但与RX TX以及USB有很重大的不同,那就是这个JTAG协议是最底层的,说的通俗一点,一般来说,手机里边,CPU是老大,对吧?但在JTAG面前,他就不是老大了,JTAG协议就是用来控制CPU的,在JTAG面前CPU变成喽啰了。一般的协议是求着CPU读写字库的程序,但JTAG可以读写CPU的程序,命令让CPU啥活都干,擒贼先擒王,JTAG就是屠龙刀。 所有的手机CPU都支持JTAG协议,也必须支持JTAG协议,因为CPU里边的数据只有通过JTAG功能才能写入,在内部数据错乱的时候或者其他部分重要数据错乱的时候,CPU可能就不理会RX TX或者USB了,在这个时候,用JTAG协议功能,强制手机的CPU乖乖的干活。因此,所有的手机,所说的变成砖头了,真实的技术原因是,让手机响应RX TX或者USB进行操作,所必须需要的基础数据丢失了,手机CPU就不搭理RX TX或者USB了,因为这时候CPU是老大,他说不干一般人就没办法了;唯一的解决之道,就是用JTAG功能,让CPU变成马仔,强制他把这些基础数据恢复,砖头就又变成手机了。 JTAG信号,最基本的要有5条线,TCK TMS,TDI,TDO,复位信号。 复位信号,有的一条,有的多条,他的作用是镇压CPU,让他停下所有工作,等着JTAG信号对它进行控制,或者让其某部分工作某部分暂停工作。 TCK信号,上位机的时钟信号,上升沿送入给手机CPU的数据,下降沿手机CPU回来数据。 TDI信号,上位机的数据信号。 TMS信号,上位机的另外一个数据信号,实际是命令指示以及区分的信号。 TDO信号,手机CPU回来给上位机的数据信号,让上位机知道手机CPU现在的状态是很乖还是不乖,进而根据CPU的状态进行控制。 说的更简单一点,让大家理解,就是在CPU由于软件原因不联机的时候,JTAG是唯一能够恢复这部分软件的工具。JTAG能够指挥CPU干任何事,在JTAG面前CPU只是一个马仔。

    时间:2018-05-21 关键词: jtag

  • ARM处理器工作模式及寄存器结构

     一、ARM的指令结构 1、ARM汇编程序组成: 汇编指令+伪操作+宏指令(instruction directive pseudo-instruction); 伪操作:定义符号、数据等使用 宏指令:使用宏定义指令方式 2、汇编指令的组成: 操作码、操作条件(根据CPSR中的N、Z、C、V等标志)、操作数(源、目的/地址或寄存器)、条件、地址变化等等; 3、ARM指令和简化的Thumb指令可以相互跳转 B、BL、BLX、BX带L表示考虑LR寄存器,而X实现不同指令模式的切换; 4、批量操作地址的方式分类 IA、IB、DA、DB A:after B:before I:increment D:decrement 亦即:事后递增 事先递增 事后递减 事先递减 四种方式; 5、栈类型及寻址 FD ED FA EA F:full E:empty D:descending A:Ascending FULL/EMPTY栈:区别在于指向栈定的指针是否指向有效数据,是则为FULL栈,否则为EMPTY栈; DESCENDING/ASCENDING: 数据栈按内存地址减小方式增长为DESCENDING栈,相反为ASCENDING栈; 二、ARM的存储系统及MMU和MPU的差别与联系 1、ARM的存储系统 CASHE及WRITE BUFFER技术用于缩小内存和处理器之间差距; 存储类型:ROM(FLASH/ROM)+RAM(SRAM、DRAM、SDRAM[ sychronization DRAM]) ARM采用协处理器CP15来进行存储器的管理; 2、存储器管理单元MMU MMU可以实现对内存的精细控制:16域\段:1M\大页 64KB\小页 4KB\小页1KB MMU主要实现的功能: 1、物理地址和虚拟地址的映射; 2、memory读写权限AP的设置; 3、B、C(buffer-ability 和 cachability)是否可以使用cache和写缓冲; 是否使用MMU功能:可以通过CP15的寄存器进行使能设置; 对于MMU实现需要引入页表(translate table)机制,页表存储在内存,系统通常提供一个寄存器来存储页表的基地址,为了解决内存访问速度问题,采用类似cache方式,引入快表TLB(translation lookaside buffer)机制,小的快速的存储期间来存储当前需要访问的地址变换页表。(相应块表可以存在无效、锁定等操作。) 页表中存储着虚拟地址对应的物理地址、访问权限、缓冲特性等。 页表根据设置空间使用情况分为:分为一、二级页表;粗粒度二级表和细粒度二级表;一级页表包含以段为单位的地址变换条目以及指向二级页表的指针。二级页表包含以大小页为单位的地址变换条目。 关于访问控制权限:需要C1寄存器的R、S控制位和页表中AP来共同控制; 关于域:最多支持16个域,设置每个域的访问控制特性,可以控制是否从页表得到访问权限... 3、MPU与MMU差别 MPU只是简单支持MMU一小部分功能:不支持虚拟地址和实地址的映射;不支持页表;(MMU需要更多硬件来支持相应的功能); MPU最多可以分为8个域,对相应的域进行B、C、AP的设置; 同样CP15可以控制MPU的功能开关,对于域的设置可以存在地址的重叠,一般如果地址重叠,后面的域设置具有更高的优先级; 4、CACHE及WRITE BUFFER技术 cache和写缓冲用来解决CPU速度大于内存的问题,而cache得成本比内存高; cache高速缓冲存储器,可以数据指令分开,也可以使用同一cache; cache有写回法和写通法:写回法指CPU写数据写入cache,而写通法是指数据修改cache的同时,也写入内存。 cache内容和内存地址的映射:有全相联映射方式、直接映像方式、组组相联映像方式。 cache的存储空间小于内存,所以存在cache内容的替换问题,ARM中cache的替换算法:随机替换和轮转法 5、快速进程上下文切换(fast context switch extension,FCSE) 主要解决多个进程映射虚拟地址映射重叠问题,简单理解增加了进程ID PID来区分,解决这个引起的开销问题。 小贴士: 1、关于ASR LSR ROR RRX的差别: --ASR 算数右移; --LSR 逻辑右移 和ASR差别在符号位; --ROR 循环右移; --RRX 带扩展的循环右移 主要是用CPSR中的C填充移入,并且移出的位改写C(carry out)位; 2、使用cache应注意的问题 写入数据只写入cache的情况下,如果硬件如DMA资源直接从物理地址取数据,需要注意同步问题。可以在触发硬件资源之前操作cache内容同步到内存中。 3、子程序参数的传递规则 可变参数:R0~R3,多与4个参数,则用栈来进行传送;返回一个32整数用R0,64位R0-R1,浮点通过f0、D0、s0传送? 4、MMU和MPU差别参考: ARM Architecture Reference Manual

    时间:2018-05-21 关键词: 寄存器 arm处理器

发布文章