Coder的孤岛

islet of the coder

0%

在产品设计时,倘若没有考虑应用环境对电源隔离的要求,产品到了应用时就会出现因设计方案的不当导致的系统不稳定,甚至出现高压损坏后级负载的情况,以及出现危害人身财产安全的情况。因此产品设计是否需要隔离至关重要。

定义

隔离电源:电源的输入回路和输出回路之间没有直接的电气连接,输入和输出之间是绝缘的高阻态,没有电流回路。

img
图1 采用变压器的隔离电源

非隔离电源:输入和输出之间有直接的电流回路,例如,输入和输出之间是共地的。以隔离的反激电路和非隔离的BUCK电路为例。

img
图2 非隔离电源
img

优缺点对比

由上述概念可知,对于常用的电源拓扑而言,非隔离电源主要有:BuckBoostBuck-Boost等。而隔离电源主要有各种带隔离变压器的 反激正激半桥LLC 等拓扑。

结合常用的隔离与非隔离电源,我们从直观上就可得出它们的一些优缺点,两者的优缺点几乎是相反的。使用隔离或非隔离的电源,需了解实际项目对电源的需求是怎样的。

隔离和非隔离电源的主要差别在于 隔离模块的可靠性高,但成本高,效率差点。非隔离模块的结构很简单,成本低,效率高,安全性能差。因此,在如下几个场合,建议用隔离电源:

总结的表如表1所示,两者的优缺点几乎是相反的。

表1 隔离电源和非隔离电源的优缺点
img

适用场景

一般场合使用对模块电源隔离电压要求不是很高,但是 更高的隔离电压可以保证模块电源具有更小的漏电流,更高的安全性和可靠性,并且 EMC特性 也更好一些,因此目前业界普遍的隔离电压水平为1500VDC以上。

了解了隔离与非隔离电源的优缺点,对于一些常用的嵌入式供电,其对应的场景及推荐隔离方案如下:

  1. 系统前级的电源,为提高抗干扰性能,保证可靠性,一般用隔离电源。
  2. 对安全有要求的场合,如需接市电的AC-DC,或医疗用的电源和白色家电,为保证人身的安全,必须用隔离电源,有些场合还必须用加强隔离的电源。
  3. 对于远程工业通信的供电,为有效降低地电势差和导线耦合干扰的影响,为每个通信节点单独供电一般都用隔离电源。
  4. 内部IC或部分电路供电,从性价比和体积出发,优先选用非隔离电源。
  5. 对于采用电池供电,对续航力要求严苛的场合,采用非隔离供电

隔离电源

  1. 涉及可能触电的场合,如从电网取电,转成低压直流的场合,需用隔离的AC-DC电源;

  2. 串行通信总线通过RS-232、RS-485和控制器局域网(CAN)等物理网络传送数据,这些相互连接的系统每个都配备有自己的电源,而且各系统之间往往间隔较远,因此,我们通常需要隔离电源进行电气隔离来确保系统的物理安全,且通过隔离 切断接地回路,来保护系统免受瞬态高电压冲击,同时减少信号失真;

  3. 对外的I/O端口,为保证系统的可靠运行,也建议对I/O端口做电源隔离。

非隔离电源

电路板内的IC或部分电路供电,从性价比和体积出发,优先选用非隔离的方案;如MPS的MP150/157/MP174系列buck型非隔离AC-DC,适合于1~5W应用;

对于工作电压低于36V,采用电池供电,对续航力要求严苛的场合,优先采用非隔离供电,如MPS的MP2451/MPQ2451。

隔离电源模块选型的注意事项

电源的隔离耐压在GB-4943国标中又叫抗电强度,这个GB-4943标准就是我们常说的信息类设备的安全标准,就是为了防止人员受到物理和电气伤害的国家标准,其中包括避免人受到电击伤害、物理伤害、爆炸等伤害。如下图为隔离电源结构图。

img
图 隔离电源结构

作为模块电源的重要指标,标准中也规定了隔离耐压相关测试方法,简单的测试时一般采用等电位连接测试,连接示意图如下:

img

图 隔离耐压测试示意

测试方法

  1. 将耐压计的电压设为规定的耐压值,电流设为规定的漏电流值,时间设为规定的测试时间值;

  2. 操作耐压计开始测试,开始加压,在规定的测试时间内,模块应无击穿,无飞弧现象。

  3. 注意在测试时焊接电源模块要选取合适的温度,避免反复焊接,损坏电源模块。

  4. 除此之外还要注意:

    1. 要注意是AC-DC还是DC-DC。
    2. 隔离电源模块的隔离耐压。例如隔离1000V DC 是否满足绝缘要求。
    3. 隔离电源模块是否有进行全面的可靠性测试。电源模块要经过性能测试、容差测试、瞬态条件测试、可靠性测试、EMC电磁兼容测试、高低温测试、极限测试、寿命测试、安规测试等。
    4. 隔离电源模块的生产工厂产线是否规范。电源模块生产线需要通过ISO9001, ISO14001,OHSAS18001等多项国际认证,如下图3所示。
    5. 隔离电源模块是否有应用在工业、汽车等恶劣环境。电源模块不仅仅大量应用与恶劣的工业环境,同时在新能源汽车的BMS管理系统中也游刃有余。

img

图 ISO认证

总结

很多人认为非隔离电源不如隔离电源好,因为隔离电源贵,所以肯定贵的就好。前几年非隔离的稳定性确实没有隔离稳定,但随着研发技术的更新,现如今非隔离已经非常成熟,日渐稳定。说到安全性,其实现在非隔离电源也是很安全的,只要在结构稍微做下改动,对人体还是很安全的,同样的道理,非隔离电源也是可以过很多安规标准,例如:ULTUVSAACE等。

实际上非隔离电源损坏的根源就是电源AC线两端的浪涌电压所致,也可以这么说,雷击浪涌吧,这种电压是加在电压AC线两端的瞬间高压,有时高达三千伏,但时间很短,能量却极强,在打雷时会发生,或是在同一条AC线上,当一个大的负载断开瞬间,因为电流惯性的原因也会发生,这个电压进入电源,对于非隔离BUCK电路,会瞬间传达到输出,击坏恒流检测环,或是进一步击坏芯片,造成300v直通,而烧掉整条灯管。对于隔离反激电源,会击坏MOS,现象就是保管,芯片,MOS管全烧坏。现在LED驱动电源,在使用过程中坏的,80%以上都是这两种类似现象。而且,小型开关电源,就算是电源适配器,也经常损坏的是这个现象,均是浪涌电压所致,而在LED电源里,表现的更加普遍,这是因为LED的负载特性是特别的怕浪涌电压的。

如果按照一般的理论来讲,电子电路里,元器件越少,可靠性越高,相应越多的元件的电路板可靠性则越低。实际上非隔离电路的元件是比隔离电路要少的,为什么隔离电路可靠性高。其实说白了,不是什么可靠性,而是 非隔离电路对于浪涌太敏感,抑制能力差,隔离电路,因为能量是先进入变压器,然后从变压器再输送到LED负载的。BUCK电路是输入电源一部分直接加在了LED负载上,故前者对浪涌抑制和衰减能力强,所以浪涌来时损坏的机率小而已。实际上,非隔离电源的问题主要是在于浪涌问题,目前这个问题,因为只有LED灯具在大批量应用时,从概率上才能看出其解决的程度,所以很多人没有提出好的防治办法,更多的人则是不知道浪涌电压为何物。LED灯具坏了,很多人也找不到原因,最后只能一句,什么此电源不稳定就了结了,具体哪里不稳定,他不知道。

非隔离电源的优势一是效率,二是成本。

非隔离电源适合的场合:首先,是室内的灯具,这种室内用电环境较好,浪涌影响小。第二,使用的场合是高压小电流,低压大电流用非隔离没有意义,因为低压大电流非隔离的效率并不比隔离的高,成本也低不到多少去。第三,电压相对较稳定的环境中使用非隔离电源。当然,如果有办法解决掉抑制浪涌的问题,那么非隔离电源的应用范围将大大拓宽!

隔离电源因为浪涌的问题,损坏率也不可小觑,一般那种返修回来,击坏保险,芯片,MOS的第一个应该想到是浪涌问题。为了减少损坏率,在设计时就行要考虑到浪涌的因素进去,或是在使用时要告戒用户,尽量避免浪涌发生。(如室内灯具,打雷时暂时先关掉)

