关于 gcc-arm-none-eabi 浮点数

Windows (mingw-w64-i686) hosted cross toolchains AArch32 bare-metal target (arm-none-eabi) https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/downloads 使用 arm-none-eabi-gcc 交叉编译链只能编译 ARM 架构的裸机系统(包括 ARM Linux 的 boot、kernel,不适用编译 Linux 应用 Application) 有关浮点数: 查看 gcc 的默认 define: $ ./arm-none-eabi-gcc -x c - -E -dM </dev/null|grep SOFT #define __SOFTFP__ 1 -mfloat-abi=name Specifies which floating-point ABI to use. Permissible values are: ‘soft’,‘softfp’ and ‘hard’. ABI,application binary interface (ABI),应用程序 二进制接口。 softfp 与 hard 都使用硬件 FPU 指令,但使用软件接口。hard 则使用硬件接口。所以 soft 与 softfp 兼容,他们与 hard 不兼容。 当 -mfloat-abi=soft 时 会定义 #define __SOFTFP__ 1 当为 softfp 或 hard 时,不会定义 __SOFTFP__ 而 __VFP_FP__ 总是定义的(#define __VFP_FP__ 1),即使 -mfloat-abi=soft 时。 源码头文件有这样的定义: #elif defined ( __GNUC__ ) #if defined (__VFP_FP__) && !defined(__SOFTFP__) #if (__FPU_PRESENT == 1) #define __FPU_USED 1 #else #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" #define __FPU_USED 0 #endif #else #define __FPU_USED 0 #endif 也就是说,在定义了 softfp 或 hard 时,当 __FPU_PRESENT 为 1 时,会定义 #define __FPU_USED 1,也就是要启用 FPU。__FPU_PRESENT 需要用户自己定义。 当使用 hard 或者 softfp 时,必须同时指定 FPU: -mfpu= option supports the following FPU types: vfp, vfpv3, vfpv3-fp16, vfpv3-d16, vfpv3-d16-fp16, vfpv3xd, vfpv3xd-fp16, neon, neon-fp16, vfpv4, vfpv4-d16, fpv4-sp-d16, neon-vfpv4, fp-armv8, neon-fp-armv8, and crypto-neon-fp-armv8. cortex-m4 选择:fpv4-sp-d...

YMODEM 协议

YMODEM 协议是一种高效的文件传输协议,通常用于调制解调器之间的数据传输。YMODEM 协议的产生是为了解决 XMODEM 协议存在的一些问题。相较于 XMODEM,YMODEM 协议在数据传输效率和稳定性上有所改进。 YMODEM 协议的主要特点包括: 数据包大小:YMODEM 协议支持以 1024 字节(或 1K)的块进行数据传输,这比 XMODEM 协议通常使用的 128 字节块要大得多,从而提高了传输效率。 错误纠正:YMODEM 协议采用循环冗余校验(CRC16)进行错误检测,并在发现错误时请求重发数据块,以确保数据的正确传输。 批处理模式:YMODEM 协议支持批处理模式,允许使用单个命令传输多个文件,这在传输大量文件时非常有用。 文件名传输:在发送文件数据之前,YMODEM 协议会先发送文件名和文件大小等信息,以便接收方能够正确地保存文件。 YMODEM 协议中定义了几种关键字: 关键字 值 说明 SOH 0x01 协议头(128 bytes 类型) STX 0x02 协议头(1K 类型) EOT 0x04 传输结束 ACK 0x06 接收响应 NAK 0x15 失败响应 CAN 0x18 取消传输 C 0x43 开启文件传输 CPMEOF 0x1A 数据补齐填充字符(^Z,控制字符 Z) YMODEM 传输协议: SOH [index] [index2] [128 bytes data] [CRC-hi] [CRC-lo] STX [index] [index2] [1024 bytes data] [CRC-hi] [CRC-lo] index 是帧序号,0 ~ 255,传输时递增。 index2 是index取反,也即:index2 = ~index = 255 - index crc16 校验数据域 [data] 在 YMODEM 协议的基本流程中,发送方会先发送一个起始帧,其中包含文件名和文件大小等信息。接收方在收到起始帧后,会发送一个确认信号(ACK)。然后,发送方开始以 1024 字节的块发送文件数据,每发送一个数据块后都会等待接收方的 ACK 信号。如果接收方成功接收到数据块并通过 CRC 校验,则发送 ACK 信号;否则,发送否定确认信号(NAK)请求重发。当文件传输完成后,发送方会发送一个结束帧(EOT),接收方在收到结束帧后会再次发送 ACK 信号进行确认。 交互序列图: 传输时先发送一个 128 字节的文件信息块,将文件名和文件大小发送给设备。 SOH 00 FF [filename] [filesize] [NULL] CRCH CRCL [filename] 文件名,如文件名 foo.c,它在数据帧中存放格式为:66 6F 6F 2E 63 00 [filesize] 文件大小,例如大小为 400 bytes,它在数据帧的存放格式为:34 30 30 00,即 “400”。(不同的软件可能有所却别) [NULL] 表示剩下的字节都用 00 填充 传输文件内容时,如果文件数据的最后剩余的数据在 128 ~ 1024 之间,则还是使用 STX 的 1024 字节传输;如果文件大小小于等于 128 字节,则选择 SOH 数据帧用 128 字节来传输数据。若数据不足一帧,用 CPMEOF 来填充。 附: XMODEM/YMODEM 协议: http://pauillac.inria.fr/~doligez/zmodem/ymodem.txt ZMODEM 协议: http://gallium.inria.fr/~doligez/zmodem/zmodem.t...

