嵌入式分享合集38

今天又发现wasm不错 不过还是rust支持的好 我们公司是用来做播放器 web的 还不错 

一、零欧姆电阻

 零欧姆电阻又称为跨接电阻器,是一种特殊用途的电阻,0欧姆电阻的并非真正的阻值为零,欧姆电阻实际是电阻值很小的电阻。

    电路板设计中两点不能用印刷电路连接,常在正面用跨线连接,这在普通板中经常看到,为了让自动贴片机和自动插件机正常工作,用零电阻代替跨线。

    上图是用在单面PCB板上做跨线的0欧姆电阻。

    零欧姆电阻的作用总结可以包括以下作用:

  • 在电路中没有任何功能,只是在PCB上为了调试方便或兼容设计等原因。

  • 可作跳线使用,避免用跳针造成的高频干扰(成为天线)

  • 在匹配电路参数不确定的时候,以0欧姆代替,实际调试的时候,确定参数,再以具体数值的元件代替。

  • 0欧姆电阻实际是电阻值很小的电阻,想测某部分电路的耗电流的时候,接0欧姆电阻,接上电流表,这样方便测耗电流,可用于测量大电流。

    上图是用在单面PCB板上做跨线的0欧姆电阻。

  • 在布线时,如果实在布不过去了,也可以加一个0欧的电阻。

  • 在高频信号下,充当电感或电容。(与外部电路特性有关)电感用,主要是解决EMC问题。如地与地,电源和IC Pin间。

  • 单点接地(指保护接地、工作接地、直流接地在设备上相互分开,各自成为独立系统。)

    做电路保护,充当低成本熔丝(圈圈USB电路中以0欧0603电阻充当USB过流保护)由于PCB上走线的熔断电流较大,如果发生短路过流等故障时,很难熔断,可能会带来更大的事故。由于0欧电阻电流承受能力比较弱(其实0欧电阻也是有一定的电阻的,只是很小而已),过流时就先将0欧电阻熔断了,从而将电路断开,防止了更大事故的发生。有时也会用一些阻值为零点几或者几欧的小电阻来做保险丝。不过不太推荐这样来用,但有些厂商为了节约成本,就用此将就了。

    在数字和模拟等混合电路中,往往要求两个地分开,并且单点连接,我们可以用一个0欧的电阻来连接这两个地,而不是直接连在一起。这样做的好处就是,地线被分成了两个网络,在大面积铺铜等处理时,就会方便得多。附带提示一下,这样的场合,有时也会用电感或者磁珠等来连接。

    配置电路,一般产品上不要出现跳线和拨码开关。有时用户会乱动设置,易引起误会,为了减少维护费用,应用0欧电阻代替跳线等焊在板子上。

    零欧姆电阻可以承受多少电流?

    设计电路经常要用零欧姆电容,一般根据线路电流来选择电阻额定功率,那0欧姆一般选多少合适?

    一般的0欧姆电阻的实际阻值在50毫欧左右+-5%的偏差。所以根据额定功率,你就可以计算出来,它的额定电流了。

  • 0402 1/16W:1/16=I*I*0.05 即I=1.118A;

  • 0603 1/8W:1/8=I*I*0.05 即I=1.58A;

  • 0805 1/4W:1/4=I*I*0.05 即I=2.236A;

    对于每种封装的O欧姆电阻具体可以通过多大的电流,还需要根据电阻在PCB板上的散热情况来决定。

    下面分别测试了0603, 0805, 1206三种封装下,通过的电流和电阻两端之间的电压的关系。可以看到三种封装的电阻都在电流实际超过6A之后,电压开始快速上升。

    上图是在测试0欧姆电阻最大流经电流。

    这说明电阻的温度也急剧增加,导致功耗也大幅度增加。0603电阻在电流增加到11.5A时烧毁,0805电阻在电流增加到12A时烧断,1206的电阻在12A时没有烧毁。

    上图是0603封装0欧姆电阻电流与电压之间的曲线。

    上图是0805封装0欧姆电阻电流与电压之间的曲线。

    上图是1206封装0姆电阻电流与电压之间的曲线。  whaosoft aiot http://143ai.com

二、MOS管和IGBT管有什么区别

 在电路设计中,MOS管和IGBT管会经常出现,它们都可以作为开关元件来使用,MOS管和IGBT管在外形及特性参数也比较相似,那为什么有些电路用MOS管?而有些电路用IGBT管?

    下面我们就来了解一下,MOS管和IGBT管到底有什么区别吧!

 什么是MOS管?

    场效应管主要有两种类型,分别是结型场效应管(JFET)和绝缘栅场效应管(MOS管)。

    MOS管即MOSFET,中文全称是金属-氧化物半导体场效应晶体管,由于这种场效应管的栅极被绝缘层隔离,所以又叫绝缘栅场效应管。

    MOSFET又可分为N沟耗尽型和增强型;P沟耗尽型和增强型四大类。

    如上图,MOSFET种类与电路符号。

    有的MOSFET内部会有个二极管,这是体二极管,或者叫寄生二极管、续流二极管。

    关于寄生二极管的作用,有两种解释:

  • MOSFET的寄生二极管,作用是防止VDD过压的情况下,烧坏MOS管,因为在过压对MOS管造成破坏之前,二极管先反向击穿,将大电流直接到地,从而避免MOS管被烧坏。

  • 防止MOS管的源极和漏极反接时烧坏MOS管,也可以在电路有反向感生电压时,为反向感生电压提供通路,避免反向感生电压击穿MOS管。

    MOSFET具有输入阻抗高、开关速度快、热稳定性好、电压控制电流等特性,在电路中,可以用作放大器、电子开关等用途。