综合所述,使用隔离与非隔离很多时候都是因为浪涌这个问题,而浪涌问题和用电环境是息息相关的,所以很多时候使用隔离电源和非隔离电源不能一刀切,非隔离电源在节能,成本上都是很有优势的,所以要科学的选用非隔离还是隔离作为LED驱动电源。

[TOC]

IGBT和其驱动芯片的电气特性、引脚等参数的开发记录。

IGBT

IGBT芯片选型为 IKW50N65WR5。

image-20210715090401339

image-20210715093221500

IGBT有三个极,发射极、集电极 和 栅极。

从其电气性能表格中,可以看出:

  • 集电极到发射极的击穿电压 最小 为650V
  • 在 VGE 完全导通(最高15V)时,集电极到发射极的饱和电压为1.8V以下,此时 IGBT 处于截止状态
  • 在 VGE 完全截止(0V)时,二极管的正向电压为1.9V以下。 此时,VCE 处于导通状态。

image-20210715094151439

从上方表中可以看出,在官方的《开关特性测试情况》下,VGE 的通电情况是 0V 或者 15V,故此推断给此IGBT的栅极电源输入信号应该是0V ~ 15V的方波。

因此,下图中IGBT器件的电路连接方式为:G 接0/15V方波信号,C 接最高650V电源,E 接地。

image-20210715095656309

DRIVER IC

选用芯片型号为 2EDL05I06PF。

image-20210715102359830

根据表1索引可得,芯片封装类型为DSO-8,目标驱动芯片是 IGBT,而非 MOSFET。

image-20210715102251417

再根据图3可得芯片引脚分布,根据表2可得所有引脚描述。

image-20210715095931941

结合表2和图3,再根据图1的典型应用电路,可以大致知道芯片的连接方法。

针脚 功能描述
VDD 芯片供电接口
GND 芯片接地接口
HIN 调制波形输入接口——高位
LIN 调制波形输入接口——低位
VB 高位正电
HO 控制高位IGBT栅极的信号输出接口
VS 高位负电
LO 控制低位IGBT栅极的信号输出接口

还是不太明白VB和VS的作用

表4给出了 VDD 和 VB 的供电范围:

image-20210715105358524

image-20210715105816397

表6 给出了输入 VIN 的逻辑电平高低的电压范围,高电平为1.7 ~ 2.4 V, 低电平为0.7 ~ 1.1V。

image-20210715103507327

图2 提供了驱动芯片内部结构示意图

概括地说,IGBT栅极驱动器是一个放大器,其通过提高电压和电流来放大控制信号。

栅极驱动器的主要作用是对 IGBT的输入和反向输出电容放电。因此栅极驱动器(初其他影响因素外)与IGBT的开关性能密切相关,也与通态损耗与开关损耗有关。

绝大多数IGBT驱动器都是基于电压源的,与电流源驱动器相比,电压源的优势是其功率损耗在栅极电阻上,而非驱动中的电流源内。通过栅极电阻,可以调整最大的栅极电流。另一优势是,电压源相对简单的电路和控制方法。

驱动功能

IGBT驱动电路为系统提供的功能:

  1. 在IGBT开通过程中,栅极处的电容充电直到IGBT的开通阈值电压,反向传输电容(密勒电容)也如此。
  2. 在IGBT关断过程中,输入电容放电直到栅极电压达到关断阈值电压以下,反向传输电容(密勒电容)也如此。
  3. IGBT驱动可以具有保护IGBT免受损坏的功能,如 避免IGBT短路过电压保护

驱动供电

大部分情况下,IGBT驱动需要用隔离的供电电源。隔离电源可以看做是IGBT驱动的一部分。这些电源一般由 DC-DC变换器自举电路 构成。

同时,驱动会影响IGBT和续流二极管的动态特性,此外仍须确保IGBT输入电路电压(低压侧)和输出电路(高压侧)的电压隔离。低压侧与控制电路连接,高压侧与IGBT电路连接。

信号传输

阿博说的电路PCB布局要点:强弱隔离,数模隔离,信号沿地。

IGBT需要隔离的控制信号 包括: 开通信号关断信号反馈信号

这些控制信号的传输路径的隔离是通过 电隔离非电隔离 的方式形成的,这种电隔离被进一步划分为基于磁感应的、光学的隔离,极少情况下是电容性的隔离。需要通过 IGBT阻断电压应用电压的高低 来判断组个方式,在 高压应用 或 IGBT阻隔电压 UCES 高至 1.2kV 时,采用磁感应式 或 光学式信号传送器;在 低压 或 中压 应用中 或 低于 1.2kV 时,采用光电耦合驱动芯片。

image-20210717130119184
图 Infineon对电气隔离的定义

image-20210717115141036

光电耦合器

光电耦合器就是一种可以实现IGBT驱动的同时实现强弱电隔离的器件。由于光电耦合器的结构设计,集成光电耦合器的IGBT只能实现信息传递,不能为任何设备提供充足的能量支撑,需要一个隔离电源为驱动核心和光电耦合器的二次侧(高压侧)提供电能。

image-20210717113118307

另外有个相当重要的参数需要考虑——传输延迟时间,即 信号从光电耦合器IGBT输入到控制电流输出的时间。常规而言,传播延迟时间 tPLHtPHL 在几百个纳秒时间,但通常大于200ns。这种延时本身不会构成真正的问题,因为微控制器的控制算法可以考虑这一点,最大的问题在于 延时的公差(传输延迟时间不匹配),即最小和最大延时的不一致性。一旦该公差越大,上下桥臂的IGBT死区时间 tDT 就越大,加重了逆变器输出电流的失真影响。光电耦合器里信号延迟的误差因为操作使用会发生巨大变化,最终可导致高达1us的偏差。

image-20210717114405335

脉冲变压器

利用脉冲变压器为信号传输的IGBT,可以达到较低的延时水平,但与光电耦合器一样,只能传输信号,提供所需能量仍需由隔离电源提供。

image-20210717115333071

单片电平转换器

单片电平转换器,即 仅通过一个集成电路来实现 输入信号 和 输出信号 之间的隔离。需要注意的是,并不想光耦、变压器、脉冲等技术的完全绝缘的电气隔离,如果出现差错(如输出侧寄生电感产生的负电压瞬变),电路高压侧和地压侧将会直接连在一起(导致内部集成芯片的损坏)。将 SOI(绝缘硅)技术 应用于电平转换器可以解决这一缺陷,Infineon的产品大多都应用这项技术。这样的SOI装置不是由PN结反向偏置来提供内部电路隔离的,而是通过一层绝缘层(通常是二氧化硅 SiO2)来为不同的内部电路提供隔离,其反向电压耐压高达较高(因产品而不同)。

单片电平转换器主要应用于 UCES 低于 600V 的IGBT,通常一个驱动器有六路输出。但是在驱动 1.2kV 以上时,其驱动芯片和其他驱动方式相比成本劣势较少采用。

image-20210717122123709

图 带电平转换器的IGBT工作原理

产品概念

栅极驱动芯片 又可以称作 门极驱动芯片。按照门极驱动结构类型可以分为 单通道双通道四通道六通道,又进一步划分 高边地边高低边半桥全桥三相

image-20210717125203004

image-20210717125219691

image-20210717125337142

EiceDriver

下图为Infineon提供的栅极驱动芯片品类示意:

image-20210717120650887

参考

  1. 《IGBT模块:技术驱动和应用》
  2. 《MOSFET 栅极驱动电路》
  3. 《Infineon-Power_and_Sensing-ProductSelectionGuide-v00_01-EN》
  4. 《Infineon-EiceDRIVER_Gate_Driver_ICs-ProductSelectionGuide-v01_01-CN》

本文章用于记录半导体(晶体管的工作原理等blablabla的知识)。

半导体的定义

半导体 是指常温下导电性能介于导体与绝缘体之间的材料。 按照国际通行的半导体产品标准方式进行分类,半导体可以分为四类:集成电路(Integer Circuit),分立器件(Discrete Device),传感器(Sensor) 和 光电子器件(Optoelectronic Devices) ,统称为半导体元件。

分立器件按照功率转换进行分类,可以分为 功率器件非功率器件,其中,传感器光电器件 属于 分立器件下的 非功率器件,剩下的均是 功率器件,包含大部分晶体管,如 Zener Diode、BJT、IGFET、IGBT、Thyristor等。