矿石检波器

1874 年,卡尔·费迪南德·布劳恩发现了某些天然矿石具有单向导通的特性,这可以被视为人类第一次发现半导体的整流特性,也是矿石检波二极管最早的雏形。随后,在 1894 年,贾格迪什·钱德拉·博斯利用方铅矿的单向导电性,制成了世界上第一个检波器——矿石检波器。英文叫:crystal detector,又叫:cat's whisker radio detector(猫须检波器),因为它是用一根细金属丝,与方铅矿进行接触,利用接触点的单向导电性进行检波的。 早期人们并没有完全理解矿石检波器的内在机理,直到 20 世纪 30 年代,人们才逐渐认识到矿石检波器实际上是利用金属-半导体接触点形成的肖特基势垒具有的单向导电性进行检波的。 肖特基势垒具有单向导电性的原理是基于金属与半导体(通常是N型半导体)接触时形成的势垒。当金属与 N 型半导体接触时,由于金属的功函数通常高于半导体的功函数,电子会从半导体流向金属,直到两者的费米能级相等。这个过程会在半导体表面形成一层正的空间电荷区,同时产生一个由半导体指向金属的内建电场。 这个内建电场会阻止电子从金属流向半导体,从而形成肖特基势垒。此时,半导体一侧的能带会向上弯曲,形成势垒高度。这个势垒高度决定了电子从金属流向半导体的难易程度。 在正向偏压下(即金属接正电压,半导体接负电压),内建电场会被削弱,半导体一侧的势垒高度降低,从而允许电子从金属流向半导体,形成正向电流。此时,肖特基势垒表现出单向导电性。 反之,在反向偏压下,内建电场会增强,势垒高度增加,电子从半导体流向金属的难度增大,因此反向电流很小。这就是肖特基势垒具有单向导电性的原理。 需要注意的是,肖特基势垒的单向导电性与 PN 结二极管有所不同。在 PN 结二极管中,正向偏压下是由于 P 区和 N 区的多数载流子相互扩散而形成电流;而在肖特基势垒中,正向电流主要是由于金属中的电子进入半导体的导带而形成的。因此,肖特基二极管通常具有更低的正向压降和更快的开关速度。 矿石检波二极管在无线电技术的发展过程中发挥了重要作用。例如,在 1900 年,美国人格林里夫·惠特勒·皮卡德基于矿石检波器成功制造了世界上第一个矿石收音机,这为无线电广播的迅速普及奠定了基础。此外,在无线电通信、电视接收等领域,矿石检波二极管也得到了广泛应用。 矿石检波器的工作原理是基于其单向导电性。当无线电波通过矿石检波器时,矿石会只允许电流在一个方向上通过,从而将无线电信号中的高频成分滤除,只保留音频信号。这样,矿石检波器就能将无线电波转换为可听的声音信号,通过耳机或扬声器播放出来。 除了方铅矿,具有单向导电性的矿石还有黄铁矿**、**硫化锌等。需要注意,这些矿石的导电性能可能受到多种因素的影响,如矿石的纯度、颗粒大小、温度等。因此,在实际应用中,可能需要对矿石进行一定的处理或选择,以获得最佳的导电效果。 矿石检波器有固定矿石检波器和活动矿石检波器两种类型。固定矿石检波器的矿石是固定的,无法调整其位置或压力。而活动矿石检波器则允许通过调整矿石的位置或压力来改变其单向导电性,以获得最佳的检波效果。 矿石检波器是矿石收音机的重要组成部分,矿石收音机是一种最简单的无线电接收装置,主要用于接收中波公众无线电广播。这种收音机无需电源,节能环保,而且可以用来测试天线或地线的效率,引导初学者和小朋友进入无线电广播的天地。尽管现代的无线电接收设备已经更加先进和稳定,但矿石检波器作为电子技术的早期应用之一,在无线电发展史上仍然具有重要的地位。...

场效应管

