基于DSP的数据采集系统的设计.doc_第1页
基于DSP的数据采集系统的设计.doc_第2页
基于DSP的数据采集系统的设计.doc_第3页
基于DSP的数据采集系统的设计.doc_第4页
基于DSP的数据采集系统的设计.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 绪论1.1课题研究的背景在高度发展的当今社会中,科学技术的突飞猛进和生产过程的高度自动化已成为人所共知的必然趋势,而它们的共同要求是必须建立在有着不断发展与提高的信息工业基础上。人们只有从外界获取大量准确、可靠的信息经过一系列的科学分析、处理、加工与判断,进而认识和掌握自然界与科学技术中的各种现象与其相关的变化规律,并通过相应的系统和方法实现科学实验研究与生产过程的高度自动化。换言之,生产过程的自动化面临的第一个问题就是必须根据从各种传感器得到的数据来检测、监视现场,以保证现场设备的正常工作。所以对现场进行数据采集是重要的前期基础工作,然后再对现场数据进行传输和相应的处理工作,以满足不同的需要。数据采集系统是一种应用极为广泛的模拟量测量设备,其基本任务是把信号送入计算机或相应的信号处理系统,根据不同的需要进行相应的计算和处理。它将模拟量采集、转换成数字量后,再经过计算机处理得出所需的数据。同时,还可以用计算机将得到的数据进行储存、显示和打印,以实现对某些物理量的监视,其中一部分数据还将被用作生产过程中的反馈控制量。数据处理在整个科研工作中是个重要的必不可少的环节,数据处理系统工作的质量和速度如何,对整个科研工作的影响也是很大的。因此研究一种质量性能高的通用数据采集平台具有很大的意义。从广泛的意义上来讲,数据采集与处理的主要包括以下几个方面:(1)数据的采集:主要是解决非电量转换为电量的问题以及多路复用、数据的模拟形式和数字形式之间的转换问题。(2)数据的记录:数据的存储是非常重要的问题。(3)数据处理:包括预处理、数据检验和数据分析等步骤。随着科学技术的飞速发展,对数据处理的实时性要求也愈来愈迫切。显然,不论在哪个应用领域中,数据处理越及时则经济效益就越大。例如在实时监控系统中,必然要求对测量数据实时处理。又如在新型飞机试飞中如能实现对某些关键数据的实时处理和监测,就能在这些数据发生异常变化时及时发现并采取措施,以避免机毁人亡的重大事故发生。可见,实时处理数据意义是很大的。由于电子计算机技术的蓬勃发展,为提高数据处理的实时性提供了广阔的前景。2断资源限制,可扩展性差;在一些电磁干扰性强的测试现场,无法专门对其做电磁屏蔽,导致采集的数据失真。而现代工业生产和科学研究的发展要求数据采集卡具有更好的数据采集、处理能力,传统的 CPU 已经不能满足这一要求。针对以上要求。1.2 国内外研究及开发现状数据采集与处理一直是生产实践研究与应用领域的一个热点和难点。随着微电子制造工艺水平的飞速提高及数据分析理论的进一步完善与成熟,目前国内外对数据采集系统的高性能方面的研究上取得了很大的成就。就 A/D 转换的精度、速度和通道数来说,采样通道从单通道发展到双通道、多通道,采样频率、分辨率、精度逐步提高,为分析功能的加强提供了前提条件2。而在数据分析的微处理器上,最初的数据采集系统以 8 位单片机为核心,随着微电子技术的不断发展,新兴单片机的不断问世,十六位、三十二位单片机也为数据采集系统研制厂家所采用,近来采用具有 DSP 功能的数据采集系统也己投入市场。同时,通用 PC 机的 CPU 用于数据处理也较为常见。总之,伴随着高性能微处理器的采用和用户技术要求的不断提高,数据采集系统的功能也越来越完善。数据采集系统的发展主要体现在以下几个趋势:首先,在专业测控方面,基于 PC 计算机的数据采集系统越来越成熟和智能化。在过去的二十年中,开放式架构 PC 机的处理能力平均每十八个月就增强一倍为了充分利用处理器速度的发展,现代开放式测量平台结合了高速总线接口,如 PCI和 PXI/Compact PCI,以便获得性能的进一步提升。计算机的性能提升和由此引起的基于计算机的测量技术的创新,正在持续不断地模糊着传统仪器和基于计算机的测量仪器之间的界线。其次,在通用测控方面,采用嵌入式微处理器的方案也由早期的采用 A/D 器件和标准单片机组成应用系统发展到在单芯片上实现完整的数据采集与分析,即目前极为热门的 SOC (System On Chip)3。通常在一块芯片上会集成一个,可以采样多路模拟信号的 A/D 转换子系统和一个硬 CPU 核(比如增强型 80_52 内核),而且其CPU 的运算处理速度和性能也较早期的标准 CPU 内核提高了数倍,而且有着极低的功耗。这种单芯片解决方案降低了系统的成本和设计的复杂性。此外,为了解决 SOC 方案中数据处理性能的不足,采用 DSP 作为数据采集系统的 CPU 的研究与应用目前也逐渐引起业内重视。但是这类产品目前仅仅处于发展的初级阶段,在精度、速度或其它性能指标上并不能很好的满足要求。因此,国内外以 DSP 作为数据采集系统的采样控制和分析运算的研究与应用正在展开。1.3 本文主要内容和章节安排本文完成了一种基于数字信号处理器、通用串行总线接口的数据采集系统的方案的设计,实现了数据的采样与分析,重点针对 DSP 硬件设计和 DSP 软件设计展开研究。全文的结构安排如下:第 1 章绪论,说明了课题的来源、研究的目的、意义以及国内外研究现状。第 2 章主要DSP数据采集系统总体设计方案,给出了适合本系统的方案。第 3 章给出了系统的硬件设计过程,重点研究 DSP 硬件电路的设计。第 4 章给出了系统的软件设计过程,重点研究DSP的C语言编程思想以及用组态王开发上位机的方法,以及DSP与PC机之间的通信接口。第 5 章给出了系统测试过程和测试结果。第 6 章为本课题所做的工作进行总结,并提出今后研究工作的展望。第二章 DSP数据采集系统总体设计方案随着科学技术的飞速发展,数据处理这个环节在整个科研工作中是个重要的必不可少的过程,数据处理系统工作的质量和速度如何,对整个科研工作的影响也是很大的。因此,有必要了解数据采集系统的特点、主要性能指标以及一般的结构,在此基础上进行总体方案设计。2.1现场处理器的选择随着信息社会的不断发展,对数据采集的实时性和精度提出了更高的要求,传统的单片机显然不能满足要求。TI公司推出的系列DSP一改传统的冯。诺依曼结构,采用先进的哈弗总线结构。将程序和数据放在不同的存储空间内,每个存储空间都可以独立访问,而且程序总线和数据总线分开,从而使数据的吞吐率提高了一倍。作为TI公司的TM320F2812具有很高的性价比,广泛应用于工业控制,特别是应用于处理速度,处理精度方面要求较高的领域。TMS320F2812的主要性能6如下:(1)TMS320F2812芯片采用了高性能的CMOS技术,其主频最高可以达到150MHz,时钟周期为6.67ns。当内核电压为1.8V时,主频为135MHz;当内核电压为1.9V时,主频为150MHz。(2)支持JTGA在线仿真接口。(3)高性能的32位中央处理器。采用哈佛总线结构模式,具有快速的中断响应和中断处理能力,具有同一的寄存器编程模式,并且编程可兼容C/C+语言以及汇编语言。(4) TMS320F2812片内含有128K16位的Flash,分为4个8K16位和6个16K16位的存储段;而TMS320F2812片内含有128K16位的ROM。(5)时钟和系统控制:内含看门狗定时器模块;具有片内振荡器;支持动态锁相环倍频。(6)3个外部中断模块,外部中断模块PIE可以支持96个外部中断,当前仅用了45个外部中断。(7)128位安全密匙:可以保护Flash/ROM、OTP ROM和L0、L1 SARAM;防止系统中的软件程序被修改或读取。(8)先进的仿真模式:具有实时分析以及设置断点的功能;支持硬件仿真。(9)低功耗模式和节能模式:支持IDEL、STANDBY、HALT模式,即支持空闲模式、等待模式以及挂起模式;可以独立禁止/使能各个外设的时钟。(10) 双向的10位串行数模转换器,采样速率可以达到166KHz,精度达到210即1024;(11)带有功能强大的事件管理器:3个通用定时器、3个全比较单元、3个单比较单元、PWM脉宽调制电路、事件管理器模块中断控制电路、4个捕获单元以及QEP正交编码脉冲电路;(12) 带有串行通讯接口模块(SCI)、串行外设接口模块(SPI)、数字I/O端口模块、CAN控制器模块,便于与外部设备通讯;2.2处理器间的通信在现场总线的设计过程中,我们考虑过用RS一485的基于R线构建分布式控制系统。但是较之目前许多RS一485基于R线构建的分布式控制系统而言,基于CAN总线的分布式控制系统在以下方面具有明显的优越性。首先,CAN控制器工作于多主方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。而利用RS一485只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差。其次,CAN总线通过CAN控制器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。这就保证不会出现象在RS一485网络中,当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。而且,CAN具有的完善的通信协议可由CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些是只仅仅有电气协议的RS一485所无法比拟的。另外,与其它现场总线比较而言,CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。这些也是目前CAN总线应用于众多领域,具有强劲的市场竞争力的重要原因。由于本系统只是整个现场主控制系统中的一个子系统,需要与主系统其他子系统进行通信,并且相互能够进行实时的数据传输和处理。而CAN具有独特的设计思想,良好功能特性和极高的可靠性,现场抗干扰能力强,结构简单,只有两根线与外部相连,通信方式灵活,可以点对点、点对多点及全局广播方式发送和接收数据等等优点ll,我们选择使用DsP本身就具有的cAN总线控制器模块来完成于其它子系统的通信。2.3上位机软件的开发近年来兴起的组态软件是一种标准化,模块化,商品化的通用工业控制开发软件,只需要进行标准功能模块的软件组态和简单的编程,就可以设计出标准化,专业化,通用性强,可靠性高的上位机人机界面控制程序,且工作量较小,开发调试周期短,对程序设计员要求也较低,并且由于组态软件都是由专门软件开发人员按照软件工程的规范来开发的,使用前又经过了比较长时间的工程运行考验,其质量是有充分保证的。因此,控制组态软件是性能优良的软件产品,已成为开发上位机控制程序的主流开发工具。2.4 PC机与DSP的通信接口串行接口是指数据一位位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距离通信,但传送速度较慢一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位传送,传按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。现已确定下位机选用TI公司的TMS320F2812 DSP芯片,数据经DSP采集后,要实时将现场信息传输到PC机进行实时监控。DSP的与数据传输相关的外设有SCI、SPI、CAN。现已将CAN总线用于各个DSP间的通信,SPI为一种同步串行外设接口,使用较少。SCI接口可以工作在全双工工作模式,并且经接口芯片转换后可变成RS-232或RS-485电平标准,进而与PC机的串口相连。是一种较为实用的方案。第三章 数据采集系统硬件设计3.1电源电路设计TMS320F2812工作时所要求的电压分为两部分:3.3V的Flash电压和1.8V的内核电压。TMS320F2812对电源很敏感,所以在选用电源芯片时要求电压精度比较高的芯片。传统的线性稳压器已经不能满足要求,TI公司推出了一些双路低压差电源调整器,其中TPS67D301非常适合于DSP系统中的电源设计。该芯片带有可单独供电的双路输出,一路固定输出电压为3.3V另一路输出电压可以调节,范围为1.5-5.5V;电压差大小与输出电流成正比,且在最大输出电流为1A时,最大电压差仅为350mV;具有超低的典型静态电流,期间无效状态时,静态电流仅为1uA;每路调整器各有一个开漏复位输出,复位延时时间200ms;工作温度范围-40-125。电源电路7如图3.1所示。图3.1 电源产生电路3.2复位电路及JTAG下载口电路的设计考虑到TPS767D301芯片自身能够产生复位信号,此复位信号可以直接供DSP芯片使用,所以不用为DSP设置专门的复位电路。复位信号与DSP芯片的连接在图3.1中已经用网络标号标出。在实际设计过程中,考虑到JATG下载口7-8的抗干扰性,在与DSP相连的端口均需要采用上拉设计。JTAG主要有两大类:一类用于测试芯片的电气特性,检测芯片是否有问题;另一类用于Debug,对各类芯片以及其外围设备进行调试。JTAG下载电路如图3.2所示。图3.2 JTAG电路3.3 通讯接口电路设计3.3.1 CAN总线接口电路设计控制器局部网(CAN-Controller Area Network)属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络,随着现代风力发电机组需要监测与控制的节点增多,CAN总线以其实时性好、可靠性高、抗干扰能力强的特点凸现了出来。TMS320F2812具有一个eCAN模块,支持CAN2.0B协议。为了使F2812 eCAN模块的电平符合高速CAN总线的电平特性,在eCAN模块与CAN总线之间需要增加电平转换器件,如3.3V的CAN发送接收器SN65HVD232。该芯片是TI公司生产的3.3VCAN总线收发器,具有差分收发能力,最高速率可达1Mb/s。在本设计中,SN65HVD230是用来驱动TMS320F2812和物理总线间的接口,提供对总线的差动发送和接收功能。将收发器的数据输入端D与DSP的CANTX相连,用于本CAN节点发送的数据传送到CAN网络中;将收发器的数据输出端R与DSP的CANRX与相连,用于本节点接收数据。RS引脚为该收发器的方式选择引脚,只需将RS接逻辑低电平就可以使其工作在高速模式,此时的通信速率达到最高,没有内部输出上升斜率和下降斜率的限制,但最大速率的限制与电缆的长度有关,本设计中将RS接地。由于SN65HVD230提供3.3V电源供电,与LF2407A的供电电压相同,因此不需要做电平转换的处理。CAN总线电路8如图3.4所示。图3.4 CAN电路3.3.2 RS232接口电路设计串口通信口(SCI)是一种采用两根信号线的异步串行通信接口,又称UART。TMS320F2812中有两组SCI通信,SCIA和SCIB。每组包括两个I/O引脚,分别是串行接收数据输入引脚(SCIRXD)和串行数据输出引脚(SCITXD)。SCI支持CPU与其他使用标准NRZ(非归零)格式的异步外设之间的数据通信,SCI收发器是双缓冲的,每个都有自己独立的使能和中断标志位,两者既可以独立工作,也可以在全双工模式下同时工作。通过对一个16位波特率选择寄存器的编程,可得到64 K种不同的波特率。对于40MHz的时钟输出,波特率最高可达到2500Kb/s的速度。本设计中采用MAX232芯片作为控制器的异步串行通信转换接口。MAX232是符合RS232标准的串行通信驱动芯片,其低功耗关断模式可以将功耗减小到5W以内。在设计中需要注意的是,由于RS232是单5V供电器件,所以它同DSP间的信号线必须有电平转换,此板采用的是74LS245。RS232的接口电路如图3.5所示。图3.5 RS232串口电路3.4 DlD/0接口模块TM3s20F2812有多达41个通用、双向的数字刀O(GPIO)引脚,其中大多数都是基本功能和一般刀O引脚,TMS320LF2407的大多数刀O引脚都可用来实现其他功能。数字刀0端口采用了一种灵活的方法,以控制专用FO引脚和复用刀O引脚的功能,所有UO和复用引脚的功能可通过9个16位控制寄存器来设置。DSP的数字量输出主要用于控制继电器,继电器又可以用来控制各种设备的开关。DSP通过光隔进行隔离,然后经过一个非门进行驱动,再和继电器的线包相连。这样只需改变DSP输出电平的高低就可以控制按键的开断。数字量输入包括各种的开关信号、传感器的脉冲信号等等,其连接方法也是通过一个光隔后,输入到DSP的刀O口。在这里需要注意的是数字量开关的速度,如果速率要求不高(比如微秒级),就可以使用TLP521系列的光隔,速度在纳秒级则就需要选择快速光隔125,比如6N137。具体连接方式如图3一8。第四章 数据采集系统的软件设计4.1 时钟和系统控制为了让F2812DSP按部就班的执行相应的代码来实现功能,就得让DSP芯片“活”起来,除了给DSP提供电源外,还需向CPU不断地提供规律的时钟脉冲,这一功能由F2812内部振荡器OSC和基于锁相环PLL的时钟模块来实现。目前DSP集成的片上锁相环PLL模块,主要作用是通过软件实时的配置片上外设时钟,提高系统的灵活性和可靠性。此外,由于采用软件可编程锁相环,所设计的处理器外部允许较低的工作频率,而片内经过锁相环模块提供较高的系统时钟,这种设计可以有效地降低系统对外部时钟的依赖和电磁干扰,提高系统启动和运行时的可靠性,降低系统对硬件的设计要求。void InitSysCtrl(void) Uint16 i; EALLOW; DevEmuRegs.M0RAMDFT = 0x0300; DevEmuRegs.M1RAMDFT = 0x0300; DevEmuRegs.L0RAMDFT = 0x0300; DevEmuRegs.L1RAMDFT = 0x0300; DevEmuRegs.H0RAMDFT = 0x0300;/ 禁止看门狗模块 SysCtrlRegs.WDCR= 0x0068;/ 初始化PLL模块 SysCtrlRegs.PLLCR = 0xA; /如果外部晶振为30M,则SYSCLKOUT=30*10/2=150MHz/ 延时,使得PLL模块能够完成初始化操作 for(i= 0; iCPUFreqInMHz = Freq;Timer-PeriodInUSec = Period;temp = (long) (Freq * Period);Timer-RegsAddr-PRD.all = temp; /给定时器周期寄存器赋值Timer-RegsAddr-TPR.all = 0; /给定时器预定标寄存器赋值Timer-RegsAddr-TPRH.all = 0;/ 初始化定时器控制寄存器:Timer-RegsAddr-TCR.bit.TIF=1; /清除中断标志位Timer-RegsAddr-TCR.bit.TSS = 1; /停止定时器 Timer-RegsAddr-TCR.bit.TRB = 1; /定时器重装,将定时器周期寄存器的值装入定时器计数器寄存器Timer-RegsAddr-TCR.bit.SOFT = 1;Timer-RegsAddr-TCR.bit.FREE = 1; Timer-RegsAddr-TCR.bit.TIE = 1; /使能定时器中断Timer-InterruptCount = 0; /初始化定时器中断计数器4.5 F2812 的中断系统4.5.1 2812中断的简介2812 的 CPU 能够支持一个不可屏蔽中断 NMI 和 16 个可屏蔽的中断 INT1-INT14、RTOSINT 和 DLOGINT,2812 的 CPU 为了能够及时有效的处理好各个外设的中断请求,设计了一个专门处理外设中断的扩展模块(the Peripheral Interrupt Expansion block),叫做外设中断控制器 PIE,它能够对各种中断请求源(例如来自于外设或者其他外部引脚的请求)做出判断以及相应的决策。PIE 可以支持 96 个不同的中断,这些中断分成了 12 个组,每个组有 8 个中断,而且每个组都被反馈到 CPU 内核的 12 条中断线中的某一条上(INT1-INT12)。PIE 目前只使用了 96 个终端中的 45 个,其他的等待将来的功能扩展。PIE 内部的中 断8列12行,总共有96个中断,黄色部分表示已经使用的中断,例如:查看事件管理器 EVA 中定时器 T1 的周期中断 T1PINT-T1PINT 在行号为 INT2,列号为 INTx.4 的位置,也就是说 T1IPNT对应于 INT2,是 INT2 中的第四个中断。4.5.2 2812 的 3 级中断机制(1)外设级 假如在程序的执行过程中,某一个外设产生了一个中断事件,那么在这个外设的某个寄存器中与该中断事件相关的中断标志位(IF=Interrupt Flag)被置为 1。此时,如果该中断相应的中断使能(IE=Interrupt Flag)已经被置位为 1,外设就会向 PIE 控制器发出一个中断请求。相反的,如果虽然中断事件产生了,相应的中断标志位也被置 1 了,但是该中断没有被使能(相应的使能位为 0),那么外设就不会向 PIE 发出中断请求,但是值得一提的是,相应的中断标志位会一直保持置位状态,直到用程序清除它为止。当然,在中断标志位保持在 1 的时候,一旦该中断被使能了,那么外设立马会向 PIE 发出中断申请。 我们用具体的 T1PINT 来进行进一步的说明。当定时器 T1 的计数器寄存器 T1CNT 计数到和 T1 周期寄存器 T1PINT 的值匹配时(相等时),就产生了一个 T1PINT 事件,即 T1 的周期中断。这时候,事件管理器 EVA 的中断标志寄存器 A(EVAIFRA)中的第 7 位 T1PINT FLAG 被置为 1,这时候如果EVA 的中断屏蔽寄存器 A(EVAIMRA)中的第 7 位 T1PINT 的使能位是 1,则 EVA 就会向 PIE 发出中断请求,当然,如果该位的值是 0,也就是该中断未被使能(被屏蔽),则 EVA 不会向 PIE 发出中断请求,而且 EVAIFRA 中 T1PINT FLAG 位将一直保持为 1,除非通过程序将其清除。需要注意的是,不管在什么情况下,外设寄存器中的中断标志位都必须手工清除。2).PIE 级 当外设产生中断事件,相关中断标志位置位,中断使能位使能之后,外设就会把中断请求提交给我们的 PIE 模块。PIE 模块将 96 个外设和外部引脚的中断进行了分组,每 8 个中断为 1 组,一共是 12 组,分别是 PIE1-PIE12。每个组的中断被多路汇集进入1 个 CPU中断,例如 DPINDA,PDPINDB,XINT1,XINT2,ADCINT,TINT0,WAKEINT 这 7 个中断都在 PIE1 组内,这些中断都汇集到 CPU 中断的 INT1。 和外设级类似的,PIE 控制器中的每个组都会有一个中断标志寄存器 PIEIFRx 和和中断使能寄存器 PIEIERx,当然 x=1.12。每个寄存器的低 8 位对应于 8 个外设中断,高 8 位保留。例如T1PINT 对应于 PIEIFR2 的第 4 位和 PIEIER2 的第4位。PIE 除了每组具有刚才的 PIEIERx,PIEIFRx 寄存器之外,还有一个PIEACK 寄存器,它的低 12 位分别对应着 12 个组,即 INT1-INT12,高位保留。假如 T1 的周期中断被响应了,则 PIEACK 寄存器的第 2位(对应于 INT2)就会被置位,并且一直保持直到手动清除这个标志位。当 CPU 在响应 T1PNT 的时候,PIEACK 的第 2 位一直是 1,这时候如果 PIE2 组内发生其他的外设中断,则暂时不会被 PIE 响应送给 CPU,必须等到 PIEACK 的第 2 位被复位之后,如果该中断请求还存在,那么立马由 PIE 控制块将中断请求送至 CPU。所以,每个外设中断被响应之后,一定要对 PIEACK 的相关位进行手动服务,否则同组内的其他中断都不会被响应。(3)CPU 级 CPU 也有 标志寄存器 IFR 和使能寄存器 IER。当某一个外设中断请求通过 PIE 发送到 CPU 时,CPU 级中与 INTx 相关的中断标志位就会被置位 。例如,T1 的周期中断 T1PINT 的请求到达 CPU 这边时,与其相关的 INT2 的标志位就会被置位。这时候,该标志位就会被所存在 IFR 中,这时候,CPU 不会马上去执行相应的中断,而是等待 CPU 使能 IER 寄存器的相关位,并且对 CPU 寄存器 ST1 中的全局中断屏蔽位做适当的使能。如果IER 中的相关位被置位了,并且 INTM 的值为 0,则中断就会被 CPU 响应。在 T1PINT 里,当 IER 的第 2 位即INT2 被置位,INTM 为 0,则 CPU 就会响应定时器 T1 的周期中断。 CPU 接到了中断的请求,就得暂停正在执行的程序,转而去响应中断程序,但是此时,它必须得做一些准备工作,以便于执行完中断程序之后回过头来还能找到原来的地方和原来的状态。CPU 会将相应的 IER 和 IFR 位进行清除,EALLOW 也被清除,INTM 被置位,就是不能响应其他中断了,CPU 向其他中断发出了通知,正在忙,没空来处理你们的请求了,得等到处理完手上的中断之后才能再来处理你们的请求。然后,CPU 会存储返回地址并自动保存相关的信息,例如将正在处理的数据放入堆栈等等,做好这些准备工作之后,CPU 会从 PIE 块中取出对应的中断向量 ISR,从而转去执行中断子程序。4.6 SCISCI(Serial Communication Interface),即串行通信接口,是一个双线的异步串口,即具有接收和发送两根信号线的异步串口,一般可以看作是UART (通用异步接收/ 发送装置)。 2812的SCI 模块支持CPU 与采用NRZ (non-return-to-zero 不归零)标准格式的异步外围设备之间进行数字通信。如果设计时我们的SCI 使用的是RS232 串行接口,那么,2812就能和其他使用RS232 接口的设备进行通信。例如2812内部的两个SCI 之间,或者2812的SCI 和其他DSP 的SCI 之间均能实现通信。 2812内部具有两个相同的SCI 模块,SCIA和SCIB,每一个SCI 模块都各有一个接收器和发送器。SCI 的接收器和发送器各具有一个16级深度的FIFO(First in fist out 先入先出)队列,它们还都有自己独立的使能位和中断位,可以在半双工通信中进行独立的操作,或者在全双工通信中同时进行操作SCI 模块具有两个引脚,SCITXDA 和SCIRXDA,分别实现发送数据和接收数据的功能,这两个引脚对应于GPIOF 模块的第4 和第5 位,在编程初始化的时候,需要将GPIOFMUX寄存器的第4 和第5 位置为1,才能使得这两个引脚具有发送和接收的功能。SCIA可以产生两个中断,SCIRXINTA 和SCITXINTA,即发送中断和接收中断。4.6.1 SCI 模块的特点 1 - 具有 4 个错误检测标志:极性(parity)、溢出(overrun)、帧(framing)、中断(break)检测。 2 - 多处理器模式下具有两种唤醒方式:空闲线方式和地址位方式。通常使用的时候很少遇到多处理器模式,我们采用的是空闲线方式。 3 - 通信工作于半双工或者全双工模式。 4 - 具有双缓冲接收和发送功能,接收缓冲寄存器为 SCIRXBUF,发送缓冲寄存器为 SCITXBUF。 5 - 发送和接收可以通过中断方式来实现,也可以通过查询方式来实现。 6 - 具有独立的发送中断使能位和接收中断使能位。 7 - SCIA 模块具有 13 个控制寄存器,值得注意的是,这些寄存器都是 8 位的寄存器,当某个寄存器被访问时,数据位于低 8 位,高 8 位为 0,因此,把数据写入高 8 位将是无效的。4.6.2 SCI 模块发送和接收数据的工作原理SCI 有独立的数据发送器和数据接收器,这样能够保证 SCI 既能够同时进行,也能够独立进行发送和接收的操作。 SCI 发送数据的过程如下 :如图右半部分所示,在 FIFO 功能使能的情况下,首先,发送数据缓冲寄存器 SCITXBUF 从 TX FIFO 中获取由 CPU 加载的需要发送的数据,然后 SCITXBUF 将数据传输给发送移位寄存器 TXSHF,如果 SCI 的发送功能使能,TXSHF 则将接收到的数据逐位逐位的移到 SCITXD 引脚上。 SCI 接收数据的过程如下 :如图的左半部分所示,首先,接收移位寄存器 RXSHF逐位逐位的接收来自于 SCIRXD 引脚的数据,如果 SCI 的接收功能使能,RXSHF将这些数据传输给接收缓冲寄存器 SCIRXBUF,CPU 就能从 SCIRXBUF 读取外部发送来的数据。当然,如果 FIFO 功能使能的话,SCIRXBUF 会将数据加载到 RX FIFO的队列中,CPU 再从 FIFO 的队列读取数据4.6.3 SCI 数据格式 在进行通信的时候,一般都会涉及到协议,所谓协议就是通信双方预先约定好的数据格式,以及数据的具体含义。这种事先约定好的规则,我们就把它叫做通信协议。 在 SCI 中,通信协议体现在 SCI 的数据格式上。通常将 SCI 的数据格式称之为可编程的数据格式,原因就是可以通过SCI的通信控制寄存器SCICCR来进行设置,规定通信过程中所使用的数据格式。SCI 使用的是NRZ 的数据格式 。 NRZ 数据格式 1 - 1 个起始位 2 - 18 个数据位 3 - 1 个奇/偶/非极性位 4 - 12 个结束位 5 - 在地址位模式下,有 1 个用于区别数据或者地址的特殊位(仅用于多处理器通信) 真正的数据内容是 18 位,1 个字符的长度。我们通常将带有格式信息的每一个数据字符叫做一帧,在通信中常常是以帧为单位的。SCI 有空闲线模式和地址位模式,而在平常使用的时候,我们一般都是两个处理器之间的通信,例如 2812和 PC 机或者 2812 和 2812 之间通信,这时候,更适合使用空闲线模式,而地址位模式一般用于多处理器之间的通信。在空闲线模式下,SCI 发送或者接收一帧的数据格式如图示,其中 LSB 是数据的最低位,MSB 是数据的最高位。4.6.4 SCI 发送和接收数据的机制 通常使用的有两种方式:一种是查询方式,另一种是中断方式。 查询方式:就是程序不断去查询状态标志位,看看 SCI 是不是已经做好了数据发送或者接收的准备。当数据发送时,需要查询的是位于SCI 控制寄存器 2(SCICTL2)的第 7 为 TXREADY,发送器缓冲寄存器就绪标志。当这个位为 1 的时候,表明发送数据缓冲寄存器 SCITXBUF 已经准备好开始接收并发送下一个数据了。当数据写入 SCITXBUF,TXREADY 自动会清零,如果 TXENA 使能了,发送移位寄存器 TXSHF就会把 SCITXBUF 里面的数据发送出去。当数据接收时,需要查询的是SCI 接收状态寄存器(SCIRXST)中的 RXRDY,接收器就绪标志。当从 SCIRXBUF 寄存器中已经准备好一个字符的数据,等待 CPU 去读时,RXRDY 位就会置 1。当数据被 CPU从 SCIRXBUF 读出后,或者系统复位,都可以使 RXRDY 清 0。 中断方式:如果需要使用中断,必须使能外设自己的中断、PIE 中断和 CPU 中断 。SCIA 的发送和接收中断分别位于 PIE 模块第 9 组的第 1 和第 2 位,同时对应于CPU 中断的 INT9。当前面所述的 TXRDY 也是个中断标志位,当该位置 1 时,就会产生发送中断事件,如果各级中断都已经使能,则会响应 SCI 的发送中断函数。当接收中断标志位 RXRDY置1时,就会产生接收中断标志。如果各级中断已经使能,则会响应 SCI 的接收中断。void InitSci(void)SciaRegs.SCICCR.bit.STOPBITS=0; /1位停止位SciaRegs.SCICCR.bit.PARITYENA=0; /禁止极性功能SciaRegs.SCICCR.bit.LOOPBKENA=0; /禁止回送测试模式功能SciaRegs.SCICCR.bit.ADDRIDLE_MODE=0; /空闲线模式SciaRegs.SCICCR.bit.SCICHAR=7; /8位数据位SciaRegs.SCICTL1.bit.TXENA=1; /SCIA模块的发送使能SciaRegs.SCICTL1.bit.RXENA=1; /SCIA模块的接收使能SciaRegs.SCIHBAUD=0;SciaRegs.SCILBAUD=0xF3; /波特率为19200SciaRegs.SCIFFTX.bit.TXFIFOXRESET=1; /重新使能发送FIFO的操作SciaRegs.SCIFFTX.bit.SCIFFENA=1; /使能SCI FIFO的功能SciaRegs.SCIFFTX.bit.TXFFST=12; /发送FIFO队列为空SciaRegs.SCIFFTX.bit.TXFFI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论