注意:功率器件的概念很大,不仅在分立器件中存在功率半导体,在IC中也存在功率半导体的产品。

本征半导体

导电性介于导体与绝缘体之间的物质称为 半导体

导体:如铁、铝、铜等金属元素等低价元素,其最外层电子在外电场作用下很容易产生定向移动,形成电流。

绝缘体:如惰性气体、橡胶等,其原子的最外层电子受原子核的束缚力很强,只有在外电场强到一定程度时才可能导电。

半导体:如硅(Si)、锗(Ge),均为四价元素,它们原子的最外层电子受原子核的束缚力介于导体与绝缘体之间。

本征半导体:intrinsic semiconductor, 是 纯净(Purity)的 晶体结构(Crystal Texture)的 半导体;intrinsic 具有 “本质,固有” 之意。纯净,即无杂质之意;晶体结构,即稳定的结构。

P/N型半导体

纯净的硅晶体不带电荷,不显示出任何导电特性。

自由电子(Electron):由于热运动,具有足够能量的价电子挣脱共价键的束缚而成为自由电子

空穴(Hole):自由电子的产生使共价键中留有一个空位置

复合:自由电子与空穴相碰同时消失

电荷:电子和空穴都是电荷,电子呈现负电荷,空穴呈现正电荷

载流子(Carrier):运载电荷的粒子称为载流子

导电性:物体呈现出的传导电流的能力

多数载流子:在纯净硅晶体中掺杂数量较多的电荷称为多数载流子。

少数载流子:在纯净硅晶体中掺杂数量较少的电荷称为少数载流子。

外加电场时,带负电的自由电子和带正电的空穴均参与导电,且运动方向相反。由于载流子数目很少,故导电性很差。温度升高,热运动加剧,载流子浓度增大,导电性增强。热力学温度0K时不导电。

image-20210714204623205
图 N型半导体结构
image-20210714204653816
图 P型半导体结构

往纯净的硅晶体中掺杂一定浓度的 (P)或 (B)即可获得 使得硅晶半导体带上电子或空穴,即获得了 N型半导体P型半导体

杂质半导体:在本征的基础上掺杂其他元素。

P型半导体:掺杂了硼元素的硅晶体,空穴为多数载流子。

N型半导体:掺杂了磷元素的硅晶体。自由电子为多数载流子。

PN结

:即 Junction,在纯净硅晶体中掺杂两种不同电荷所形成的杂质接触截面。

扩散运动:物质 因浓度差而产生 的运动。气体、液体、固体均有之。扩散运动使靠近接触面P区的空穴浓度降低、靠近接触面N区的自由电子浓度降低,产生内电场。

漂移运动:因 电场作用 所产生的运动。

动态平衡:结处因空穴和电子一刻不停地复合和分离(官方:参与扩散运动和漂移运动的载流子数目相同)而形成 “无多数载流子” 的状态。

注意:扩散运动和漂移运动是相反的,

image-20210714210922380
图 扩散运动
image-20210714210942004
图 漂移运动

耗尽层:PN结处,因动态平衡而达到的“无多数载流子”的状态,该结的大小称为耗尽层。

如果此时让P区的多数载流子,即空穴尽量往N区移动,让N区的多数载流子,即自由电子尽量往P区移动,则两种电荷进行复合,形成更宽的耗尽层,此时因为耗尽层因为没有多数载流子而呈现不导电特性。

反之,让P区的多数载流子尽量往P区靠拢,让N区的多数载流子尽量往N区靠拢(注意,这里用的是“靠拢”,因为中间已经有耗尽层的形成,此时的“靠拢”是让耗尽层中已经复合消失的电子和空穴重新拆开,分别往各自原来的反向回归。),耗尽层的宽度会逐渐缩小,显现出导电特性。

正向:电源的正、负极分别对准半导体的P、N极进行连接。

反向:电源的正、负极分别对准半导体的N、P极进行连接。

正向导通:耗尽层变窄,扩散运动加剧,由于外电源的作用,形成扩散电流,PN结处于导通状态。

反向截止:耗尽层变宽,阻止扩散运动,有利于漂移运动,形成漂移电流。由于电流很小,故可近似认为其截止。

image-20210714212136379
图 正向导通
image-20210714212143706
图 反向截止

电容效应

势垒电容:PN结外加电压变化时,空间电荷区的宽度将发生变化,有电荷的积累和释放的过程,与电容的充放电相同,其等效电容称为势垒电容Cb。

扩散电容:PN结外加的正向电压变化时,在扩散路程中载流子的浓度及其梯度均有变化,也有电荷的积累和释放的过程,其等效电容称为扩散电容Cd。

结电容:等于 势垒电容 与 扩散电容 之和。但 结电容不是常量! 若PN结外加电压频率高到一定程度,则失去单向导电性!

二极管

The diode is the most used semiconductor device in electronics circuits. It is a two-terminal electrical check valve that allows the flow of current in one direction. They are mostly made up of silicon but germanium is also used. Usually, they are used for rectification. But there are different properties & characteristics of diodes which can be used for different application. These characteristics are modified to form different types of diodes.

image-20210713102126884

Types of Diodes and Their Applications
图 二极管的几种外形

image-20210713102141393

图 二极管的几种常见结构和符号

主要特征参数

  1. 最大整流电流(Maximum Rectification Current)
  2. 最高反向工作电压(Maximum Reverse Voltage)
  3. 反向电流(Reverse Current)
  4. 最高工作频率(Maximum Frequency)

自举二极管

晶体管

晶体管主要分为两种类型,BJT 和 FET。

工作区域:晶体管的导通状态,分为三种,分别是饱和、截止和放大,分别是指

BJT

BJT,即 Bioplar Junction Transistor,双极性结型晶体管。

image-20210714213248733

图 晶体管内部结构和符号示意

注意:晶体管的符号示意中,箭头的方向永远是从P指向N的,此时先不用管c、b、e是怎么接,确定好。

BJT结构特点:三极三区两PN结,发射区多子浓度高,基区多子浓度低且薄,集电区 面积大。

发射区:多数载流子较高的区域,自由电子流出的方向。

基区:多数载流子浓度较低且薄的区域。

集电区:面积大的区域,空穴流出的反向。

某极 是根导线,与BJT中的物理区不同。

发射结:发射区和基区之间的PN结。

集电结:集电区和基区之间的PN结。

注意:以上多数载流子可以是 空穴 或 自由电子,因此 BJT 可以有 NPN 和 PNP 两种类型的BJT。

联系到实际电路连接中,一般情况下,集电区 都是接 供电电源基区 都是接 控制电源发射区 都是接 负端/地。控制电源的电压会低于供电电源的电压,但会大于发射区的电压。

基区所连接的控制电源 为BJT提供 高电平或低电平 予以控制半导体的导通或截止,半导体所控制的负载的最大电压取决于发射极的供电电源电压 和 基区的控制电源电压

image-20210713104805683
图 BJT的几种常见外形
image-20210713105054978
图 BJT的结构和符号

工作原理

从下图可以看出,下图 BJT 为 NPN 型半导体,集电区接正电,发射区接地,基区接地。集电区与基区为反向截止状态,集电结的耗尽层增大,进一步阻止集电区和发射区之间的电流导通。

若此时向基区施加正向电流,基区电压高于发射区电压,发射结正偏导通,发射区多子(电子)往基区流动,。发射区的电子能够顺利往集电区流动,集电区的电流往发射区流动,从而导通 该BJT。

image-20210714215347959
图 BJT导通时的内部电荷流向示意

集电极电流是漂移形成的,发射极电流是扩散形成的。

发射区电流 IE 是由 扩散运动形成的。

基区电流 IB 是由 复合运动形成的。

集电区电流 IC 是由 漂移运动形成的。

image-20210714222731446
图 BJT输入特性曲线
image-20210714222645318
图 BJT输出特性曲线

工作区域

image-20210714223024773
图 BJT工作区域

FET

场效应晶体管 简称 场效应管。主要有 结型场效应管(JFET)和 金属氧化物半导体场效应管(MOSFET)两种类型。

JFET

image-20210713105852012
图 JFET的结构和符号

MOSFET