场效应管(Field Effect Transistor,FET)也是 Transistor,而且基本形式也是三个脚,那它是不是三极管(Transistor)的一种呢? "Transistor" 这个词的英文原意是由 "transfer" 和 "resistor" 两个词组合而成的。"transfer" 表示转移或传送,而 "resistor" 表示电阻器。因此,"transistor" 的字面意思是“转移电阻器”或“传送电阻器”。然而,在电子学中,"transistor" 并不是真的用来“转移电阻”的。实际上,晶体管(transistor)是一种半导体器件,用于放大或开关电子信号。晶体管通过控制输入电流或电压来控制输出电流,从而实现信号的放大或开关功能。所以,通常晶体管特指由电流放大作用的晶体三极管(也称双极型晶体管),在更广泛的语境中,Transistor 可用来指代各种类型的晶体管,而不仅限于三极管。 场效应管是一种电压控制型半导体器件,也称为单极型晶体管。它依靠半导体中的多数载流子导电,并利用控制输入回路的电场效应来控制输出回路的电流。FET 具有输入电阻高、噪声小、功耗低、动态范围大、易于集成、没有二次击穿现象、安全工作区域宽等优点,现已成为双极型晶体管和功率晶体管的强大竞争者。 上边提到了两个概念:单极型晶体管与双极型晶体管。那么这里的“极型”又是什么意思呢?它通常指的是半导体材料中载流子(电子和空穴)的类型以及它们如何响应外部电场或电压。单极型晶体管和双极性晶体管(双极型晶体管)是两种不同类型的晶体管,它们在工作原理、结构和应用方面有所不同。 单极型晶体管(Unipolar Transistor): 单极型晶体管主要依靠一种载流子(要么是电子,要么是空穴)来导电。 场效应管(FET)就是一种单极型晶体管。在场效应管中,电流是通过半导体中的多数载流子(在 N 型半导体中是电子,在 P 型半导体中是空穴)流动的。 FET 通过改变栅极(Gate)与源极(Source)之间的电压来控制沟道的导电性,从而控制漏极(Drain)与源极之间的电流。 双极性晶体管(Bipolar Transistor): 双极性晶体管同时利用电子和空穴两种载流子来导电。 常见的双极性晶体管有 NPN 型和 PNP 型两种。在这两种晶体管中,都有两个 PN 结,因此得名“双极”。 双极性晶体管通过控制基极(Base)与发射极(Emitter)之间的电流来控制集电极(Collector)与发射极之间的电流。这种控制作用是通过 PN 结的放大效应实现的。 简而言之,“极型”在这里指的是晶体管中参与导电的载流子类型(电子或空穴),以及晶体管结构中所涉及的 PN 结的数量和类型。单极型晶体管主要依赖一种载流子,而双极性晶体管则同时利用电子和空穴。 FET 主要有两种类型:结型场效应管(Junction FET,JFET)和金属-氧化物半导体场效应管(Metal-Oxide Semiconductor FET,MOSFET)。 FET 的工作原理是通过控制栅极(Gate)与源极(Source)之间的电压(即栅源电压 $V_{GS}$),进而改变漏极(Drain)与源极之间的电流(即漏源电流 $I_{DS}$)。当栅源电压为零时,由于 P 型半导体和 N 型半导体在空间电荷分布上的差别,会在内部产生一个电动势,这个电动势会阻止外部电流通过,此时 FET 处于截止状态。当栅源电压增加时,会吸引更多的载流子到栅极下方,形成一个导电沟道,此时 FET 开始导通,漏源电流会随着栅源电压的增加而增加。 FET 的特性包括高输入阻抗、低噪声、低功耗、高速度等,这些特性使得 FET 在模拟电路、数字电路、功率电路等领域都有广泛的应用。例如,FET 可以用作放大器、开关、振荡器、滤波器等电路元件,也可以用于制造传感器、存储器等电子器件。 理解场效应晶体管,先从 JFET 开始。 与三极管类似,箭头画在栅极 G,总是指向 N 型半导体,这是用来区分电路符号是 N 沟道还是 P 沟道的。 结型场效应晶体管(Junction Field-Effect Transistor,JFET):JFET 是由 PN 结栅极(G)与源极(S)和漏极(D)构成的一种具有放大功能的三端有源器件。其工作原理就是通过电压改变沟道的导电性来实现对输出电流的控制。 在一块 N 型半导体上制作两个高掺杂的 P 区并将它们连接在一起,所引出的电极称为栅极 G(Gate),N 型半导体两端分别引出两个电极,分别称为漏极 D(Drain),源极 S(Source)。从名字上来理解也是很通俗的,场效应晶体管好比是水空头,源极 S 是水的来源(进水口),漏极 D 是排水(Drain)口(出水口),而栅极 G 则是阀门。当改变 $V_{GS}$ 时,沟道的宽窄发生了变化,当电压达到一定程度,阀门彻底关闭,阻断电流。 场效应管是一种单极型晶体管,它只有一个 PN 结,在零偏压的状态下, 它是导通的,如果在其栅极(G)和源极(S)之间加上一个反向偏压(称栅极偏压)在反向电场作用下 PN 结变厚(称耗尽区)沟道变窄,其漏极电流将变小(如图 b) ;反向偏压达到一定时, 耗尽区将完全沟道“夹断”,此时,场效应管进入截止状态(如图 c),此时的反向偏压我们称之为夹断电压 $V_p$。 夹断电压($V_p$)与 $V_{GS}$(栅源电压)之间的关系在场效应管(特别是结型场效应管(JFET)和耗尽型绝缘栅型场效应管(MOSFET))的工作原理中非常重要。 对于这两种类型的场效应管,当 $V_{GS} = 0$ 时,已经存在导电沟道。随着 $V_{GS}$ 的负向增大(对于 N 沟道器件)或正向减小(对于 P 沟道器件),沟道逐渐变窄,沟道电阻增大,漏极电流 $I_D$ 逐渐减小。当 $V_{GS}$ 达到某个特定值时,沟道会完全夹断,此时 $I_D$ 几乎为 0。这个特定的 $V_{GS}$ 值就是夹断电压 $V_p$。 换句话说,夹断电压 $V_p$ 是使得沟道完全夹断、漏极电流 $I_D$几乎为 0 的 $V_{GS}$ 值。在 $V_{GS}$ 达到 $V_p$ 之前,场效应管处于导通状态,沟道中存在电流;当 $V_{GS}$ 达到或超过 $V_p$ 时,场效应管进入夹断区,沟道被夹断,电流几乎无法通过。 需要注意的是,对于增强型绝缘栅型场效应管(如增强型MOSFET),在 $V_{GS} = 0$ 时沟道是不存在的,需要正的 $V_{GS}$(对于 N 沟道器件)或负的 $V_{GS}$(对于 P 沟道器件)来开启沟道。因此,夹断电压的概念对于增强型器件来说并不完全适用,而是用开启电压或阈值电压来描述其特性。 对于结型场效应晶体管(JFET),最常见到的是耗尽型 JFET(D-JFET),即在 0 栅偏压时就存在有沟道的 JFET;一般,不使用增强型 JFET(E-JFET)——在 0 栅偏压时不存在沟道的 JFET。这主要是由于长沟道 E-JFET 在使用时较难以产生出导电的沟道、从而导通性能不好的缘故。不过,由于高速、低功耗电路中应用的需要,有时也需要采用 E-JFET。 JFET 导电的沟道在体内。耗尽型和增强型这两种晶体管在工艺和结构上的差别主要在于其沟道区的掺杂浓度和厚度。D-JFET 的沟道的掺杂浓度较高、厚度较大,以致于栅 PN 结的内建电压不能把沟道完全耗尽;而 E-JFET 的沟道的掺杂浓度较低、厚度较小,则栅 PN 结的内建电压即可把沟道完全耗尽。 但是,对于短沟道 E-JFET,情况则有所不同,因为这种晶体管的漏极电压可以作用到源极附近,使得沟道中的势垒降低,所以能够形成导电沟道。这种 E-JFET 从本质上来说也就是静电感应晶体管。 金属-氧化物半导体场效应管(Metal-Oxide Semiconductor FET,MOSFET)它的结构主要由金属、氧化物(通常为 $SiO_2$ 或 SiN)和半导体材料构成。 这种晶体管具有源极(Source)、栅极(Gate)、漏极(Drain)和主体(Body,也称衬底)四个端子。通常, MOSFET 的主体与源极端子会连接在一起,从而使其在三端模式下工作,与常规场效应晶体管相似。 MOSFET 的工作原理是通过控制栅极与源极之间的电压,即栅源电压($V_{GS}$),来改变漏极与源极之间的电流,即漏源电流($I_{DS}$)。具体地说,当在栅极和源极之间施加适当的电压时,会在半导体中形成一个导电沟道,使电流能够从源极流向漏极。沟道的形成和宽度受到栅极电压的控制,从而实现了对电流的调控。 原理图符号相对来说复杂了些,但很类似,不同的是箭头画在了衬底极,相同的是总是指向 N 型半导体(沟道或衬底),可以用来区分电路符号是 N 沟道还是 P 沟道的。二极管可以理解为 D 与衬底形成的 PN 结。 MOSFET 和 JFET 都是场效应晶体管(FET),不过,它们在结构和工作原理上存在一些明显的差异: 结构:JFET 是一种结型场效应晶体管,具有三个端子:源极、漏极和栅极,且其栅极是反向偏置的。而 MOSFET 是金属氧化物半导体场效应晶体管,通常具有四个端子,包括源极、漏极、栅极和衬底(尽管在实际应用中,衬底通常与源极连接,因此有时也将其视为三端器件)。 工作原理:在工作原理上,JFET 只能在耗尽模式下工作,即通过控制栅极电压来耗尽沟道中的载流子,从而控制漏极和源极之间的电流。而 MOSFET 既可以在耗尽模式下工作,也可以在增强模式下工作。在增强模式下,当栅极电压超过阈值电压时,会在沟道中形成反型层,从而允许电流从源极流向漏极。 输入阻抗:JFET 和 MOSFET 都具有很高的输入阻抗,但 MOSFET 的输入阻抗通常比 JFET 更高,这得益于金属氧化物绝缘体在栅极和沟道之间提供的高电阻。 栅极泄漏电流:虽然 JFET 和 MOSFET 的栅极泄漏电流都相对较小,但 MOSFET 的栅极泄漏电流通常比 JFET 更小,这有助于降低功耗和提高器件的稳定性。 总的来说,MOSFET 和 JFET 在结构、工作原理、输入阻抗和栅极泄漏电流等方面存在差异。这些差异使得 MOSFET 在某些应用场合(如低功耗、高输入阻抗和需要增强模式操作等)具有优势,而 JFET 则在其他应用场合(如简单结构和较低成本等)具有优势。 由于 MOSFET 具有的多种优点,如输入电阻高、噪声小、功耗低、动态范围大、易于集成、没有二次击穿现象以及安全工作区域宽等。这些特性使得 MOSFET 在电子开关领域具有广泛的应用,并已成为功率晶体管和双极型晶体管的有力竞争...

