用于实时控制系统的嵌入式系统经常需要对模拟量进行测量,通常的方法是以MCU为主产生采集控制时序控制模数转换器,并通过中断或查询的方式读取转换后的结果。由MCU产生采集控制时序将占用较多的系统软硬件资源。而在一般复杂的多路信号测控系统中,MCU需要进行数据存储,通讯,数据处理等多项工作,如果再需要其频繁地产生模数转换控制器的控制时序,将会影响系统的性能,严重时将会成为系统的瓶颈。本文采用CPLD产生A/D转换器的控制时序,使得CPLD主要实现A/D时序控制的功能,DSP主要实现闭环控制算法的功能。
1 系统总体结构
系统以DSP和CPLD为核心,模拟信号从模拟多路开关CD4067接人,利用CPLD进行使能其输入。使用DSP的GPIO口作为模拟多路开关的通道号的选择。A/D转换器使用MAXIM公司的MAX194,其控制时序由CPLD产生。当A/D转换结束后,将会产生一个EOC信号,该信号作为LF2407的外部中断,当DSP接收到该转换结束信号,进入相应的外部中断程序,使用SPI总线来接收A/D转换的数字值,并进行相应的处理。系统的总体结构图如图1所示。
2 硬件设计
2.1 主控DSP芯片TMS320LF2407A
系统的主控制器采用了TMS320LF2407A,3.3 V静态CMOS工艺,40 MIPS,具有16位地址总线,16位数据总线,3个独立的存储空间,包括可用的64 kB程序空间,35.5 kB数据空间以及64 kB的I/O空间。访问不同的存储空间时,DSP有相应的引脚作为选通信号,PS对应程序空间,DS对应数据空间,IS对应IO空间,均为低电平有效。本系统将MAX194 A/D转换器映射到I/O空间0000H-7fffH,其使能的逻辑表达式为:CS=A15+IS。多路模拟开关映射到I/O空间的8000H-ffffH,其使能逻辑表达式为:CS=A15+IS。式中IS是I/O空间选通信号线。
TMS320LF2407A的内部具有32 kB FLASH程序存储器,2.5 kB RAM数据存储器。FLASH可满足DSP系统程序存储的需要,而2.5 kB的数据存储器可能不够。而且研发阶段一般将程序写在RAM上,所以设计选用了Cypress Semiconductor公司的CY7C1021V33的SRAM,该SRAM为64 kB,设计中设定0000H-7ffffH为程序空间,8000H-ffffH为数据空间。外扩SRAM的逻辑表达式为:CS=(A15+PS+DS)(A15+PS+DS)。式中CS是SRAM的片选信号线,A15是DSP的第16根地址线,PS是程序空间选通信号线,DS是数据空间选通信号线。
2.2 模数转换模块MAX194
TMS320LF2407A芯片内置16通道A/D转换器,但是只能输入单极性电压,只有10位的分辨率,精度很不理想,所以需要外扩A/D转换芯片。经过多方比较,笔者选用了MAXIM公司的MAXl94芯片,它是一种逐渐次比较型的模数转换器,具有高精度,低功耗等特点。MAX194的内部设有校准电路,用于保证全温度范围内的线性度,且不需要外部的调整电路。分开的模拟和数字供电,最大限度地减少了数字耦合噪声。其主要特征有:14位分辨率,1/2 LSB非线性度,82 dB的信噪比,低功耗,单极性或双极性输入,三态串行输出。
MAX194具有两种接口模式:同步模式和异步模式。同步模式:MAX194在转换过程中,每转换完一个,数据位就输出一位。此时,SCLK应该接地,CLK即作为ADC的转换时钟又作为串行接口的移位输出时钟。异步模式:DSP只能在MAX194完成一次转换之后才能将转换结果读出,然后启动下一次的转换。这种模式降低了MAX194连续转换的速度。
使用CPLD来控制MAX194,可以方便地控制MAX194工作在同步或者异步状态,而不需要对硬件电路做任何改动,仅需要修改CPLD中的程序即可。本设计将MAX194设定在异步工作模式下,MAX194异步模式时序图如图2所示。
根据图2所示的时序图,将采样控制过程分成了4个状态:
(1)初始状态:MAX194采样控制信号初始化,各采样控制状态置零。
(2)启动采样状态:将MAX194的启动转换信号START置低并保持至少两个CLK周期。
(3)转换结束状态:将MAX194的启动信号START置高并检测转换结束状态信号EOC,当它由高电平变成低电平时即表示转换已经结束。因此,这个状态与上个状态一样是看EOC信号是否有变化,若是有变化,则转到下个状态,若是没有变化,则将一直在这个状态中循环,直到EOC信号有变化为止。
(4)转换结果输出状态:将MAX194的芯片使能信号CS置低,DSP通过SPI口将A/D转换得到的数据传人DSP中。
根据以上工作状态的描述,使用了VHDL语言编写了A/D转换采样控制模块的程序,并进行了仿真,仿真结果如图3所示。从仿真图中看出设计的A/D转换控制模块是完全符合设计要求的。
3 软件设计
TMS320LF2407A是基于C2000平台的,提供两种编程语言:C/C+十语言或汇编语言。其中,C语言编写的程序可读性、可移植性强,且大大缩短了开发周期,但执行效率低,程序出错时不易诊断。汇编语言程序效率高,但编写比较繁琐。通常做法是程序核心部分(即经常调用部分)采用汇编语言编写,以提高整个系统的执行效率,对实时性要求不高的部分采用C语言编写以降低程序的复杂度,提高程序的可读性和可修改性。本文采用C语言和汇编语言混合编写的多文件结构,主要包括主程序、读取A/D转换结果的中断程序的设计。
软件流程如图4所示。主要分成三部分:SPI配置部分,模拟开关控制部分,A/D转换控制和转换结果的读取。
3.1 SPI配置部分
对于LF2407A,串行SPI外设接口有9个寄存器,用于控制其操作。在本设计中将LF2407A的SPI接口设定在主模式下,在该模式下,采用主控制器发送伪数据,从控制器发送数据。主控制器可在任何时刻启动数据传送,因为它控制着SPICLK信号。但软件决定了主控制器如何检测从控制器何时准备发送数据。SPI接口模块的初始化程序如下:
3.2 模拟多路开关选通部分
由于多路模拟开关映射到DSP的I/O空间中的0X8000-0XFFFF之间,所以在DSP程序中,对0X8000-0XFFFF之间进行一个读操作,由DSP的GPIO选择的通道就被选通,信号由CD4067输出到A/D转换器MAXl94。
读地址产生的低电平信号CS的保持时间由访问I/O空间的等待时间决定的,通过设置等待状态寄存器来保证获得有效的延时时间。
3.3 MAX194转换控制部分
由于A/D映射DSP的I/O空间的0x0000~0x7fff之间,类似于模拟多路开关,也需要对该空间进行一个读操作。
4 结语
多路数据采集系统在嵌入式测控系统中具有很强的实用价值。本文设计了一个基于TMS320LF2407A与EPM570T100C5N的MAX194的多通道采集系统,详细描述了MAX194,CPLD与DSP之间的硬件与软件设计,该系统在笔者参与的嵌入式测量控制系统中得到了成功的应用。