在MOS管工作原理图上可以看到,漏极和源极之间有一个寄生二极管。这个叫体二极管,在驱动感性负载(如马达),这个二极管很重要。顺便说一句,体二极管只在单个的MOS管中存在,在集成电路芯片内部通常是没有的。

下图a中,为增强型P衬底N沟道MOS,其栅极接 高电平 即导通。

image-20210713110023509
图 N沟道增强型MOS管结构示意图 及 增强型MOS管的符号
image-20210713110146838
图 N沟道耗尽型MOS管结构示意图 及 耗尽型MOS管的符号

NMOS工作原理

MOS管有4个端子,其符号也是四个端子组成的,以下用NMOS举例:

NMOS底部端子连接到基板/主体(Substrate/Body),称为基板、衬底端子 或 主体端子。上方各有两个N沟道,各自连接 源极端子漏极端子。两个端子中间添加了一层 薄绝缘体或电介质,在此层绝缘体上加了一个 栅极端子

image-20210716001316182

在NMOS内部构造中,源极端子 和 衬底端子 在内部连接,因此外露出来的端子只有三个。此时因 源极 和 衬底 的电位相同,阻止了任何电流从衬底流向源极。

image-20210716001716986

在MOS中,希望电子从漏极流向源极,在两个极连接一个电源,其电压称为 VDS ,此时加大电压,电流却不会增大,因为漏极沟道附近的耗尽层不断增大。

image-20210716002453710

栅极端子 和 主体端子 都有绝缘材料,当给栅极端子接电压较小的电压 VGS 时,两个绝缘材料形成电容效应,栅极处的多子不断吸引自由电子往栅极移动,暂时形成带自由电子较多的N区,从而导通了 源极 和 漏极,暂时形成了回路。因为 栅极处的N区是暂时连接 源极和漏极的通道,因此也被称为 N沟道。随着电压的增大或减小,沟道的大小也会随着变化。足以形成沟道的最低栅极电压被称为 阈值电压

image-20210716002900372

当不断增加栅极电压,漏极 和 衬底之间的耗尽层将因为 反向偏置 而不断增加。靠近漏极一侧的N沟道宽度将不断减小,直到某个电压点时,称为夹断效应。夹断下映实际上是说,沟道并未完全关闭,许多电子将保留通道,并不是停止了电流流动,而是出现了恒定的饱和电流,其电压被称为 饱和电压。

image-20210716004255087
表 FET的符号和特性

image-20210713105437061

image-20210713105533255

FET and BJT

FET 的 栅极源极漏极 对应 BJT的 基极发射极集电极,其作用类似。

FET BJT
电流索取 用“栅-源”电压控制漏极电流,栅极基本不取电流
【输入电阻高的电路选用】
工作时基极总要索取一定的电流
【信号源若提供电流的选用】
导电情况 仅多子参与导电 多子少子均参与导电
稳定性 较好 较差
【因少子数目受温度、辐射等因素影响较大,温度稳定性和抗辐射的能力较差些。】
噪声系数
【低噪声放大器的输入级和信噪比要求高的电路选用】
源-漏互换 可以互换,互换后特性变化不大 互换后特性差异很大,特殊需求时互换
电压范围
工艺 简单 复杂
耗电

IGFET / MOS / MOSFET 是同一个东西,还有个词叫 MISFET(Metal-Insulated-Semiconductor Field Effect Transistor,金属绝缘半导体场效应管)

功率半导体

功率半导体 器件大致分为两类: 可控功率半导体不可控功率半导体可控功率半导体 如 Thyristor(晶闸管)、BJT(双极型晶体管)、功率MOSFET 和 IGBT 。不可控功率半导体 包括各种类型的功率二极管。

image-20210713112224602
图 常见功率半导体器件及其典型的功率范围、阻断电压和开关频率

IGBT

绝缘栅型双极晶体管,即 IGBT(Insulated Gate Bipolar Transistor),是由 BJT(双极型三极管))和 MOS(绝缘栅型场效应管)组成的 复合全控型电压驱动式功率半导体 器件, 兼有 MOSFET高输入阻抗GTR低导通压降 两方面的优点。IGBT综合了以上两种器件的优点,驱动功率小而饱和压降低。非常适合应用于直流电压为600V及以上的变流系统如交流电机、变频器、开关电源、照明电路、牵引传动等领域。

GTR 具有饱和压降低,载流密度大,但驱动电流较大的优点;

MOSFET 具有驱动功率很小,开关速度快,但导通压降大,载流密度小的优点。

IGBT模块 是由 IGBT(绝缘栅双极型晶体管芯片)与FWD(续流二极管芯片)通过特定的电路桥接封装而成的模块化半导体产品;封装后的IGBT模块直接应用于变频器、UPS不间断电源等设备上;IGBT模块 具有节能、安装维修方便、散热稳定等特点;当前市场上销售的多为此类模块化产品,一般所说的IGBT也指IGBT模块;随着节能环保等理念的推进,此类产品在市场上将越来越多见;

image-20210713142410853
图 IGBT内部结构和等效电路

因为IGBT的构造所致,最好还是不要让IGBT长期工作在放大区,会让其降低使用寿命,因开关开断时而进入放大区无可避免,仅工作在 饱和区 和 截止区 即可。

image-20210715221251088

三个英文符号分别表示为 栅极(Gate)、集电极(Collector)、发射极(Emitter)。

在漏极侧增加了高掺杂的P+层,称之为 集电极

  • 当栅极接近 负电压零电压 时,PN结 J2 阻断,发射极电压远低于集电极电压,IGBT 关断 (正向阻断);但是此刻 结J1 和 结J3 正偏导通

  • 当栅极接到 正电压(通常是15V)时,氧化层下方的 P区 建立 反型导电沟道,为 N-区 提供导电通路,电子从发射极到 N-区 降低了 N-区 的电位,PN结 J1导通,IGBT导通。

如果栅极电压不够大,形成的反型层较弱,流入漂移区的电子数相对较少,IGBT压降增大,即进入特性曲线的 线性放大区。工作在线性放大区会加剧损耗或损坏 IGBT,因而除了开关瞬间,应避免进入线性放大区。

image-20210713144038325
图 IGBT的输出特性

IGBT 的关断电流分为 MOSFET关断阶段BJT关断阶段。第一个阶段时,关断反型沟道,电流迅速下降;第二个阶段时,会产生持续时间较长的拖尾电流。

拖尾电流使得 IGBT 的关断损耗 高于 MOSFET 的关断损耗。

image-20210713144838981
图 MOSFET和IGBT的主要开通和关断特性比较

截止电压:

饱和电压:

击穿电压:

阈值电压:描述的是 栅极发射极 之间刚好足以打开导流通道的电压。

漏电流:泄露电流,leakage current。主要是指栅极和发射极的在反向偏置状态的泄露电流,此处特性与二极管相近。

分类

IGBT可以分为 穿通型(PT)IGBT、非穿通型(NPT)IGBT、场终止型(FS)IGBT、沟槽栅(Trench)IGBT、载流子存储沟槽栅双极晶体管(CSTBT)、注入增强晶体管(IEGT)、沟槽栅终止(Trench-FS)IGBT、逆导型(RC)IGBT。

平面栅极结构 的IGBT设计,形成了JFET结构,以及发射极区软弱的电导调制效应,载流子的浓度从集电极到发射极之间逐步降低。

沟槽型栅极结构 的IGBT设计,在平面型的基础上保持载流子浓度平均分布或逐步增加载流子浓度,进一步降低通态损耗,而不影响拖尾电流和关断损耗。

载流子越少越有助于降低关断损耗。

TYPE 内部构造(原理) 温度系数 优点 缺点
PT-IGBT
穿通型IGBT
image-20210713112637086 正温度系数
负温度系数
NPT-IGBT
非穿通型IGBT
image-20210713112654444 正温度系数 1. 有利于IGBT并联 1. 随着温度上升,损耗增大
FS-IGBT
场终止型IGBT
image-20210713112712678 正温度系数
Trench-IGBT
沟槽栅IGBT
image-20210713112728045 1. 更宽的导电沟道会增加IGBT短路时的电流
CSTBT
载流子存储沟槽双极晶体管
image-20210713122039519 1. 降低了IGBT的饱和压降
IEGT
注入增强栅晶体管
image-20210713112841613
Trench-FS IGBT
沟槽栅终止IGBT
image-20210713112933604 1. 保持鲁棒性,通态损耗和开关损耗降低
2. 功率密度提升,即电流密度增大
3. 单位IGBT所需硅材料降低
RC-IGBT
逆导型IGBT
image-20210713122011473