晶体二极管

在现代电子设备中,无数微小的组件共同工作,才使得我们的生活如此便捷。其中,晶体二极管(Crystal Diode)或更常见的称呼——二极管(Diode),是一种至关重要的电子元件。它的发明改变了电子技术的发展方向,使得电子设备变得更小、更快、更可靠。 在晶体二极管发明之前,主要使用的是真空电子管作为二极管的替代品。真空电子管在早期的电子设备中扮演了重要角色,用于放大电信号和进行整流等操作。然而,真空电子管存在一些显著的缺点,如制作困难、体积庞大、耗能高以及使用寿命相对较短。 正因为真空电子管的这些不足,业界开始迫切期望能够出现一种更为先进、实用的电子管替代品。这种需求推动了半导体技术的研究和发展,最终导致了晶体二极管的诞生。晶体二极管的出现不仅克服了真空电子管的缺点,而且具有更小的体积、更低的能耗和更长的使用寿命,极大地推动了电子技术的进步和电子设备的发展。 晶体二极管的起源可以追溯到 20 世纪初的“晶体检波器”时期。然而,真正的二极管——具有明显单向导电性的设备——是在 20 世纪 40 年代才被发明出来的。最为人们熟知的二极管类型是 1947 年由贝尔实验室的科学家沃尔特·布拉顿、约翰·巴丁和威廉·肖克莱发明的点接触型锗二极管。这一突破性的发明为后来的晶体管,以及集成电路的发展铺平了道路,他们也因此获得了 1956 年的诺贝尔物理学奖。晶体二极管之所以被称为“晶体”,是因为它的主要构成材料是晶体,如单晶硅或单晶锗。这些晶体材料具有特殊的电学性质,使得晶体二极管能够具有单向导电性,即只允许电流从一个方向通过。 二极管符号中箭头(三角形顶端)指向 N N 型半导体(N 为 Negative 的字头,由于电子带负电荷而得此名):掺入少量杂质磷元素(或锑元素)的硅晶体(或锗晶体)中,由于半导体原子(如硅原子)被杂质原子取代,磷原子外层的五个外层电子的其中四个与周围的半导体原子形成共价键,多出的一个电子几乎不受束缚,较为容易地成为自由电子。于是,N型半导体就成为了含电子浓度较高的半导体,其导电性主要是因为自由电子导电。 P 型半导体(P 为 Positive 的字头,由于空穴带正电而得此名):掺入少量杂质硼元素(或铟元素)的硅晶体(或锗晶体)中,由于半导体原子(如硅原子)被杂质原子取代,硼原子外层的三个外层电子与周围的半导体原子形成共价键的时候,会产生一个“空穴”,这个空穴可能吸引束缚电子来“填充”,使得硼原子成为带负电的离子。这样,这类半导体由于含有较高浓度的“空穴”(“相当于”正电荷),成为能够导电的物质。 PN 结:PN 结是由一个 N 型掺杂区和一个 P 型掺杂区紧密接触所构成的,其接触界面称为冶金结界面。 在一块完整的硅片上,用不同的掺杂工艺使其一边形成 N 型半导体,另一边形成 P 型半导体,我们称两种半导体的交界面附近的区域为 PN 结。 在 P 型半导体和 N 型半导体结合后,由于 N 型区内自由电子为多子,空穴几乎为零称为少子,而 P 型区内空穴为多子,自由电子为少子,在它们的交界处就出现了电子和空穴的浓度差。由于自由电子和空穴浓度差的原因,有一些电子从 N 型区向 P 型区扩散,也有一些空穴要从 P 型区向 N 型区扩散。它们扩散的结果就使 P 区一边失去空穴,留下了带负电的杂质离子,N 区一边失去电子,留下了带正电的杂质离子。开路中半导体中的离子不能任意移动,因此不参与导电。这些不能移动的带电粒子在 P 和 N 区交界面附近,形成了一个空间电荷区,空间电荷区的薄厚和掺杂物浓度有关。 在空间电荷区形成后,由于正负电荷之间的相互作用,在空间电荷区形成了内电场,其方向是从带正电的 N 区指向带负电的 P 区。显然,这个电场的方向与载流子扩散运动的方向相反,阻止扩散。另一方面,这个电场将使 N 区的少数载流子空穴向 P 区漂移,使 P 区的少数载流子电子向 N 区漂移,漂移运动的方向正好与扩散运动的方向相反。从 N 区漂移到 P 区的空穴补充了原来交界面上 P 区所失去的空穴,从 P 区漂移到 N 区的电子补充了原来交界面上 N 区所失去的电子,这就使空间电荷减少,内电场减弱。因此,漂移运动的结果是使空间电荷区变窄,扩散运动加强。最后,多子的扩散和少子的漂移达到动态平衡。在 P 型半导体和 N 型半导体的结合面两侧,留下离子薄层,这个离子薄层形成的空间电荷区称为 PN 结。PN 结的内电场方向由 N 区指向 P 区。在空间电荷区,由于缺少多子,所以也称耗尽层。 从 PN 结的形成原理可以看出,要想让 PN 结导通形成电流,必须消除其空间电荷区的内部电场的阻力。很显然,给它加一个反方向的更大的电场,即 P 区接外加电源的正极,N 区接负极,就可以抵消其内部自建电场,使载流子可以继续运动,从而形成线性的正向电流。而外加反向电压则相当于内建电场的阻力更大,PN 结不能导通,仅有极微弱的反向电流(由少数载流子的漂移运动形成,因少子数量有限,电流饱和)。当反向电压增大至某一数值时,因少子的数量和能量都增大,会碰撞破坏内部的共价键,使原来被束缚的电子和空穴被释放出来,不断增大电流,最终PN结将被击穿(变为导体)损坏,反向电流急剧增大。 这就是 PN 结的特性(单向导通、反向饱和漏电或击穿导体),也是晶体管和集成电路最基础、最重要的物理原理,所有以晶体管为基础的复杂电路的分析都离不开它。比如二极管就是基于 PN 结的单向导通原理工作的;而一个 PNP 结构则可以形成一个三极管,里面包含了两个 PN 结。二极管和三极管都是电子电路里面最基本的元件。 二极管有许多种类,根据材料、结构、功能等不同的分类标准,可以将其分为不同类型。 根据材料,二极管主要分为硅二极管和锗二极管。硅二极管的工作温度范围更广,稳定性更好,因此在现代电子设备中更为常见。锗二极管的正向导通电压通常比硅二极管低。 根据结构,二极管可以分为点接触型、面接触型和平面型等。不同类型的二极管在电流容量、工作速度、耐压能力等方面有所不同。 根据功能,二极管还可以分为整流二极管、检波二极管、稳压二极管、开关二极管、发光二极管(LED)等。这些二极管在电子设备中发挥着各种各样的作用,如电源整流、信号检测、电压稳定、电路开关、指示和照明等。 晶体二极管作为现代电子技术的基石之一,其重要性不言而喻。从无线电、电视、电脑,到手机、LED照明、太阳能电池板,无数我们日常生活中离不开的电子设备,其内部都有二极管的身影。随着科技的不断发展,二极管也在不断进步,更小、更快、更节能的二极管正在不断被研发出来,为我们的未来带来更多可能...

