• CAN总线显隐性电平解析

    1、显隐性电平定义 CAN总线采用差分信号传输,通常情况下只需要两根信号线(CAN-H和CAN-L)就可以进行正常的通信。在干扰比较强的场合,还需要用到屏蔽地即CAN-G(主要功能是屏蔽干扰信号),CAN协议推荐用户使用屏蔽双绞线作为CAN总线的传输线。 隐性电平和显性电平是CAN总线上的两种互补的逻辑值。以下是对这两种电平的详细解释: 1.1 隐性电平 定义:隐性电平在逻辑层面表现为1,即当CAN总线上所有单元都输出隐性电平时,总线上才呈现隐性状态。 电压特性:典型地,当CAN总线为隐性(逻辑1)时,CAN_H和CAN_L的电平都维持在2.5V左右,此时它们之间的电位差Vdiff为0V。 功能:隐性电平用于表示总线上的空闲状态或某些特定的逻辑值。在CAN总线的通信过程中,如果没有节点正在发送显性电平,那么总线将保持隐性电平状态。 1.2 显性电平 定义:显性电平在逻辑层面表现为0,即当CAN总线上有任何一个单元输出显性电平时,总线就呈现显性状态。 电压特性:当CAN总线为显性(逻辑0)时,CAN_H和CAN_L的电平分别为3.5V和1.5V左右,此时它们之间的电位差Vdiff为2.0V左右。这个电位差是CAN总线差分传输机制的基础,用于区分显性电平和隐性电平。 功能:显性电平用于表示总线上的有效数据或控制信号。在CAN总线的通信过程中,当节点需要发送数据时,它会通过输出显性电平来将数据传输到总线上。由于显性电平可以覆盖隐性电平,因此当多个节点同时尝试发送数据时,具有最高优先级的节点(通常通过其ID号决定)将能够成功地将数据发送到总线上。 巧记:急急如律令,太上老君快显0。 下图是基于PicoScope示波器抓取的CAN波形,观察下CANH、CANL、CAN_DIFF(差分电压)的电压值。 2、线与机制 为什么CAN总线的显性电平(逻辑0,电位差Vdiff = 2.5V)能覆盖隐性电平(逻辑1,电位差Vdiff = 0V)? 线与机制:在CAN总线上,所有节点都是并联连接的。当某个节点输出显性电平时(即CAN_H的电平高于CAN_L的电平一定程度),它会将总线电平拉低,即使其他节点输出隐性电平,总线电平仍然保持低电平。这是因为显性电平是强驱动,而隐性电平是弱驱动,所以显性电平能够覆盖隐性电平。 3、显性电平和隐性电平的转换机制 3.1 发送过程 CAN控制器将CPU传来的信号转换为逻辑电平(即逻辑0-显性电平或者逻辑1-隐性电平)。CAN发射器接收逻辑电平之后,再将其转换为差分电平输出到CAN总线上。 3.2 接收过程 CAN接收器将CAN_H 和 CAN_L 线上传来的差分电平转换为逻辑电平输出到CAN控制器,CAN控制器再把该逻辑电平转化为相应的信号发送到CPU上。 3.3 电压差的重要性 在CAN总线上,逻辑0和1之间显著的电压差是通信可靠的保证。例如,高速CAN总线的显性电平定义为CAN_H=3.5V,CAN_L=1.5V,电压差为2V;而隐性电平定义为CAN_H=2.5V,CAN_L=2.5V,电压差为0V。 4、显性电平和隐性电平的应用场景 在现代汽车中,CAN总线已经广泛应用于各种电子系统,包括发动机管理系统、车身控制系统和安全气囊系统等。由于不同的汽车厂家和电子设备之间可能采用不同的CAN总线格式,这时就需要使用CAN转换器来进行信号转换,以实现各个系统之间的通信。

    前天 74浏览
  • CAN总线是数字信号,还是模拟信号?

    什么是can总线 CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO11898),是国际上应用最广泛的现场总线之一。在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。 CAN总线的特点 (1)多主机方式工作:网络上任意节点可在任意时刻其他节点发送数据,通信方式灵活;(2)网络上每个节点都有不同的优先级,可以满足实时性的要求;(3)采用非破坏性仲裁总线结构,当两个节点同时向网络上传送信息时,优先级高的优先传送;(4)传送方式有点对点、点对多点、点对全局广播三种;(5)通信距离可达6km;通信速率可达1MB/s;节点数可达110个;(6)采用的是短帧结构,每帧有8个有效字节;(7)具有可靠的检错机制,使得数据的出错率极低;(8)当发送的信息遭到破坏后,可自动重发;(9)节点在严重错误时,会自动切断与总线联系,以免影响总线上其他操作。 CAN总线原理 CAN总线以广播的方式从一个节点向另一个节点发送数据,当一个节点发送数据时,该节点的CPU把将要发送的数据和标识符发送给本节点的CAN芯片,并使其进入准备状态;一旦该CAN芯片收到总线分配,就变为发送报文状态,该CAN芯片将要发送的数据组成规定的报文格式发出。此时,网络中其他的节点都处于接收状态,所有节点都要先对其进行接收,通过检测来判断该报文是否是发给自己的。 由于CAN总线是面向内容的编址方案,因此容易构建控制系统对其灵活地进行配置,使其可以在不修改软硬件的情况下向CAN总线中加入新节点。 CAN总线的应用 CAN总线在组网和通信功能上的优点以及其高性价比据定了它在许多领域有广阔的应用前景和发展潜力。这些应用有些共同之处:CAN实际就是在现场起一个总线拓扑的计算机局域网的作用。不管在什么场合,它负担的是任一节点之间的实时通信,但是它具备结构简单、高速、抗干扰、可靠、价位低等优势。CAN总线最初是为汽车的电子控制系统而设计的,目前在欧洲生产的汽车中CAN的应用已非常普遍,不仅如此,这项技术已推广到火车、轮船等交通工具中。 (1)CAN总线技术的应用:国外知名汽车基本都已经采用了CAN总线技术,例如沃尔沃、林肯、奥迪、宝马等,而国内汽车品牌,例如奇瑞等公司也已经有几款车型应用了总线技术。CAN总线技术就是通过遍布车身的传感器,将汽车的各种行驶数据发送到“总线”上,在这个信息共享平台上,凡是需要这些数据的接收端都可以从“总线”上读取需要的信息,从而使汽车的各个系统协调运作、信息共享、保证车辆安全行驶、舒适和可靠。一般来说,越高档的车配备的CAN_BUS数量越多,价格也越高,如途安、帕萨特等车型当中都配备了多个CAN总线。 (2)汽车CAN总线节点ECU的硬件设计:汽车CAN总线研发的核心技术就是对带有CAN接口的ECU进行设计,其中ECU的CAN总线模块由CAN控制器和CAN收发器构成。CAN控制器执行完整的CAN协议,完成通讯功能,包括信息缓冲和接收滤波。CAN控制器与物理总线之间需CAN收发器作为接口,它实现CAN控制器与总线之间逻辑电平信号的转换。 (3)CAN总线在国内自主品牌汽车中的应用:由于受成本控制、技术实力等因素的限制,CAN_BUS总线技术一般都出现在国外高端汽车,在A级及以下级别车型当中,该项技术大多出现在合资品牌当中,如POLO、新宝来等。在自主品牌中,采用CAN总线技术的车型中很少,风云2则是其中的代表车型。风云2CAN总线技术,可以实现发动机、变速箱、ABS、车身、仪表及其他控制器的通讯,做到全车信息及时共享。在风云2的组合仪表盘当中,阶段里程、未关车门精确显示、安全带未系提醒等20多项信息全部可以显示,比同级产品增加一倍,这样增加了驾驶过程中的安全度。 can总线是数字信号还是模拟信号 can总线是数字信号,与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良好的性能及独特的设计,CAN总线越来越受到人们的重视。 模拟信号和数字信号之间的区别 模拟信号指幅度的取值是连续的(幅值可由无限个数值表示)。时间上连续的模拟信号包括连续变化的图像(电视、传真)信号等。时间上离散的模拟信号是一种抽样信号,它是对模拟信号每隔时间T抽样一次所得到的信号,虽然其波形在时间上是不连续的,但其幅度取值是连续的,所以仍是模拟信号。 数字信号指幅度的取值是离散的,幅值表示被限制在有限个数值之内。二进制码就是一种数字信号。二进制码受噪声的影响小,易于有数字电路进行处理,所以得到了广泛的应用。 模拟通信的优点是直观且容易实现,但存在两个主要缺点:(1)保密性差,模拟通信尤其是微波通信和有线明线通信,很容易被窃听。只要收到模拟信号,就容易得到通信内容。(2)抗干扰能力弱,电信号在沿线路的传输过程中会受到外界的和通信系统内部的各种噪声干扰,噪声和信号混合后难以分开,从而使得通信质量下降。线路越长,噪声的积累也就越多。 数字通信有如下优点:(1)加强了通信的保密性。语音信号经A/D变换后,可以先进行加密处理,再进行传输,在接收端解密后再经D/A变换还原成模拟信号。(2)提高了抗干扰能力,尤其在中继时,数字信号可以再生而消除噪声的积累。(3)传输差错可以控制,从而改善了传输质量。(4)便于使用现代数字信号处理技术来对数字信息进行处理。(5)可构建综合数字通信网,综合传递各种消息,使通信系统功能增强。但数字通信也存在缺点,例如:占用频带较宽,技术要求复杂,进行模/数转换时会带来量化误差。 数字通信系统传输的消息一般都是离散的,但也可能是连续的,若需要在数字通信系统中传诵模拟消息,则在发送段的信息源中应包括一个模—数转换装置,而在接收端的收信者中包括一个数—模转换装置。考虑到现在有大量的模拟通信系统这个事实,目前还常常需要它来传输数字信号。这就需要对其做些改造,或者加装数字终端设备。

    前天 42浏览
  • 【电机控制】PMSM无感FOC控制-双电阻以及三电阻电流采样法

    针对永磁同步电机双电阻以及三电阻电流采样的问题给出了具体的实现思路,双电阻采样通过限制电压的方式避免进入非观测区,三电阻采样则根据PWM波形,动态设置电流采样点、对PWM进行移相重构电机电流,以避免在非观测区采集不到准确电流的情况发生。 目录 1. 双电阻采样 1.1 双电阻采样原理 1.2 双电阻采样时刻分析 1.3 双电阻电流重构方法 2. 三电阻采样 2.1 三电阻采样原理 2.2 三电阻采样时刻分析 2.3 三电阻电流重构方法 2.4 PWM移相及电流采样触发点计算流程图 目前,永磁同步电机的电流信号采样方法应用较多的是分流电阻采样,包括单电阻、双电阻以及三电阻采样法。这章讲双电阻以及三电阻电流采样法。 1. 双电阻采样 1.1 双电阻采样原理 双电阻采样相电流方法是在全桥逆变电路的任意两个下桥臂分别串联一个采样电阻,从采样电阻R1、R2两端采集电压信号,经过后端的运放以及A-D器件,后通过计算得到相电流的大小,双电阻采样电路如图1-1所示。 图1-1 双电阻采样电路图 1.2 双电阻采样时刻分析 采样时刻的分析过程与上一章单电阻采样类似,首先分析8个基础矢量下流过各个采样电阻的电流;最终确定采样时刻为矢量V000作用时进行采样,此时三相上桥臂截止的时刻,此时相电流通过二极管进行续流,通过采样续流电流可以得到真实的相电流,如下图1-2所示。(采样也可以放在PWM的前半段V000作用时间进行,没有强制要求) 图1-2 基础矢量V000作用时电流流向及采样时刻 采集到其中两相电流后,通过计算得到全部的相电流信息,从而实现三相电流的重构。 1.3 双电阻电流重构方法 双电阻电流重构方法是采样得到的两相电流后根据公式Ia + Ib + Ic = 0得到第三相电流,但双电阻采样也是有非观测区的。 在上一章节我们讲过采样时需要时间的,电流采样有一个最小脉宽时间Tmin,所以我们在采样时一定要留出足够的采样窗口,这样我们才能采集到准确的相电流。从图1-2我们可以知道,我们是在V000作用时进行采样的,并且是放在载波的后半段进行采样,也就是说我们是在占空比最大的PWMH为低电平后进行采样。 那么如果占空比最大的那一相,它的占空比过高的话,留给我们采样的时间就过短,这就又形成上一章我们提到的非观测区,如图1-3所示; 图1-3 双电阻采样非观测区与PWM波形图 如图1-3(a)所示,双电阻采样他的非观测区也是由两部分组成:扇区过渡区、高压调制区;落在非观测区的电压矢量它的基本矢量V000的作用时间过短,导致无法采集到准确的相电流进行重构。 所以采用双电阻电流重构方法的话,通常会约束电压最大相占空比在95%左右(可根据Tmin进行调整,不一定时95%),保证电流采样有充足的空间。 2. 三电阻采样 2.1 三电阻采样原理 三电阻采样相电流方法是在全桥逆变电路的三个下桥臂分别串联一个采样电阻,从采样电阻R1、R2、R3两端采集电压信号,经过后端的运放以及A-D器件,后通过计算得到相电流的大小,三电阻采样电路如图2-1所示。 图2-1 三电阻采样电路图 2.2 三电阻采样时刻分析 三电阻采样的时刻与双电阻采样时刻一样,为矢量V000作用时进行采样,此时三相上桥臂截止的时刻,此时相电流通过二极管进行续流,通过采样续流电流可以得到真实的相电流,如下图2-2所示。 图2-2 基础矢量V000作用时电流流向及采样时刻 三电阻采样与双电阻采样极其相似,并且他们的非观测区也一样,不过三电阻对于电的重构方法与双电阻有很大的区别,因为多出来的一个电阻使得三电阻采样对于采样时间的选择有了更多灵活性。 2.3 三电阻电流重构方法 双电阻可以通过限幅的方法将SVPWM最终生成的PWM占空比限制到一定范围内(比如上文提到的95%),防止V000电压矢量的工作时间过短导致电流采集发生在非观测区而产生数据错误。 但是这种方法由于空间矢量的最大范围受到限制,直接导致了电机电压降低,使得电机无法达到最大输出,电源利用率被降低。 为了解决非观测区三电阻采样问题,三电阻采样通过改变采样点位置以及移相(非对称PWM输出)的操作,从而预留出足够的窗口给AD器件采样,且保持占空比不变,保证要合成的电压矢量Uref不变。 举两个例子说明一下: 例一:以扇区1为例,高压调制区的PWM波形如图2-3所示; 图2-3 三电阻采样高压调制区PWM波形图 如图2-3(a)所示,某一个电压矢量Uref落在第一扇区的高压调制区,它的PWM波形如图2-3(b)所示,Uref的A相PWM1H占空比大于一定值,导致V000矢量作用时间很短,此时三相电流均无法正确采样。但是载波后半段V100矢量的作用时间大于Tmin,可以将采样点设置在图2-4所示的区间,采集B相电流Ib和C相电流Ic,再通过Ia + Ib + Ic = 0重构出A相电流Ia。 图2-4 V00矢量作用下电流流向及采样区间变更对比 如图2-4(a)所示,再矢量V100作用时三电阻采样能够正确采集到其中两相电流,从而重构出第三相电流,采样区间变更如图2-4(b)所示。 例二:以扇区1为例,扇区过渡区的PWM波形如图2-5所示; 图2-5 三电阻采样扇区过渡区PWM波形图 扇区过渡区的PWM波形如图2-5所示,A相PWM1H占空比大于一定值,使得载波后半段矢量V000的作用时间t1小于Tmin,且载波后半段矢量V100的作用时间t2也小于Tmin,均无法正确采集三相电流。 此时需要将B相PWM整体左移,将B相PWM上升沿与A相PWM下降沿对齐,如图2-6所示,使得采样窗口时间t2'大于Tmin,从而改变采样区间的,采集到B相电流Ib和C相电流Ic,再通过Ia + Ib + Ic = 0重构出A相电流Ia。 图2-6 移相后PWM波形及采样触发点变更对比 如图2-6(a)所示,B相的PWM整体向左移动了Δt,拓宽了采样窗口的值,在矢量V100作用时进行电流采样,采集到B、C相电流后计算出A相电流。 2.4 PWM移相及电流采样触发点计算流程图 PWM移相及电流采样触发点所在区间计算程序流程图如图2-7所示。 图2-7 PWM移相及电流采样触发点所在区间计算程序流程图

    前天 65浏览
  • 变频器过热报警?别慌,一文教你轻松解决!

    你是否曾遇到过变频器频繁报警停机,故障代码E15过热报警的困扰?那种焦头烂额的感觉,简直让人崩溃!

    04-22 65浏览
  • 汽车ECU的软硬件架构及工作原理详解

    本文总结整理了一下网上搜到的车载电子控制单元(Electronic Control Unit, ECU)的有关信息,在入门车辆控制时需要了解一下,慢慢更新。

    04-21 86浏览
  • 硬件设计常用接口引脚定义

    常用接口引脚定义 RS232(DB9) RS422/RS485(DB9) CAN(DB9) PS2 USB type - C STAT MSATA SD卡/TF卡 以太网 VGA DVI HDMI mPCIe PCI-e JTAG RS232(DB9) RS422/RS485(DB9) CAN(DB9) PS2 USB type - C STAT MSATA SD卡/TF卡 以太网 VGA DVI HDMI mPCIe PCI-e JTAG

    04-18 97浏览
  • 一文说清楚PLC、运动控制卡、运动控制器

    一、硬件方案 随着工业技术的发展,运动控制应用越来越广泛,各个PLC品牌厂家都推出了运动控制型PLC,来实现一些运动控制功能,与此同时,运动控制卡及运动控制器也在持续发展。当我们涉及到运动控制需求的项目时,首先要确定运动控制控制器的选择。一般来说,我们会有以下几种方案: 1、采用PLC进行控制,目前很多PLC都支持运动控制的,大部分PLC可以扩展到32轴,根据驱动器类型可以采用脉冲控制、总线控制或模拟量控制。 2、采用运动控制卡控制,运动控制卡是专门进行运动控制的一种控制器,可以进行多达256轴的控制,运动控制卡需要PC编程。 3、采用运动控制器控制,运动控制器与运动控制卡不同之处在于,可以脱离PC电脑的束缚,编写完程序下载到控制器里,即可直接对驱动器进行控制。 二、区别联系 无论PLC、运动控制卡还是运动控制器,它们的本质都是一种可以同时支持运动控制及输入输出的控制器,不同之处在于: 1、PLC以逻辑控制为核心,适用于工业自动化中的顺序控制、信号处理等场景,对于运动控制,中低端PLC主要通过高速脉冲控制,高端PLC一般会通过总线的方式来进行控制,常用的总线包括Profinet、EtherCAT、CC-Link等,编程方式主要采用梯形图、ST/SCL等编程语言,适合电气工程师快速开发。 2、运动控制卡分为脉冲型和总线型,通过PCI/PCIE/以太网连接到PC主机上,利用高级编程语言C++、C#等调用厂家API进行开发。支持多轴协同(256轴)、高速脉冲(MHz级)、直线插补、圆弧插补、螺旋插补、电子凸轮等复杂运动控制场景,适合具备软件开发能力的团队。 3、运动控制器与运动运动卡算法功能几乎一致,主要区别在于运动控制卡需要依赖于PC编程,而运动控制器可以独立运行,一般会有专门的IDE,使用偏底层的语言编程,如Basic,适合有一定编程和学习能力的工程师。 总而言之,PLC相对来说更偏向于逻辑控制,运动控制功能相对弱一些,而运动控制卡、运动控制器更偏向于运动控制,逻辑控制处理相对弱一些。同时,运动控制卡和运动控制器对开发人员的门槛也要相对高一些,没有绝对的好与坏,大家可以根据自己的实际情况,选择合适的解决方案。 下面是从不同角度对三者进行了对比: 三、选型建议 1、从需求角度来看: 如果项目以逻辑控制为主‌,运动控制要求不高,建议选择PLC,成本低且易维护‌。 ‌如果高精度运动+PC集成‌:选运动控制卡,适合需要个性化界面的场景‌。 ‌如果需要独立高性能控制‌:选运动控制器,保障复杂运动稳定性‌。 2、从‌开发资源角度来看: 如果‌团队擅长电气工程:优先PLC‌。 如果具备软件编程能力:可考虑运动控制卡‌。 需要专用算法:选运动控制器‌。 3‌、从环境要求角度来看:‌ 恶劣工业环境:独立PLC或运动控制器更可靠‌。 空间受限:运动控制卡适合紧凑型设备‌。 项目本身有视觉需求,优先选择运动控制卡。 PLC是逻辑控制基石,适合中小型运动控制项目‌。‌运动控制卡可利用PC驱动的灵活高精度方案,适合定制化需求。‌运动控制器基于独立高性能核心,应对复杂运动挑战‌。 三者也可协同使用(如PLC处理逻辑+运动控制器执行动作),构建高效自动化系统‌。

    04-17 104浏览
  • 48张高清电工电路彩图,你真不一定都会!

    1、倒顺开关的接线 2、200smart与变频器通讯接线 3、继电控制与PlC控制的区别 4、三相电机正反转接线 5、红外感应电路 6、逆变器电路 7、插卡取电接线 8、接触器的单开双控 9、plc与继电器接线 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、继电器实现断相与相序保护的一个原理。

    04-16 120浏览
  • 【电机控制】PMSM无感FOC控制(SVPWM)

    本章主要讲了SVPWM的原理、各个矢量作用时间的推导、七段式调制方式;没有讲解如何讲SVPWM如何和MCU的PWM模块结合 目录 0. 前言 1. 什么是SVPWM 1.1 SVPWM的概念 2. SVPWM(空间矢量脉宽调制)如何产生所需的空间矢量 2.3.1 矢量的合成 2.3.2 矢量的合成的范围 2.1 合成空间矢量需要的八个基础矢量 2.2 SVPWM的六个扇区 2.3 SVPWM空间矢量的合成 2.4 如何求解SVPWM基础矢量的作用时间 3. 七段式SVPWM 0. 前言 本章节会详细介绍SVPWM,计划在下一章讲解过调制。学完这一章你就会理解第一章里面PID控制器输出的dq轴电压经过变换后得到的αβ轴电压的真正含义,为什么会会输出αβ轴电压,αβ轴电压是怎么被SVPWM利用的。 之前我们讲过FOC是磁场定向控制,在进入SVPWM之前我们要清楚,这个定向的磁场是由什么产生的?怎么被控制的? 定向的磁场是由什么产生的? 上图是电机的刨面图,可以看到电机的定子是由一圈圈的线圈组成的,当线圈中有电流流过时就产生了磁场。那么要产生定向的磁场就需要产生特定的电流,要产生特定的电流就需要特定的电压。空间矢量脉宽调制(SVPWM)可以产生电压矢量,激发出电流流过线圈的绕组,从而产生磁场矢量。到这里我们已经知道了,磁场是怎么被产生的,它是由电压矢量激发出的电流流过线圈所产生的。我们通过控制电压矢量,生成一个不断旋转的磁场矢量就可以带动电机转动了。 最后一个问题这个磁场是怎么被控制的? 在描述这个问题以及进入后续的内容之前我们需要了解一些名词,端电压、线电压、相电压。 端电压:端电压就是电机三相线端相对于GND的电压,A相端电压记作UA,B相端电压记作UB,C相端电压记作UC; 线电压:线电压就是相相之间的电压Uab = UA - UB,Ubc = ...; 相电压:相电压就是电机三相线端相对于连接点N的电压,UAN = UA - UN,UBN = ...; 首先先大家要理解Uα和Uβ代表的是αβ坐标系下的一个电压矢量。其次要理解FOC是磁场定向控制。线圈中有电流流过时就会产生磁场,所以我们要产生一个定向的磁场时就需要控制电机的三相上的相电流,通过控制三相静止坐标系中的三相电流我们就可以产生出在这个平面内的任意方向的磁场,这样就可以完成磁场的定向控制。那怎么控制三相的电流呢?那就是通过控制三相的相电压,不同大小的相电压可以激励出不同大小的相电流。 第一章节我们说了为什么foc的控制流程的最后是SVPWM,而不是反Clark变换,因为通过PID控制以及反Park变换后得来的Uα和Uβ刚好又可以反Clark变换成我们想要的三相电压UAN、UBN、UCN。但是我们通过逆变电路能直接控制三相电压吗?很显然是不能的,逆变电路控制的是三相的端电压,那我们怎么通过三相的端电压来控制三相的相电压呢? SVPWM刚好可以胜任这份任务,空间矢量脉宽调制(SVPWM)中的空间矢量指的就是磁场矢量,这个磁场矢量是由电压矢量产生的。Uα和Uβ代表的是αβ坐标系下的一个电压矢量,SVPWM通过控制逆变器的开关状态(也就是控制端电压),合成所需电压矢量,从而产生转动电机转子所需的磁场矢量。 1. 什么是SVPWM 1.1 SVPWM的概念 SVPWM(Space Vector Pulse Width Modulation)是一种空间矢量脉宽调制技术,也称为电压空间矢量脉宽调制技术。它是电力电子技术中一种非常重要的调制方法,广泛应用于交流电机控制、电力电子变换等领域。 SVPWM的基本思想是以三相对称正弦波电压供电时三相对称电动机定子理想磁链圆为参考标准,用逆变器不同的开关模式所产生的实际磁链矢量来追踪基准圆磁链矢量。具体实现方法是通过控制逆变器的开关状态,合成所需的电压矢量,使得电机的定子绕组中产生相应的电流矢量,从而产生所需的磁场矢量。 相比于传统的SPWM方法,SVPWM具有更高的直流电压利用率和更好的动态性能,因此在电力电子领域中得到了广泛应用。 2. SVPWM(空间矢量脉宽调制)如何产生所需的空间矢量 2.1 合成空间矢量需要的八个基础矢量 前面我们说过SVPWM通过控制逆变器的开关状态(也就是控制三相的端电压),合成所需电压矢量,从而产生转动电机转子所需的磁场矢量。在了解具体的合成过程之前我们首先要了解合成空间矢量所需要的8个基本矢量、8个基本矢量对应的驱动电路的6个开关管的状态、以及8个基本矢量对应的相电压。 首先我们知道电机驱动器的逆变电路有六个开关管,每两个开关管对应控制电机的一相的端电压,M1、M2控制A相的端电压UA,M3、M4控制B相的端电压UB,M5、M6控制C相的端电压UC。 我们可以定义一个开关函数Sx (x = a, b, c),当Sx等于1时代表x相的上管导通,下管断开(x相的端电压等于Vdc);当Sx等于0时代表x相的上管断开,下管导通(x相的端电压等于GND)。 Sa = 1代表M1导通,M2断开,Sa = 0代表代表M1断开,M2导通; Sb = 1代表M3导通,M4断开,Sb = 0代表代表M3断开,M4导通; Sc = 1代表M5导通,M6断开,Sc = 0代表代表M5断开,M6导通。 上下管是不能同时导通的,上管导通时下管就只能关断,下官导通时上管就只能关断,因为如果上下管同事导通了,那么Vdc就和GND直接接到了一起,电源就短路了,会烧坏电路以及电源。 那么通过对这三对开关管的状态进行组合我们就能得出8种不同的状态,这8种不同的状态代表了8个基础矢量Vx(x = 0,1,2,3,4,5,6,7),x的值与开关管的状态相关,我们可以把开关管的状态看成一个三位二进制数,Sa代表最高位,Sc代表最低位,当Sa = 1,Sb = 0,Sc = 0时x = 100(二进制表示),换算成十进制表示就是x = 4; 接下来我们要去计算这8种状态下的三相的相电压(计算这八个基础矢量的相电压是为了在三相静止坐标系(A-B-C)内画出这八个基础矢量),首先来分析V4(100)矢量的相电压情况,V4矢量代表着A相的上管导通,下管断开(A相端电压等于Vdc);B相的上管断开,下管导通(B相端电压等于GND),C相的上管断开,下管导通(C相端电压等于GND)。 因为三相星型电机一般都是对称绕组,相电阻一样,所以我们可以化简上图,用R代表三相绕组的阻抗如下图: 根据分压的原理可得出以下结论: 另外七种矢量的相电压推导过程同上,最后我们能得出如下表格: 2.2 SVPWM的六个扇区 在第一章我们学了三个坐标系,其中有一个坐标系叫做三相静止坐标系(A-B-C),现在我们知道每个基础矢量对应的相电压,就可以在这个坐标系以三相的相电压为坐标轴中画出这8个基础矢量。 根据三相系统向两相系统变换保持幅值不变的 原则定子电压的空间矢量可表示为: 式中 我们首先根据上面的表格在坐标系(正半轴用实线表示,负半轴用虚线表示)里画出V4矢量的各个相电压: 根据矢量合成的平行四边形法则,我们最终得到了一个在A轴正方向上,大小为Vdc的矢量,由于等幅值变换需要乘以一个2/3的系数,最终得到的矢量大小为2/3Vdc,如下: 我们按照上述的方法画出另外七个矢量,最终得到了如下的图形(其中V0和V7是坐标系零点上的两个点): 然而光只有这八个矢量还是不行的,SVPWM的目的是要在这个平面空间里面产生更多的矢量轨迹,从而使得电机平滑转动。 为了讲解后面的如何在这个平面内合成任意矢量,我们需要回顾一下PWM来做个过渡,我们知道如果电源电压为10V我们想得到1v的电压需要使用PWM脉宽调制,调整一个载波周期内高电平占空比为10%,如果想要得到10v的电压就要调整一个载波周期内高电平的占空比为100%。 SVPWM也是类似的思想,如果想在平面内得到方向与V4的矢量相同,大小为2/3Vdc大小的矢量,那我们必须控制开关管处于Sa = 1,Sb = 0,Sc = 0的状态持续一整个载波周期;如果想得到方向与V4的矢量相同,大小为1/3Vdc大小的矢量,就需要控制一个载波周期内的V4矢量的作用时间占整个载波周期的50%(也就是开关管一半时间为100状态),零矢量(V0和V7矢量称为零矢量)的作用时间占到50%(一半时间为111和000的状态)。 回到上面的图,这六个矢量将这个平面空间划分成了六份,这个平面内我们想合成的任意一个矢量都会落在这六个扇区的其中一个扇区,并且任意一个扇区的矢量我都可以通过这个扇区的两个矢量来合成,比如扇区1内的矢量我们可以通过调整V4、V6以及零矢量(V0、V7)的作用时间来合成。 2.3 SVPWM空间矢量的合成 2.3.1 矢量的合成 接下来我们定义载波周期为时间T,按照我们之前讲的,我们控制开关管处于100状态持续一整个载波周期T就能得到与V4矢量方向相同,大小为2/3Vdc的矢量。如果我们想在扇区一与α轴夹角30°的地方生成下图的黑色矢量(矢量长度为√3/3Vdc)。就需要先控制开关管处于100状态(V4矢量)作用1/2T,然后再控制开关管处于110状态(V6矢量)作用1/2T的时间,这样我们就能生成一个与黑色箭头方向一致的磁场。 如果我们是想在扇区一与α轴夹角30°的地方合成长度为√3/6Vdc矢量,那是不是先控制开关管处于100状态(V4矢量)作用1/4T,然后再控制开关管处于110状态(V6矢量)作用1/4T的时间,最后留下的1/2T的时间控制开关管处于000和111的状态(零矢量)。 第一个矢量(V4)的作用时间是t1 = 1/4T; 第二个矢量(V6)的作用时间是t2 = 1/4T; 零矢量(V0、V7)的作用时间是t0 = 1/2T; 现在大家理解SVPWM是怎么合成矢量了吧,其实就是在控制开关管不同的状态持续时间,从而合成出平面内的矢量。 2.3.2 矢量的合成的范围 上面一节我们知道了SVPWM调制怎么合成不同的电压矢量,那通过上述的方法我们可以合成这个平面内的任意一个矢量吗? 解答上个问题之前,我们先达成一个共识,SVPWM调制是为了产生不同的电压矢量合成,产生的一个在空间中旋转的电压矢量的轨迹,从而产生一个旋转的磁场带动电机转子转动。这个轨迹是个圆形,我们把它叫做矢量圆,它的半径反映了在标准的SVPWM调制下,能够达到的最大电压矢量幅值。 我个人理解这个矢量圆的半径反应了能够产生的磁场的大小,因为产生磁场是因为电流流过了线圈,电压矢量不会无限大,产生的电流也就不会无限大,因此生成的磁场也不会无限大。 那么SVPWM调制的矢量圆的半径最大是多大呢?答案就是我们上一节里面合成的第一个矢量,它的长度为√3/3Vdc。 那这是为什么呢? 我们看下面的图,当三角形OAB的B点落在由边长为Vdc的六边形上时,我们OA + AB刚好等于2/3Vdc,也就是说: 矢量OA的作用时间t1 + 矢量AB的作用时间t2 = 载波周期T; 这也就表明了,我们不能合成超过这个六边形范围外的矢量,那我们矢量圆的半径是不是就确定了就是这个六边形的内切圆,半径为√3/3Vdc。 当然通过某些手段我们可以把矢量圆的半径拓宽到2/3Vdc,这个方法就是过调制,这个我们后面再讲。 2.4 如何求解SVPWM基础矢量的作用时间 假设我们要合成如图所示的扇区1中的矢量OB,我们怎么求出矢量V4的作用时间t1和矢量V6的作用时间t2? 首先我们知道三角形的每条边与它对角的正弦值的比值相等即: 我们可以知道;代入上式得: 先分析 ,把代入得: 接下来分析,把代入得: 上面t1、t2得等式中T、Vdc是已知的,那么我们只要知道OB以及θ的值就能求出t1、t2的值了。 大家回想一下第一章我们讲的FOC框图里面SVPWM模块的输入是什么? 是不是Uα和Uβ?那么通过Uα和Uβ我们能不能算出t1、t2? 答案是可以的,因为Uα = OB × cosθ,Uβ = OB × sinθ,那么上面t1、t2的式子就可以化简为: 同理我们能计算出另外五个扇区的t1、t2矢量的作用时间如下表,令得: 既然我们知道了每个扇区的矢量都是有两个基础矢量和零矢量合成出来的,在知道两个基本矢量的作用时间后,就可以求出零矢量的作用时间t0 = T - t1 - t2。 3. 七段式SVPWM 以上图为例,我们要合成该黑色的矢量,矢量V4和矢量V6的作用时间是0.25T,矢量V4的作用时间为t1,矢量V6的作用时间为t2,零矢量的作用时间为t0。 根据t0 + t1 + t2 = T,可得t0 = 0.5T,通过之前的知识我们可以得知零矢量分为两种分别是V0(000)和V7(111),在这0.5T的时间内V0和V7各自作用力0.25T的时间。 什么式七段式SVPWM?就是我们把一个周期T划分成7段,每一段对应着一个矢量状态,通过七次矢量合成最终得到目标矢量。 既然通过七段式合成上面需要4个矢量(V4、V6、V0、V7),这4个矢量对应着六个管子不同的动作,功率管要开关那肯定会开关损耗,因此我们需要找出一种开关损耗最小的开关方式。 为了保证这七个状态切换时,开关损耗最好,我们每次要尽可能让开关的动作次数最少。 如下下图(下图的波形我们可以看成Sa、Sb、Sc的状态,也可以看成三个上桥臂的PWM波的波形): 我们要合成扇区1里面的黑色矢量,分7段(其实图中的时间段分为了八段,但是中间的111连续视为一段,这样的话就只有七段了): 第1段:合成矢量V0(000)作用时间1/8T(t0/4); 第2段:合成矢量V4(100)作用时间1/8T(t1/2); 第3段:合成矢量V6(110)作用时间1/8T(t2/2); 第4段:合成矢量V7(111)作用时间1/4T(t0/2); 第5段:合成矢量V6(110)作用时间1/8T(t2/2); 第6段:合成矢量V4(100)作用时间1/8T(t1/2); 第7段:合成矢量V0(000)作用时间1/8T(t0/4); 每一段切换时我们都只改变了Sa、Sb、Sc其中的一个状态,也就是只改变了一个半桥上的两个开关管,如果我们把第3段和第2段对调,那么开关的次数是不是就增多了,开关损耗就增加了。 总结一下六个扇区内各自矢量的合成方式如下(可以看成三相上的PWM每个载波周期内的占空比中心对称): 那么有人可能会疑惑了,既然都是零矢量,那作用效果都是一样的为什么不只用其中一个矢量?这就是七段式和五段式SVPWM的区别了,七段式的零矢量多一个,开关管的切换次数会比五段式多,开关损耗会比五段式大,但是七段式的谐波会比五段式小。在这里我们只讲七段式,对五段式感兴趣的小伙伴自己下去可以了解一下。

    04-15 117浏览
  • 单片机基础:GPIO、定时器、串行通信、中断

    本文将介绍有效使用单片机外设功能的结构及使用方法。 1. GPIO 2. 定时器 3. 串行通信 4. 中断功能GPIO 单片机仅靠CPU和内存是无法运行的! 有效使用单片机不可或缺的“外设功能”是什么呢? 对电子产品进行控制的单片机是由CPU、内存及外设功能等部分组成的(图1)。CPU根据指令(程序),执行运算、数据的读写以及进行条件判断等,而内存则用来保存该程序(记忆)。 外设功能是指为了使单片机便于使用的各种功能。例如,CPU为了与外部的传感器及开关等进行信号交换,就需要“输入/输出端口(I/O端口)”这种外设功能。 而且,将模拟输入信号转换为数字值的“A/D转换器”以及反过来将数字值转换为模拟输出信号的“D/A转换器”则是单片机对各种信号进行处理时不可或缺的外设功能。 另外,还有为了正确测量时间所用的“定时器”以及提供日期和时计的“实时时钟(RTC)”,用于进行与时间相关的处理,此外还有将并行信号(parallel signal)和串行信号(serial signal)进行互相交换的“UART(Universal Asynchronous Receiver Transmitter,通用异步收发器)”等,以便进行通信。 图1:单片机内部结构示意图 了解数字信号的输入/输出端口---“GPIO” 在“输入/输出端口(I/O端口)”中,数字信号的输入/输出端口即“GPIO(General Purpose Input/Output)”也被称为“通用I/O端口”,是一种用于数字信号输入/输出的非常方便的端口。用于将数字输出的传感器值和开关的ON/OFF值传送到单片机的输入端及通过LED来显示单片机的运算结果,以及输出用于驱动电机运行的信号等等。 GPIO被称为通用端口是其引脚既可以用于输入也可以用于输出。在早期的单片机中,引脚都被固定用于输入或输出,但是现在很多单片机中都可以自由地将其设定为输入或输出端口。假设GPIO端子有8个引脚,则可以将4个引脚用于输入,另4个引脚用于输出,也可以将1个引脚用于输入,剩下的7个引脚用于输出。 在GPIO中,为了使CPU和外部设备之间进行数据交换,要相互执行通过程序处理的数字值(0或1)与信号(电压的LOW电平或HIGH电平)的转换。下面是作为RX63N单片机的GPIO端口基础的寄存器(※1)的作用(图2)。 (※1)寄存器(Register):存在于单片机的CPU和外设功能内部中的记忆回路。用于运算和保持CPU的执行状态。由于是作为CPU及外设功能的内部回路,所以在对内存进行写入和读取时速度很快,但容量却非常小,既有可以用于各种用途的寄存器(通用寄存器),又有用于某些限定的功能和用途的特殊寄存器。 图2:GPIO的基本结构示意图 端口方向寄存器(PDR) 决定引脚方向的寄存器,也称为“方向寄存器”。 端口输入数据寄存器(PIDR) 输入时反映所使用的引脚状态的寄存器。从引脚输入LOW电平或者HIGH电平时会将之转换为0或1的值并读取该转换结果。随着引脚的变化数值也将发生变化。所以不会保持读取时的值。 端口输出数据寄存器(PODR) 此寄存器保存用作输出引脚的输出数据。将0或1的值转换为LOW电平或HIGH电平信号并从引脚输出。由于可以与内存一样保持改写前的值,所以在改写前来自引脚的输出电压也将保持不变。 定时器 一手包办有关时间和时刻的处理! 在单片机中,不仅频繁地使用“○月○日○点○分”这种时刻显示,显示过去的时间和一定的周期这种形式也被频繁地使用。例如,“该程序从运行开始过去了多少时间?”、“每秒输送128次信号”等等。另外,还经常被用于“等待指定的时间”、“经过指定的时间后将转移到下一个处理”这样的情况。对这些与时间和时刻有关进行处理的外设功能就是定时器(图1)。 图1:定时器就是进行与时间、时刻有关的处理我们也可以不使用外设功能(硬件)的定时器,而是通过软件来计算时间。下面通过图2来说明使用软件来定时的示例,图中假设循环(重复)部分的处理需要费时1μs(微秒:100万分之1秒)。由此可以计算出该循环部分重复1000次需要花费1ms(毫秒:千分之1秒),重复100万次则需费时1秒。即:通过“等待经过循环处理所指定的时间”来计算时间。但是,CPU将会集中进行时间计算的处理而无法进行其他处理。而且,只能计算一个周期的时间。而现实当中,单片机需要对应0.1秒和1/1024秒等各种周期的时间。另外,CPU的计时器频率(驱动速度)也将对软件产生影响。如果将100MHz驱动的CPU改为50MHz,那么循环1次所需的时间将变为原来的两倍。因此,需要对计算时间的软件进行修正。如上所述,由于在管理上既花时间又容易出错,所以要极力避免通过软件来计算时间。图2:通过软件定时的定时器示例 稍微介绍一下中断的内容…… 下面,我们简单介绍一下和定时器不可分割的技术——“中断功能”。单片机中的“中断功能”是指某个程序在执行过程中,因某种原因而发出“开始进行其他处理”的请求。由于可以使用中断功能,所以可使CPU不集中进行一个处理。让我们想象一下日常生活中用到“中断功能”的情景,当我们把热水倒入方便面盒中后,如果我们在3分钟内一直盯着时钟看,那么这段时间内我们就不能做其它事情。但如果用厨房定时器设定3分钟的时间,在厨房定时器的警报响起之前我们便可以去做其它事情。在这个例子中,“一直盯着时钟看”就相当于前一节中所介绍的“等待经过循环处理所指定的时间”,所以在处理结束之前不能去做其它事情。同时,厨房定时器的警报就相当于中断功能。在中断发生前还可以去做其它事情。单片机的外设功能中有各种各样的定时器,这些定时器在经过指定的时间或处理结束时向CPU发送中断信号。不仅是定时器,很多外设功能都会在“产生变化”、“处理开始/结束”时将中断信息传送给CPU。所以,CPU在中断功能发生前还可以继续做其它工作,因此可提高作业效率。关于中断功能的详细内容,将在本文后面的《外部中断功能IRQ》中做详细介绍。我们先事先了解一下“从外设功能以中断的形式向CPU传送信息”的内容。 各式各样的定时器中,还有“看门狗定时器”! 在单片机的外设功能中,最贴心的定时器是计算到指定时间的定时器和每隔一段时间便发生中断的定时器。在定时器中,最具特色的是WDT(看门狗定时器)。其名字Watch Dog Time中的Watch dog意思为“看门狗”,它的工作就是监视程序是否出现失控。由WDT监视的程序通过事先将设定的值写入WDT后启动。WDT每隔一定时间便减掉写入的值,当程序正常运行时,处理结束前会对WDT清零再结束。但是,如果程序失控(进入意料之外的重复状态且无法停止)时,写入WDT的值将小于0(称为下溢),因此向CPU通知程序出现了失控。在不允许睡眠的重要系统中,单片机中搭载的“看门狗定时器”―WDT发挥了极其重要的作用。 串行通信 单片机与外围设备的连接:并行和串行 单片机是嵌入式设备的“头脑”,其与作为嵌入式设备的“手和脚”是各种外围设备(输入输出设备等)连接。单片机应该怎样与这些外围设备连接才好呢?比如,我们来考虑一下将传感器与单片机连接的情况。如果使用前面介绍的“GPIO”的话,从传感器向单片机传送8位信号时需要使用8个引脚。这种传送模式被称为并行(并行通信)模式(图1―左)。但是,仅一个传感器就需要连接8个引脚,确实太可惜了 ,是否还有连接更少的引脚就能达到同样目的的方法呢? 此时,可使用串行传送模式(串行通信)。“串行”的意思就是直列或直线。通过并行传送模式(Parallerl Transferring Mode)中需要8个引脚才能实现的通信,在串行传送模式(Serial Transfer Mode)中,由于可以以排成一直线的模式进行传送,所以仅需一个引脚就够了(图1―右)。由于在单片机内部是通过并行模式来进行信号交换,所以还需将通过串行模式传送来的信号转换为并行模式(串行并行转换)。相反,从单片机向与单片机串行连接的外围设备传送的信号也需要将信号从并行模式转换为串行模式(并行串行转换)。瑞萨电子的单片机RX63N是通过被称为SCI(Serial Communication Interface,串行通信接口)的单元进行这些转换的。例如,使一个引脚对应1位 的char型变量进行信息交换的是并行通信(Parallel communication),而一个引脚以时分(time division)按每1位进行信息交换的就是串行通信(Serial Communication)。 图1:并行和串行由于串行连接仅使用少数引脚便可进行,所以,近年来多被用于单片机和外围设备之间的连接。GPIO除了用于将驱动电机的信号及 LED闪烁等软件操作结果的信号输出时以外,还被用于通过开关或ON/OFF输出的传感器的输入等。 通过UART便可简单地使用串行通信 由于电特性的不同,以及用于进行通信协议的规定不同,串行通信具有多种方式,其中,最易于使用的应该是“异步通信模式”了。仅需用信号线将单片机和外围设备连接起来便可使用,所以在单片机与动作监视器用的终端之间进行通信时、以及单片机与无线LAN用模块进行通信时使用。 在异步通信模式的串行通信状态下,一字节的文字信息※1在“开始位”(Start bit,意味着开始发送)和“停止位”(Stop bit,意味着停止发送)之间发送(图2)。由此,无需 I2C(Inter-Integrated Circuit,内部集成电路)”及“SPI(Serial Peripheral Interface,串行外设接口)”等时钟信号线(但在其他的串行通信模式中这些时钟信号线是必需的,以对发送和接收的时序进行同步)。另外,还可追加用于检查数据是否已正常发送的“奇偶校验位(Parity bit)※2”。 此通信方式所使用的通信用器件被称为UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器),在瑞萨电子的单片机--RX63N中内置了支持此功能的SCI(串行通信接口)。 (※1)异步串行通信状态下,一般都是从“最低有效位(LSB: Least Significant Bit),即最低二进制数位”开始进行发送的。 (※2)奇偶校验位(Parity bit):在发送时按一定量的数据(在SCI中为7位或8位)中所具有“1”(或“0”)的个数为奇数个时定为“1”,为偶数个时定为“0”的奇偶校验位(使偶校验(Even Parity Check)、数据及奇偶校验位中所包括的“1”的数量成为偶数个的方法),并通过与接收侧进行校验,以检测出数据通信中的错误。反之,如果“1”(或“0”)的个数为奇数时定为“0”,为偶数时定为“1”的方法被称为奇校验(Odd Parity Check)。图2:异步串行通信在异步通信中,能实现按“单片机→外围设备”或“外围设备→单片机”的方向确保数据信号专用的信号线时,被称为全双工通信。另一方面,将通过1根信号线来切换通信方向的方式称为半双工通信。全双工方式时需要2根信号线,可同时进行发送和接收。半双工方式时仅需1根信号线,但必须在发送和接收之间进行切换(图3)。图3:全双工通信和半双工通信 中断功能 提高作业效率的“中断功能”指的是什么? 我们回顾一下“定时器”篇中简单介绍过的“中断功能”概念。任何人都有过这样的经验,就是“将鸡蛋放进沸腾的热水中,直到鸡蛋煮熟的10分钟内要确认好几次时钟”的经历。在单片机的世界中也同样,在等待某种状态达成时,具有对对象进行定期检查的方法。例如,在等待向GPIO(通用I/O端口)的输入从0变为1时,程序可以一定的间隔来检查GPIO的状态。这种处理被称为“轮询”。 轮询虽然是一种了解状态变化的简单方法,但是如果检查的频度低(间隔长)就会错过变化,如果频度过高(间隔短),即使查也查不到变化“空耗”。由于轮询通过简单的程序便能完成处理,所以在掌握对象的变化频度时是有效的。但是,进行多次检查也会给单片机带来负荷,对功耗不利。 因此就要用到“中断功能”。产生中断时,CPU会暂时停止正在执行的任务,转而进行别的任务。也就是有别的任务“穿插”进来的意思(图1) 。当中途穿插进来的任务结束后,CPU再返回处理原来的任务。 图1:中断与轮询设想一下你在工作的同时煮鸡蛋的情况。由于你不想停下手中的工作,所以把鸡蛋放入热水中后就设置定时器并继续工作,10分钟后定时器一响就把鸡蛋从热水中捞起。这时,定时器的鸣叫就是中断 ,而“把鸡蛋从热水中捞起”就是穿插进来的工作。大家可以通过这种方式来了解中断功能。 单片机中的中断处理 中断产生于单片机内部和外部的各种设备。于开关和感应器等单片机外部的中断称为外部引脚中断,来自这些机器的中断信号由名为“IRQ”的引脚接收,再向中断控制器(在RX63N中称被称为“ICUb”)发出通知。IRQ为“Interrupt ReQuest”的略称,意思为“中断请求”。另外,来自单 片机内部的定时器和GPIO、串行通信设备UART等外设机器的中断被称为外部设备中断,中断信号直接从各外部设备通知中断控制器。 在中断控制器中,各种设备的中断信号按照先来后到的顺序,以适当的顺序被传送到CPU。而且,中断被设为无效的设备的中断信号将不会被传送到CPU,也就意味着可以忽视(屏蔽)这些信号。CPU按照从中断控制器接收到的指示来执行对应的程序(中断处理)。 CPU一旦接收到中断控制器的中断信号,首先将终止执行中的程序。然而,会自动保存“从何处重启”的出栈(POP)信息,这被称为“进栈(PUSH)”。进栈结束后,将开始由中断执行的程序。该程序结束时,进栈信息将回 送到CPU,这种现象被称为“出栈”(图2)。由于进栈和出栈都由CPU自动执行,因此程序设计者不必因顺序问题而费心。 图2:中断处理流程例如,通过UART执行串行通信时,经常监视字节是否被接收了而导致效率不佳。所以,多数情况下都对程序进行如下编程,即在信息送达 时就会产生中断并进行适当的处理,另外,使定时器产生中断的情况也不在少数。进行“经过了一定时间后该做什么”这类处理时,应进行如下编程,即通过来自定时器的信号开始进行处理。如上所述,在有效利用单片机方面,中断功能发挥了很大的作用。

    04-15 119浏览
正在努力加载更多...
广告