术语总结

FET: Filed Effect Transistor,即 场效应管,是 利用输入回路的电场效应来控制输出回路电流 的一种半导体器件,故此得名。由于其仅靠半导体中的多数载流子导电,因此也称为 单极型晶体管

JFET: Junction Filed Effect Transistor,即 结型场效应管,有 P沟道 和 N沟道 两种类型。

IGFET: Insulated Gate Field Effect Transistor,即 绝缘栅型场效应管。因栅极与源极、栅极与漏极之间均采用二氧化硅绝缘层进行阻隔而得名如此。又因栅极为金属铝,故又称为MOS管。具有 高输入阻抗、高开关频率 和 低驱动功率 的优点。

MOS: Metal-Oxide-Semiconductor,即 金属氧化物半导体。同上。

MOSFET: Metal-Oxide-Semiconductor Field Effect Transistor,即 金属氧化物半导体场效应管。同上。

BJT: Bipolar Junction Transistor, 即 双极结型晶体管。因带有两种不同极性电荷的载流子参与导电,故得名如此,或称 半导体三极管,简称 双极晶体管晶体管

UJT: Unijunction Transistor,即 单结晶体管。因有两个基极,也称为 双基极晶体管

GTR: Giant Transistor,即 巨型晶体管。BJT的一种,亦称为 Power BJT(电力晶体管)。具有自关断、无须辅助关断电路、 高电流密度、低保和电压 和 耐高压 的优点。

IGBT: Insulated Gate Bipolar Transistor,即 绝缘栅双极型晶体管

Thyristor:即 半导体闸流管晶闸管,又称为 硅可控元件(Silicon Controlled Rectifier), 由按顺序排列的PNPN四层半导体组成。最外层的P区和N区构成了正负极,中间的P区构成了控制极(栅极),可以控制导通。具有耐压高、电流大、耐浪涌能力强 且 价格便宜 等优点。

GTO: Gate Turn-Off Thyristor,即 可关断晶闸管。是一种通过门极来控制器件导通和关断的电力半导体器件。具有 普通晶闸管 和 GTR的优点,是应用于高压大容量场合中的一种大功率开关器件。

PT: Power Transistor, 即 功率晶体管 / 功率管

IPM: Intelligent Power Module,即 智能功率模块。具有GTR 和 MOSFET 的优点。而且IPM内部集成了逻辑、控制、检测和保护电路,使用起来方便,不仅减小了系统的体积以及开发时间,也大大增强了系统的可靠性。

img
图 IPM器件示意

参考

  1. 《模拟电子技术基础》高等教育出版社,童师白
  2. 《IGBT模块:技术、驱动和应用》机械工业出版社,Andreas Volke and Michael Hornkamp
  3. 逆变器的分类方式有哪些
  4. IGBT
  5. 场效应管
  6. 晶体二极管
  7. 晶体管
  8. Difference Between Diode & Transistor
  9. 半导体分类知识大全
  10. IGBT—功率半导体皇冠上的明珠
  11. Types of Diodes and Their Applications - 24 Types of Diodes

嵌入式芯片(如MCU、DSP等)内部包含众多的模块化外设,如 串口控制模块,SPI模块,I2C模块,A/D模块,PWM模块,CAN模块,EEPROM,比较器模块,等等,它们都集成在芯片内部,有相对应的内部控制寄存器,可通过指令直接控制。

按照控制信号类别对外设进行分类,可以分为 模拟外设(Analog Peripherals)、控制外设(Control Peripherals) 和 通信外设(Communication Peripherals)。

模拟外设 的常见外设如 模数转换器(Analog-to-Digital Convertor, ADC)、可编程增益放大器(Programmable Gain Amplifier, PGA)、温度传感器(Temperature Sensor)、缓冲数模转换器(Buffered Digital-to-Analog Convertor, DAC)和 比较器(Comparator Subsystem)。

控制外设 的常见设备如 捕获器(Capture, CAP)、脉冲幅频调制器(Pulse Width Modulator, PWM)、正交编码器脉冲( Quadrature Encoder Pulse, QEP)和 **西格玛-德尔塔滤波器模块 **(Sigma-Delta Filter Module, SDFM)。

通信外设 的常见设备如 (Controller Area Network, CAN)、双线通信(Inter-Integrated Circuit, I2C)、电源管理总线接口(Power Management Bus Interface, PMBus)、串行通信接口(Serial Communications Interface, SCI)、串行外设接口(Serial Peripheral Interface, SPI)、局域互联网络(Local Interconnect Network, LIN) 和 高速串行接口(Fast Serial Interface, FSI)。

CLA

为了解决DSP在对实时控制要求比较高的场合中CPU计算速度不足以及计算负担过重,TI很早之前就已经推出了具有CLA功能的DSP。

CLA,即Control Law Accelerator,是一个32位浮点数计算加速器,可以理解为一个专门为浮点数运算而优化的CPU。其可以 独立 于CPU进行运算操作,并 可以同时访问 到ePWM,eCAP,eQEP,ADC result以及Comparator 寄存器。相当于两个CPU并行工作,从而减少了主CPU的运算负担。

也就是说 CLA可以同时访问所有模拟外设的寄存器。

可以将CLA看作是辅助CPU进行计算的浮点运算协处理器(co-processor)。

一个典型的应用场景如下:

img闭环控制电路

CPU通过ADC采集主电路的电压、电流信息,计算得到控制逻辑(包括频率以及占空比等),从而控制电路工作。因此如果CPU的计算负担很大,比如说需要计算傅里叶分解,比如说需要计算反三角函数等,那么就造成了极大的控制时延。而CLA应运而生,专门为计算浮点数进行优化,且不会造成CPU阻塞于计算而对异常情况无法响应的情况。

img

图 28069和28027对比

上图则对比了具有CLA功能的28069和不具有CLA功能的28027的控制延时。对于没有CLA功能的28027,其CPU在ADC采样结束之后触发SOC中断,随后进行闭环计算,最后再结束一个周期的控制,开始下一个周期。而具有CLA功能的28069则可以在采样结束之后立即自主触发CLA计算(由于没有菊花链,所以触发迅速),并且由于CLA针对浮点数计算进行优化,因此计算时间更短。更重要的是,CPU不需要进行任何操作,因此CPU可以有空闲完成其他任务,比如异常检测,比如故障上报等等

简单来说,采用CLA的系统具有更小的计算时延CPU负担更小,因此其系统更加迅速稳定。

CLB

The C2000 configurable logic block (CLB) is a collection of configurable blocks that interconnect through software to implement custom digital logic functions.

The CLB subsystem contains a number of identical tiles.

GPIO

GPIO,即General-purpose input/output,通用型之输入输出(接口)。功能类似8051的P0—P3,其接脚可以供使用者由程控自由使用,PIN脚依现实考量可作为通用输入(GPI)或通用输出(GPO)或通用输入与输出(GPIO),如当clk generator, chip select等。
既然一个引脚可以用于输入、输出或其他特殊功能,那么一定有寄存器用来选择这些功能。对于输入,一定可以通过读取某个寄存器来确定引脚电位的高低;对于输出,一定可以通过写入某个寄存器来让这个引脚输出高电位或者低电位;对于其他特殊功能,则有另外的寄存器来控制它们。

CMPSS

CMPSS,即Comparator Subsystem,比较器子系统。由模拟比较器和支持电路组成,可用于峰值电流模式控制、开关电源、功率因数校正、电压跳闸监测等应用。

每个CMPSS包含两个比较器、两个12位DAC参考、两个数字滤波器和一个斜坡发生器。比较器在每个模块中表示为“H”或“L”,其中“H”和“L”分别表示高和低。每个比较器产生一个数字输出,指示正输入端的电压是否大于负输入端的电压。比较器的正输入由外部引脚或PGA驱动,负输入可由外部引脚或可编程参考12位DAC驱动。每个比较器输出通过一个可编程的数字滤波器,可以消除假跳闸信号。如果不需要滤波,也可以使用未滤波的输出。一个可选的斜坡发生器电路可用于控制高比较器的12位参考DAC值。

CAN

A controller area network(CAN) is ideally suited to the many high-level industrial protocols embracing CAN and ISO-11898:2003 as their physical layer.