18650 锂电池

18650 是锂离子电池的鼻祖——日本 SONY 公司当年为了节省成本而定下的一种标准性的锂离子电池型号,其中 18 表示直径为 18mm,65 表示长度为 65mm,0 表示为圆柱形电池。 锂离子电池的能量密度很高,它的容量是同重量的镍氢电池的 1.5 ~ 2 倍,而且具有很低的自放电率。此外,几乎没有“记忆效应”以及不含有毒物质等优点也是锂离子电池广泛应用的重要原因。 锂电池标 3.7V 或 4.2V 都是一样。只是生产厂商标注的不一样而已。3.7V 指电池使用过程中放电的平台电压(即典型电压),而 4.2 伏指的是充电满电时的电压。常见的可充 18650 锂电池,电压都是标 3.6 或者 3.7V,充满电的时候是 4.2V,这跟电量(容量)关系不大,18650 电池主流的容量从 1800mAh 到 2600mAh,(18650 动力电池容量多在 2200 ~ 2600mAh),主流的容量甚至有标 3500 或 4000mAh 以上的。 一般认为将锂电池的空载电压放到 3.0V 以下就认为电用完了(具体值需要看电池保护板的门限值,比如有低到 2.8V,也有 3.2V 的)。大部分锂电池放电是不能将空载电压放到 3.2 V以下的,否则过度放电会损害电池(一般市场上的锂电池基本都是带保护板才使用的,因此过度放电还会导致保护板检测不到电池,从而无法给电池充电)。4.2V 是电池充电的最高限制电压,一般认为将锂电池的空载电压充到 4.2V 就认为电充满了。电池充电过程中,电池的电压在 3.7V 逐渐上升到 4.2V,锂电池充电不能将空载电压充到 4.2V 以上,否则也会损害电池,这就是锂电池特殊的地方。 锂离子电池的能量密度很高,它的容量是同重量的镍氢电池的 1.5 ~ 2 倍,而且具有很低的自放电率。18650 电池寿命理论为循环充电 1000 次。 锂离子电池的工作原理就是指其充放电原理。当对电池进行充电时,电池的正极上有锂离子生成,生成的锂离子经过电解液运动到负极。而作为负极的碳呈层状结构,它有很多微孔,到达负极的锂离子就嵌入到碳层的微孔中,嵌入的锂离子越多,充电容量越高。 同样道理,当对电池进行放电时(即使用电池的过程),嵌在负极碳层中的锂离子脱出,又运动回到正极。回到正极的锂离子越多,放电容量越高。通常所说的电池容量指的就是放电容...