什么是IGBT?

    IGBT (Insulated Gate Bipolar Transistor),绝缘栅双极型晶体管,是由晶体三极管和MOS管组成的复合型半导体器件。

    IGBT作为新型电子半导体器件,具有输入阻抗高,电压控制功耗低,控制电路简单,耐高压,承受电流大等特性,在各种电子电路中获得极广泛的应用。

    IGBT的电路符号至今并未统一,画原理图时一般是借用三极管、MOS管的符号,这时可以从原理图上标注的型号来判断是IGBT还是MOS管。

    同时还要注意IGBT有没有体二极管,图上没有标出并不表示一定没有,除非官方资料有特别说明,否则这个二极管都是存在的。

    IGBT内部的体二极管并非寄生的,而是为了保护IGBT脆弱的反向耐压而特别设置的,又称为FWD(续流二极管)。

    判断IGBT内部是否有体二极管也并不困难,可以用万用表测量IGBT的C极和E极,如果IGBT是好的,C、E两极测得电阻值无穷大,则说明IGBT没有体二极管。

    IGBT非常适合应用于如交流电机、变频器、开关电源、照明电路、牵引传动等领域。

MOS管和IGBT的结构特点

    MOS管和IGBT管的内部结构如下图所示。

    IGBT是通过在MOSFET的漏极上追加层而构成的。

    IGBT的理想等效电路如下图所示,IGBT实际就是MOSFET和晶体管三极管的组合,MOSFET存在导通电阻高的缺点,但IGBT克服了这一缺点,在高压时IGBT仍具有较低的导通电阻。

    另外,相似功率容量的IGBT和MOSFET,IGBT的速度可能会慢于MOSFET,因为IGBT存在关断拖尾时间,由于IGBT关断拖尾时间长,死区时间也要加长,从而会影响开关频率。

选择MOS管还是IGBT?

    在电路中,选用MOS管作为功率开关管还是选择IGBT管,这是工程师常遇到的问题,如果从系统的电压、电流、切换功率等因素作为考虑,可以总结出以下几点:

    也可从下图看出两者使用的条件,阴影部分区域表示MOSFET和IGBT都可以选用,“?”表示当前工艺还无法达到的水平。

    总的来说,MOSFET优点是高频特性好,可以工作频率可以达到几百kHz、上MHz,缺点是导通电阻大在高压大电流场合功耗较大;而IGBT在低频及较大功率场合下表现卓越,其导通电阻小,耐压高。

    MOSFET应用于开关电源、镇流器、高频感应加热、高频逆变焊机、通信电源等等高频电源领域;IGBT集中应用于焊机、逆变器、变频器、电镀电解电源、超音频感应加热等领域。

参考资料:

https://wenku.baidu.com/view/56c5322e0722192e4536f6d9.html?sxts=1583479105292 http://www.elecfans.com/d/988051.html https://wenku.baidu.com/view/572f952158fafab069dc0285.html?sxts=1583479109065

三、在SMT32的HEX文件里加入固件版本信息

使用MDK编译器,让STM32程序HEX文件中加入固件版本信息。

代码

    代码如下:

//------------------------------------------------------------------------------#include <absacc.h>
//------------------------------------------------------------------------------#define VERINFO_ADDR_BASE   (0x8009F00) // 版本信息在FLASH中的存放地址const char Hardware_Ver[] __attribute__((at(VERINFO_ADDR_BASE + 0x00)))  = "Hardware: 1.0.0";const char Firmware_Ver[] __attribute__((at(VERINFO_ADDR_BASE + 0x20)))  = "Firmware: 1.0.0";const char Compiler_Date[] __attribute__((at(VERINFO_ADDR_BASE + 0x40))) = "Date: "__DATE__;const char Compiler_Time[] __attribute__((at(VERINFO_ADDR_BASE + 0x60))) = "Time: "__TIME__;
//------------------------------------------------------------------------------

    写入到程序中:

    选项配置中:Flash地址与大小不用做任何修改!

    HEX文件:

    串口打印输出:

上述方法的缺点

    上述操作可行, 但是有一个缺点:就是生成的bin文件都是满Flash大小的, 造成每次烧录都是整个Flash读写。

    其实这个可以把存放地址放到前面,比如偏移1K的地方,都不用改指定地址。

    按照上述操作,程序末尾到VERINFO_ADDR_BASE地址这一段会被填充成0x00。根据需要可以修改VERINFO_ADDR_BASE减小地址,或者说不强制指定地址,由编译器自动分配,但这样就要去找相应的版本标识字符串了。

优化方法

    不想前面这一段被大量填充0x00,让HEX文件体积小一点的话, 可以把选项配置中Flash的Size改小一点,把VERINFO_ADDR_BASE设置成从FlashSize后面的空间开始,这样生成的HEX文件就小了,且未用空间就不会被大量填充0x00了。

    方法如下:

猜你喜欢

转载自blog.csdn.net/qq_29788741/article/details/126394162