Introduction

  • The CAN bus was developed by BOSCH as a multi-master, message broadcast system that specifies a maximum signaling rate of 1 megabit per second(bps).

  • CAN is an International Standardization Organization (ISO) defined serial communications bus originally developed for the automotive industry to replace the complex wiring harness with a two-wire bus.

  • CAN does not send large blocks of data point-to-point from node A to Node B under the supervision of the central bus master.

  • In a CAN network, many short messages like temperature or RPM are broadcast to the entire network, which provides for data consistency in every node of the system. 保证系统中各节点的数据一致性。

  • CAN’s specification calls for high immunity to electrical interface and the ability to self-diagnose and repair data errors.

以下为ISO 11898 对 CAN 标准架构层级解释框图:

image-20210711162150611

The CAN communication protocol is a carrier-sense, multiple-access protocol with collision detection and arbitration on message priority (CSMA / CD+AMP). CSMA means that each node on a bus must wait for a prescribed period of inactivity before attempting to send a message. CD+AMP means that collisions are resolved through a bit-wise arbitration, based on a preprogrammed priority of each message in the identifier field of a message. The higher priority identifier always wins bus access.

CAN 包含 standard CAN 和 Extended CAN。

image-20210711163535822

image-20210711163548817

术语

菊花链:在电子电气工程中菊花链代表一种配线方案,例如设备A和设备B用电缆相连,设备B再用电缆和设备C相连,设备C用电缆和设备D相连,在这种连接方法中不会形成网状的拓扑结构,只有相邻的设备之间才能直接通信,例如在上例中设备A是不能和设备C直接通信的,它们必须通过设备B来中转,这种方法同样不会形成环路。因为最后一个设备不会连向第一个设备。这种连线方法能够用来传输电力,数字信号和模拟信号。

参考

  1. CLA介绍及使用指南
  2. GPIO
  3. TMS320F280049C 学习笔记16 比较器子系统(CMPSS)
  4. 《Introduction to the Controller Area Network(CAN)》

对于晶体管

Vcc:来源于集电极电源电压, Collector Voltage, 一般用于双极型晶体管, PNP 管时为负电源电压, 有时也标成 -Vcc, NPN 管时为正电压

Vdd:来源于漏极电源电压, Drain Voltage, 用于 MOS 晶体管电路, 一般指正电源。 因为很少单独用 PMOS 晶体管, 所以在 CMOS 电路中 Vdd 经常接在 PMOS 管的源极上。

Vss:源极电源电压, 在 CMOS 电路中指负电源, 在单电源时指零伏或接地。

Vee:发射极电源电压, Emitter Voltage, 一般用于 ECL 电路的负电源电压。

Vbb:基极电源电压, 用于双极晶体管的共基电路。

对于电路及芯片

VDD:电源电压(单极器件);芯片电源电压。(Device)

VCC:电源电压(双极器件);电路电源电压。(Circuit)

VSS:接地端、负极。(Series)

VEE:负电压供电;

VPP:编程/擦除电压。

TMS320F28004x 下称 本系列芯片。

概述

C28004x 共有2种芯片封装形式: LQFP 和 VQFN 。VQFN 仅有56针,LQFP 有 100针和 64针的区别。分别用 PZ 、PM 和 RSH 三种型号尾缀与 100-pin 、64-pin 和 56-pin 相关联。根据section4.3,可以知道还有个64PMQ的尾缀。

如型号TMS320F280041PM,仅有64针脚,引脚分布如下图所示:

image-20210710144933414

Specification

下图应该是F280049的系统功能框图,与F280041PM仍有些出入。

image-20210710141413564

注意:F280041PM不支持 CLA(可编程控制Law加速器,Programmable Control Law Accelerator),Flash为128KB(64KW),GPIO数量为26,AIO数量为14,ADC通道为14,同时280041支持5个PGA

TMS320F28004x 所支持外设如下:

image-20210710142641475

Q: 为什么要区分type?

A: 就同一类功能而言,在C2000系列上,都会有许多不同的增强/阉割版本,就出现了支持全部基础功能的、出现支持部分扩展功能的 和 支持全部扩展功能的等各种版本,那么就需要从功能范围的本质上去描述这些区别,再用相应的 “功能+type x” 的方式来表示其支持的类别。如下图所示,为《spru556n》page 24 所描述的关于CLA的功能类别。

CLA type 0,表示的是支持原始CLA功能的模块类型。

CLA type 2 ,表示在原始功能的基础上,增加了后台代码模式,可以在后台运行通信和清理程序等任务;后台任务持续运行,直到禁用或设备/软复位;后台任务可以由外设或软件触发;其他前台任务可以按照定义的优先顺序中断后台任务;增加了使后台代码部分不被中断的规定;增加了调试功能,具有真正的软件断点支持,在调试停止期间,CLA从同一地址重新获取数据会被停止。

image-20210712141632913

引脚

引脚分配

Page17 4.2 Pin Attributes 下可以查看各封装芯片引脚的名称、编号 及 功能。

引脚路由

Page30 4.3 Signal Routing 下可以查看引脚的路由信息。

引脚复用

Page41 4.4 Pin Multiplexing 下可以查看引脚的复用信息,GPIO口的默认功能就是GPIO,除了GPIO35 和 GPIO37(默认情况下是TDI 和 TDO)。GPIO口的次级功能可以通过设置 GPyGMUXn.GPIOzGPyMUXn.GPIOz 寄存器位来进行。

注意

  • GPyGMUXn 寄存器应在 GPyMUXn 之前配置,以避免交替复用选择对GPIO产生瞬时脉冲。
  • GPIO20 , GPIO21 和 GPIO41 至 GPIO55在任何封装上都不可复用。

表6 为GPIO的针脚复用说明,表中未列明项为GPIO复用设置保留位。

image-20210712094430159

image-20210712094455163

引脚置高/低

部分引脚可以被置高/低,下表展示了各引脚的设置类型。默认情况下,GPIO不可置高,但是可以通过软件进行使能。

image-20210712093251720

X-BAR

X-BAR 即 Crossbar。

输入X-BAR

输入X-BAR被用于从GPIO口引导信号至许多不同的IP块,如ADC、eCAP、ePWM 和 外部中断。图5 展示了X-BAR的架构,表8 展示了各X-BAR输入可能的路由目的地。

image-20210712095049189

image-20210712095346292

输出X-BAR 和 ePWM X-BAR

输出X-BAR有8个可以路由至各GPIO模块的输出口。ePWM X-BAR 有8个可以路由至各ePWM模块的输出口。

图6 展示了 两个X-BAR的 信号源。

image-20210712095838640

电压

本系列芯片支持以下三种之一的电源供应(在要求核心电压VDD = 1.2V 的情况下):

  • 外接电源(不支持56针RSH封装)
  • 内部 1.2V LDO电压整流器
  • 内部 1.2V 开关整流器

注意:必须使用同一个系统电压调节器来驱动VDDIO和VDDIO_SW。

下方是有关两个电压调节器的详细描述:

image-20210710154834139

复位

时钟

下图展示了本系列芯片的时钟系统,本系列芯片支持两个独立的内部振荡器,直接映射为 INTOSC1INTOSC2 。默认情况下,都会在芯片启动时开启,且 INTOSC2 才是系统参考时钟源,INTOSC1 是备用时钟源。这一点可以手动修改

image-20210710155206953

下图展示了系统PLL的设置框图。

image-20210710155140640

表13 展示了(外部)输入时钟频率的范围要求

表14 展示了(外部)晶体振荡器的电气特性

表15 展示了X1的计时要求

表16 展示了PLL锁定的时间

表17 展示了内部时钟频率

表18 展示了输出时钟XCLKOUT的开断性能

表19 展示了(外部)晶体振荡器参数

表20 展示了(外部)晶体振荡器的等效电阻要求

表21 展示了(外部)晶体振荡器的电气特性

表22 展示了(内部)晶体振荡器的电气特性

image-20210710155540889

image-20210710160134644

image-20210710160150517

image-20210711172100592

image-20210711173148615

图 5-12 至 5-14 展示了三种不同的外部时钟源电路:

image-20210711172426297

注意:当X1接口被当作时钟接口使用时,X2接口也不可用作GPIO口。

时钟配置方法