Modbus 通信协议

Modbus 是一个请求/应答协议,是由 Modicon(现为施耐德电气公司的一个品牌)在 1979 年发明的,是全球第一个真正用于工业现场的总线协议。 Modbus 采用主站询问或命令的方式通信,从站不能主动上报。只能通过增大主站轮询频率的办法增强实时性。 Modbus 的传送有 3 种模式:Modbus ASCII、Modbus RTU、Modbus TCP。 Modbus ASCII 用 Hex 字符表示值,例如要传送一个字节值 0x2A 则发送两个字节字符 "2A"。 帧格式: Modbus RTU 帧格式: CRC 校验是 16 位的,低字节在前。 不同类型帧的数据域定义是不同的,几种情况: 读寄存器时主机的数据域: 寄存器地址、寄存器个数等数值按高字节在前方式传输。 读寄存器时从机正确应答的数据域: 寄存器是 16 位的,所以 数据字节数 = 寄存器个数 * 2 从机异常应答的数据域: 异常应答的功能码的最高位为1。 Modbus TCP 由于 TCP 是可靠传输,所以相比 RTU 格式没有 CRC 校验域。 帧格式: 传输标志:请求和响应传输过程中序列号 协议标志:默认为 0 长度:值为长度域后所有内容的字节数,同样地也是大端模式传输 单元标志:串行链路或其它总线上连接的远程从站识别码,通常是 0 Modbus RTU 与 Modbus TCP 的区...