Once the application requirements are understood, a specific clock configuration can be determined. The default configuration is for INTOSC2 to be used as the system clock (PLLSYSCLK) with a divider of 1. The following procedure can be used to set up the desired application configuration:

  1. Select the reference clock source (OSCCLK) by writing to CLKSRCCTL1.OSCCLKSRCSEL. To enable XTAL, follow the instructions in the previous sections.

  2. Select the reference clock source (OSCCLK) by writing to CLKSRCCTL1.OSCCLKSRCSEL. Allow at least 300 NOP instructions for this to take effect.

  3. Set up the system PLL if desired. TI recommends using the C2000Ware SysCtl:setClock() function for proper configuration of the PLL clock.

  4. Select the LSPCLK divider by writing to LOSPCP.

  5. If an alternate CAN bit clock is needed, select it by writing to CLKSRCCTL2.CANABCLKSEL and CLKSRCCTL2.CANBBCLKSEL.

  6. Enable the desired peripheral clocks by writing to the PCLKCRx registers.

The system clock configuration can be changed at run time. Changing the OSCCLK source will automatically bypass the PLL and set the multiplier to zero. Changing the multiplier from one non-zero value to another will temporarily bypass the PLL until it re-locks.

注意: At least a 300 CPU clock cycles delay is needed after OSSCLK source is changed. 

闪存

表23 展示了不同时钟源和频率下所需的最小闪存等待状态

表24 展示了闪存的性能参数

image-20210711173614732

image-20210711173721809

JTAG

GPIO

在复位时,GPIO会被配置为输入。对于特定的输入,用户还可以选择 输入鉴定周期(input qualification cycles)的数量来过滤不需要的 噪声突变(unwanted noise glitches)。

表29 展示了GPIO的特性参数,需要注意的是,GPIO的频率只有25MHz最高。

表30 展示了GPIO的输入时间要求

image-20210711174357812

image-20210711174530164

中断

C28x系列芯片有14条外围中断可用,其中13和14中断被直接关联至CPU定时器1和定时器2。剩余12条中断可以通过 增强型外围中断扩展(enhanced Peripheral Interrupt Expansion,ePIE)模块进行信号引导。本模块将最多16个外设中断复用到每个CPU中断线中,并扩展了向量表,允许每个中断有自己的ISR。允许芯片支持数量众多的外围设备。

中断路径一共有三个阶段——外围设备、ePIE模块 和 CPU。每个阶段都有其使能和标志寄存器。本系统允许CPU在其他中断等待时处理一个中断,在软件中实现并优先处理嵌套中断,并在某些关键任务中禁用中断。

下图展示了本系列芯片的中断架构。

image-20210711175336942

外部中断(external interrupt, XINT)电气特性数据和时序特性:

表31 列出了外部中断的时间要求

表32 列出了外部中断开断特性

图25 展示了外部中断的时序

image-20210712083326344

低电量模式

本系列芯片拥有两种 时钟门(clock-gating) 低电量模式,分别是 HALT 和 IDLE,STANDARD 模式不支持进入低电量。

低电量模式的进入和退出代码,以及更多关于低电量模式的描述信息,需要参考《TRM》手册。

表33 描述了系统进入任何 时钟门 低电量模式后的影响

表34 列明了IDLE模式下的时序要求

表35 列明了IDLE模式下的开断特性

表36 列明了HALT模式下的时序要求

表37 列明了HALT模式下的开断特性

图26 展示了IDLE模式的时序框图

图27 展示了HALT模式的时序框图

image-20210712100908714

image-20210712101034377

image-20210712101211183

image-20210712101225955

模拟外设

暂略

控制外设

本系列芯片的控制外设包含 eCAPHRCAPePWMHRPWMeQEPSDFM

根据《spru566n》表11 可知,ePWM 和 HRPWM 都是4型增强外设,具体功能可以参见《sprui33d》。

ePWM

The enhanced pulse width modulator (ePWM) peripheral is a key element in controlling many of the power electronic systems found in both commercial and industrial equipment. These systems include digital motor control, switch mode power supply control, uninterruptible power supplies (UPS), and other forms of power conversion.

大白话地将,ePWM 这个外设,是由很多个ePWM 模块(Module)组成,每个ePWM 模块都有8个子模块(Submodule)。所有的ePWM模块用数字尾缀来表示第几个ePWM模块,如 ePWM1ePWM3 。每个ePWM模块又有两个输出,分别是 A 和 B,例如 ePWM1AePWM1B

ePWM模块通过一条时钟同步表(clock synchronization scheme)同步和串联在一起,形成可以统一操作的整体。此外,这个时钟同步表能够被扩展至 eCAP 外设使用。子模块的数量是由设备(设计)和实际使用需求决定的,每个子模块都能够支持单独操作。

每个ePWM模块支持以下功能:

  • 带有周期和频率控制的专用16位时基计数器
  • 两个PWM输出(EPWMxAEPWMxB ),可用于以下配置。
    • 两个独立的PWM输出,单边操作( single-edge operation)
    • 两个独立的PWM输出,双边对称操作( dual-edge symmetric operation)
    • 一个独立的PWM输出,双边不对称操作( dual-edge asymmetric operation)
  • 通过软件对PWM信号进行异步覆盖控制。
  • 可编程的相位控制,支持相对于其他ePWM模块的滞后或领先操作
  • 逐个周期的硬件锁定(同步)相位关系。
  • 具有独立上升沿和下降沿延迟控制的死区生成。
  • 可编程的跳闸区域分配,包括逐周期跳闸和故障条件下的一次性跳闸。
  • 跳闸条件可以迫使PWM输出达到高、低或高阻抗状态的逻辑水平。
  • 所有事件都可以触发CPU中断和ADC开始转换(SOC)
  • 可编程的事件预处理将CPU在中断上的开销降到最低。
  • 通过高频载波信号进行PWM 斩波(chopping),对脉冲变压器门驱动很有用。

8个子模块如下:

  • Time-Base Submodule
  • Counter Compare Submodule
  • Action Qualifier Submodule
  • Dead-Band Generator Submodule
  • PWM Chopper (PC) Submodule
  • Trip Zone Submodule
  • Event Trigger Submodule
  • Digital Compare Submodule

各子模块的 Purpose 和 Control 简单列些如下:

SUBMODULE PURPOSE CONTROL
Time-Base determines all of the event timing for the ePWM module
Counter Compare
Action Qualifier
Dead-Band Generator
PWM Chopper
Trip Zone
Event Trigger
Digital Compare

ePWM 模块通过两个PWM输出(EPWMxAEPWMxB)来组成一条完整的PWM通道。多路 ePWM被在一个设备内实现,几乎每一个ePWM通道实例都是相同的,只有一个例外。有些实例包括一个硬件扩展,可以更精确地控制PWM输出。这种扩展是高分辨率脉宽调制器(HRPWM),在第18.15节中有描述。每个ePWM模块都用一个以1开头的数值表示,例如,ePWM1 是系统中的第一个实例,ePWM3 是第三个实例,ePWMx 表示任何实例。

每一个ePWM模块都被连接至输入和输出信号。每一个ePWM模块都包含着8个子系统,并通过图18-2的方式连接至系统内部。

图1 描述的是外围总线上的多个PWM模块,及输入信号和输出信号通路示例

图2 描述的是PWM模块下各子模块和信号连接方式

image-20210715140249937 image-20210715141719524

trip input:

trip zone:是ePWM的一个子模块

trip-zone input timing:

Hi-Z: 高阻态

表57 展示了PWM的时间要求,主要是 同步(Sync)/非同步(Async)/带输入验证(With input qualifier)的 同步输入脉冲宽度(Sync Input Pulse Width)的三种时间

表58 展示了PWM的开关特性,包括最小脉冲周期,同步输出脉冲宽度 和 td(TZ-PWM)

表59

图58

图59

图60 为同步链架构示意??

图61 PWM高阻态时序特性

image-20210712104641579

image-20210712104655718

image-20210712104857729

image-20210712104928659

通信外设

暂略

Register

暂略

高频变换器开发

利用型号为 TMS320F280041 芯片的GPIO(最高输出频率为25MHz)输出一个30KHz的PWM波形,需要使用到 ePWM外设,使用示例中提供的 ePWM6 进行开发,输出高位和低位两个幅频合适的波形后,接到型号为 2EDL05I06PF 的驱动上,驱动型号为 IKW50N65WR5 的IGBT外设。

  • TMS320F280041 的外部晶振输入频率 fXTAL 在 10 ~ 20 MHz 之间,自身工作频率fSYSCLK 在 2 ~ 100MHz之间。