Arduino 简介

Arduino(读音:Arr du ee no,大约是:阿杜- 依no)是一个源于意大利的开源电子原型平台,自 2005 年诞生以来,已经在全球范围内引领了一场硬件创新的革命。以其易用性、灵活性和开源的特性,Arduino 为艺术家、设计师、研究人员和业余爱好者提供了一个全新的工具,以实现他们的创意。 Arduino 的起源可以追溯到 2003 年,当时两名意大利教师 Massimo Banzi 和 David Cuartielles 为了给他们的学生们提供一个更容易实现交互项目的工具,开始设计一种简单的、价格适中的、易于使用的硬件平台。这个平台就是 Arduino 的雏形。 最初的 Arduino 板是由 Banzi、Cuartielles 以及西班牙籍学者 Javier Zagal 在他们的家乡 Ivrea 设计出来的,并在 2005 年正式发布。据说其名来源于 Banzi 经常光顾的一家酒吧的名字”di Re Arduino“。 随着时间的推移,Arduino 不断发展,推出了多种型号,如 Arduino Uno、Arduino Mega、Arduino Mini 等,适应了各种不同的应用场景。 目前的应用概况: 教育领域:在教育领域,Arduino 已成为许多学校和机构的必备工具。学生们使用 Arduino 进行各种实验,学习电子、编程和机器人技术,提高他们的创新能力。 艺术和设计领域:艺术家和设计师们利用 Arduino 创造出各种交互式装置和艺术作品,如动态雕塑、交互式服装等。 物联网:Arduino 在物联网领域的应用广泛,例如智能家居系统、环境监测站等。通过与传感器和其他设备的连接,Arduino 可以实现远程控制和数据收集。 机器人:Arduino 是许多机器人项目的核心组件,从简单的玩具机器人到复杂的自主导航机器人都可以看到 Arduino 的身影。 工业自动化:在工业自动化领域,Arduino 被用于控制和监测生产线上的设备和机器。例如,它可以用来控制机械臂的运动或监测温度和湿度等环境参数。 嵌入式系统开发:虽然 Arduino 主要用于快速原型制作,但它也可以作为嵌入式系统的开发平台。通过使用 Arduino,开发人员可以快速构建和测试嵌入式系统的硬件和软件。 健康和医疗设备:在健康和医疗设备领域,Arduino 可以用于开发各种可穿戴设备、健康监测设备和医疗诊断工具等。例如,通过使用 Arduino 和传感器,可以开发出用于监测心率、血压或血糖水平的设备。 娱乐产业:在娱乐产业中,Arduino 也被广泛应用于各种项目,如灯光秀、音乐设备和游戏控制器等。 从教育到工业,从艺术到娱乐,Arduino 的影响力无处不在。它不仅降低了硬件开发的门槛,让更多的人能够参与到创新的实践中来,同时也推动了开源硬件和物联网的发展。未来,随着技术的进步和应用场景的不断拓展,Arduino 将会在更多领域发挥其巨大的潜...