以下为工作频率设置的样例,刚好实际芯片时钟配置也是需要配置到满频工作状态 100MHz

image-20210715170724177
  • 外部晶振和自身工作频率的设置涉及到几个寄存器:
    • CLKSRCCTL1.OSCCLKSRCSEL
    • SYSPLLMULT
    • IMULT
    • FMULT
    • ODIV
    • SYSCLKDIVSEL.PLLSYSCLKDIV
    • SYSPLLCTL1.PLLCLKEN

工作目标

  1. 输出PWM波形
  2. 采集输出的波形和IGBT输出的波形(可能需要检测相位和波纹)
  3. 过零饱和电压

术语

LDO: Low dropout, A DC linear voltage regulator which can operate with a very small input/output differential voltage.

VREG: Voltage Regulator. 稳压器。

VREF: Voltage Reference. 参考电压

ESD: Electrostatic Discharge, 静电放电。

参考

  1. 《TMS320F28004x 微控制器》

pthread报错

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <thread>
using namespce std;

void hello(){
cout << "hello concurent world!";
}

int main (int argc, char * argv[]){
thread t(hello);
t.join();
return 0;
}

这个小例子直接用make编译是无法通过的。报错如下:

1
2
3
4
5
/tmp/ccYB66pt.o:在函数‘std::thread::thread<void (&)()>(void (&)())’中:
1-1.cpp:(.text._ZNSt6threadC2IRFvvEJEEEOT_DpOT0_[_ZNSt6threadC5IRFvvEJEEEOT_DpOT0_]+0x21):对‘pthread_create’未定义的引用
collect2: 错误:ld 返回 1
<builtin>: recipe for target '1-1' failed
make: *** [1-1] Error 1

解决方法是在编译的时候加上 -lpthread 参数。这个类用到posix实现的线程了。

1
2
g++ -o test test.cpp -lpthread
./test

结果输出:

1
hello concurent world!

参考

  1. c++使用thread类时编译出错,对‘pthread_create’未定义的引用

通过在Linux上编写代码,计算求解ADAU1772在 输入时钟(MCLK Input)为16.6MHz时,如何设置内部的4个参数,以达到符合输出时钟要求的目的。

据《ADAU1772》和SigmaStudio,1772 Codec 内部可修改的参数有 输入时钟分频(Input Clock Divider)、整数设置(Integer Setting)、分子(Numerator) 和 分母(Denominator)四个。

目标输出时钟(VCO Output) 是 24.576MHz。

原公式

以下为《ADAU1772》第30页中,关于PLL计算的公式描述:

image-20210706002255187

以下为SigmaStudio中的PLL设定界面参数设定:

image-20210706002412136

代码编写

注意:本代码在Linux上,以C++17的版本进行编译运行。

编译代码如下:

1
g++ main.cpp -std=c++17 -lpthread

在编写代码时,考虑到SigmaStudio和数据手册之间可能存在表述差异,因此计算PLL的源代码中,也包含了开启 1/2 系数的宏定义 #define HALFCOFF 1 ,具体代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/*---------------------------------------------------------
* HEADER FILES
*-------------------------------------------------------*/
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <thread>

using namespace std;
/*---------------------------------------------------------
* MACRO DEFINITION
*-------------------------------------------------------*/
#define ACCURACY 1000000000 //输出时钟精度,小数点后9个0
// #define HALFCOFF 1 //打开1/2系数进行计算,SigmaStudio图示中有该系数,但《ADAU1772》数据手册中没有该系数

/*---------------------------------------------------------
* MACRO DEFINITION FOR DEBUG
*-------------------------------------------------------*/
// #define DEBUG_MODE //Debug模式


/*---------------------------------------------------------
* DATA TYPES
*-------------------------------------------------------*/
typedef double CLK; //数据类型_时钟
typedef unsigned short COFF; //数据类型_系数


/*---------------------------------------------------------
* FILE DOMAIN DATA DECLARATION
*-------------------------------------------------------*/
CLK CLK_IN = 16.6; //输入时钟
CLK CLK_OUT = 24.576; //输出时钟

struct TargetCofficient {
COFF Numerator;
COFF Denominator;
};

COFF Maxiator = 65535;
COFF InputClockDivider = 4;
COFF IntegerSetting = 8;

/*---------------------------------------------------------
* FUNCTIONS DECLARATION
*-------------------------------------------------------*/
int isSafe(COFF, COFF); //判断系数的分子和分母相除是否满足要求
int isOK(CLK); //判断输出结果是否符合输出时钟的精度要求
int CofficientCalculate(CLK, COFF, COFF); //计算

void ICD1(void); //子线程
void ICD2(void); //子线程
void ICD3(void); //子线程
void ICD4(void); //子线程
void SysPrintf(void);

/*---------------------------------------------------------
* MAIN FUNCTIONS
*-------------------------------------------------------*/
int main(){

cout << "SYSTEM: Procedure starts." << endl;
thread thread1(ICD1);
thread thread2(ICD2);
thread thread3(ICD3);
thread thread4(ICD4);

thread1.join();
thread2.join();
thread3.join();
thread4.join();

cout << "SYSTEM: Procedure ends up." << endl;
return 0;
}


/*---------------------------------------------------------
* FUNCTIONS DEFINITION
*-------------------------------------------------------*/
int isSafe(COFF N, COFF D){
double result = (double)N / (double)D;
if( (result >= 0.1) && (result <= 0.9) ) return 1; //判断系数是否满足要求,满足则返回1
else return 0;
}

int isOK(CLK clock){
CLK integerClock , fractClock;
fractClock = modf(clock , &integerClock); //分别取出整数和小数部分

if( ((int)(fractClock * ACCURACY) == (int)(576/(double)1000 * ACCURACY)) && ((int)integerClock == (int)CLK_OUT) ) { //如果小数点精度满足要求,且整数部分相同
return 1; //则返回1
}
else return 0;
}

int CofficientCalculate(CLK ClockInput, COFF ICD, COFF IS){
CLK tempCLK;

for(COFF i = 0; i < Maxiator; i++){ //分母
for(COFF j = 0; j < Maxiator; j++){ //分子
if(isSafe(j, i)){
#ifdef HALFCOFF
tempCLK = ClockInput /(double)ICD * ((double)IS + ((double)j/(double)i)) *1/2; //有系数时
#else
tempCLK = ClockInput /(double)ICD * ((double)IS + ((double)j/(double)i)) ; //无系数时
#endif

#ifdef DEBUG_MODE
cout << "SYSTEM:IDC = " << ICD << ", IS = " << IS << hex <<", Numerator = 0x"<< j << ", Denominator = 0x" << i << ", OutputClock = " << tempCLK << endl;
#endif
}
else continue;

if( isOK(tempCLK)) {
cout << "SYSTEM:IDC = " << ICD << ", IS = " << IS << hex <<", Numerator = 0x"<< j << ", Denominator = 0x" << i << ", OutputClock = " << tempCLK << endl;
}
}
}
return 0;
}


/*---------------------------------------------------------
* THREAD _ CALCULATOR
*-------------------------------------------------------*/
void ICD1(void){
for(COFF enumIS = 2; enumIS <= IntegerSetting; enumIS++) CofficientCalculate(CLK_IN , 1, enumIS);
}

void ICD2(void){
for(COFF enumIS = 2; enumIS <= IntegerSetting; enumIS++) CofficientCalculate(CLK_IN , 2, enumIS);
}

void ICD3(void){
for(COFF enumIS = 2; enumIS <= IntegerSetting; enumIS++) CofficientCalculate(CLK_IN , 3, enumIS);
}

void ICD4(void){
for(COFF enumIS = 2; enumIS <= IntegerSetting; enumIS++) CofficientCalculate(CLK_IN , 4, enumIS);
}

void SysPrintf(void){
// while(1) cout << "Calculating...";
while(1){
printf("Calculating...");
printf("\r\003");
}
}


运行结果

通过自行编写的代码,遍历所有可更改的系数进行计算求解,取得小数点后9位精度,并且符合要求的系数如下(含1/2系数):

image-20210706001243698

以下为不含1/2系数的结果:

image-20210706001350802

经过手工计算,结果(小数点后9位)确实满足要求。