Arduino 硬件介绍

Arduino 是一款开源的电子原型平台,包括各种型号的 Arduino 板和相应的开发环境软件。Arduino 板具有简单易用的特点,能够读写数字或模拟输入/输出引脚、使用 USB 接口进行通信、通过编程控制各种电子设备和传感器等。 以下是 Arduino 的一些主要硬件特性: 处理器:Arduino 板搭载了各种型号的微控制器,如 ATmega328(在 Arduino Uno 上)或 ATmega2560(在 Arduino Mega 上)。这些微控制器是 Arduino 板的核心,负责执行用户上传的程序。当然了还有很多衍生的板子搭载了其他厂商的 MCU,比如 STM32 等。 数字 I/O 引脚:Arduino 板具有多个数字输入/输出引脚,这些引脚可以读取或写入数字信号,用于控制 LED、电机等设备或读取按钮、开关等输入信号。 模拟输入引脚:一些 Arduino 板还具有模拟输入引脚,可以读取模拟信号,如温度传感器的输出电压。这些引脚通常具有 10 位的分辨率,即可以读取 0 到 1023 之间的值。 USB 接口:大多数 Arduino 板都具有 USB 接口,用于与计算机进行通信和供电。通过 USB 接口,用户可以上传程序到 Arduino 板,也可以从 Arduino 板读取数据。 电源和复位引脚:Arduino 板还具有电源和复位引脚,用于给板子供电和在需要时复位微控制器。 扩展接口:一些 Arduino 板还具有扩展接口,如 ICSP 头或 SPI/I2C 接口,可以用于连接其他扩展板或模块。 Arduino 板的尺寸和形状各异,以适应不同的应用场景。例如,Arduino Uno 是最常见的型号之一,具有标准的 USB 接口和足够的 I/O 引脚,适合大多数初学者和项目。而 Arduino Mega 则具有更多的 I/O 引脚和更大的内存,适合需要更多控制和数据处理能力的项目。 除了标准的 Arduino 板外,还有许多其他型号和变种可供选择,如 Arduino Leonardo、Arduino Micro 等。这些板子具有不同的处理器、引脚配置和功能特性,以满足不同的需求和应用场...

Arduino 编程语言介绍

Arduino 使用的编程语言是建立在 C/C++ 基础上的。虽然 C++ 兼容 C 语言,但它们是两种语言,具有不同的特性。C 是一种面向过程的编程语言,而 C++ 则引入了面向对象的概念。 Arduino 语言实际上是一套基于 C/C++ 的嵌入式设备开发框架,它提供了丰富的库函数和应用程序编程接口(API),以简化硬件设备的驱动和编程。这些 API 是对底层单片机支持库的二次封装,隐藏了复杂的底层细节,使得不熟悉硬件的用户也能轻松上手。所以说 Arduino 使用的 C++ 也只是标准 C++ 的一个子集,不包括所有的 C++ 标准库,因为这些库可能会占用太多的内存或处理器时间。例如,它不支持类继承和模板。但是,它仍然提供了足够的功能来编写复杂的程序,并且可以与其他 C++ 代码进行交互。 在 Arduino 编程中,常用的关键字包括 if、else、for、switch、case、while 等,这些关键字用于实现条件选择、循环、分支等控制结构。此外,Arduino 还引入了一些特殊的函数和宏定义,如 pinMode()、digitalWrite()、analogRead() 等,用于配置引脚模式、读写数字信号和模拟信号等操作。 Arduino 编程的一个显著特点是其清晰明了的 API 和简化的语法。通过调用相应的库函数和 API,用户可以轻松地控制硬件设备的各种功能,如 LED 闪烁、传感器读取、电机控制等。这种简化的编程方式降低了学习难度,使得更多人能够参与到硬件开发的领域中来。 总结来说,Arduino 编程语言是一种基于 C/C++ 的嵌入式设备开发语言,通过提供丰富的库函数和 API,简化了硬件设备的驱动和编程过程。它使得不熟悉硬件的用户也能轻松上手,并且广泛应用于教育、艺术、物联网等领...