一种基于ARM的多路同步的A/D和D/A设计
介绍一种基于ARM的高精度多路同步的数据采集与输出控制系统的设计方法。设计选用德州仪器公司生产的AD芯片ADS8556和DA芯片DAC8574,分别采用SPI接口和IIC接口与ARM9芯片S3C2440连接,阐明其硬件设计与软件设计方法。系统可实现多路且同步、高速高精度的数据采集与输出控制功能。 ARM处理器是一种32位精简指令集RISC微处理器,片内集成了丰富的硬件资源,广泛的应用于许多嵌入式系统中。S3C2440是一款基于ARM920T内核的32位RISC嵌入式处理器,运行主频可达400MHz。本文阐述选用S3C2440处理器设计的一种同步、高速、高精度、多通道的数据采集与信号输出系统的设计方法。
1 多路同步A/D设计 1.1 ADS8556的功能 系统选用TI公司生产的16位6路同步逐次逼近型模数转换芯片ADS8556。输入模拟信号电压范围为-12V~+12V。常规应用下功耗为251.7mW,最大功耗为298.5mW,信噪比可达91.5dB。ADS8556芯片内部包含6个独立的采样保持模块和对应的6个独立的模数转换模块,可实现对6路信号的同时同步的模数转换。ADS8556工作模式分为硬件模式和软件模式,本设计采用硬件模式。在硬件模式下ADS8556的功能设置(如每对通道的转换使能、参考电压选择等)都是通过对相关引脚设置高低电平实现的。ADS8556支持并行和串行接口方式,本设计采用串行SPI接口与S3C2440连接。采用串行接口的优点是节约S3C2440的引脚资源,S3C2440绝大多数引脚是功能复用的,若采用并行接口会占用其16个I/O引脚资源。 ADS8556具有3个串行数据输出端口SDO_A、SDO_B、SDO_C,转换结果通过端口使能可选择这3个串行端口中的1个、2个或3个工作。当3个端口都选用工作时,每个串行端口上输出对应2路每路16位共32位的转换结果,输出时间需要32个时钟周期,每路最大采样率可达450kS/s。当选择2个串行端口时,每个端口输出3路共48位转换结果,输出时间需要48个时钟周期,每路最大采样率可达375kS/s。由于S3C2440只有2个SPI串行接口,所以至多选择ADS8556的2个串行输出端口与其连接。
1.2 ADS8556与S3C2440接口电路设计 本设计选用ADS8556的1个SPI串行输出端口SDO_A与S3C2440的1个SPI接口SPI0连接,SDO_A端口输出全部6路共96位转换结果,输出时间需要96个时钟周期,每路最大采样率可达250kS/s。SPI串口以主从方式工作,S3C2440作为主机,ADS8556作为从机,需要4根或3根线连接,3根用于单向传输,4根连接线分别是MOSI(主机输出/从机输入),MISO(主机输入/从机输出),SCLK(时钟信号),CS(片选使能),连接方式如图1所示。其中SPI0接口只用了3根连接线SPIMISO0、SPICLK0和NSS0,未使用SPIMOSI0,这是由于本设计选择ADS8556工作于硬件模式,S3C2440没有给ADS8556输入数据,其功能的设置(如每对通道的转换使能、参考电压选择等)都是通过对相关使能引脚设置高低电平实现的。若在软件模式下,这些功能的选择是由S3C2440通过SPIMOSI对ADS8556内部相应寄存器进行赋值实现的,此时其相关使能引脚均接地。
图1 ADS8556与S3C2440接口连接示意图
1.3 ADS8556的接口程序设计 S3C2440作为主机,ADS8556作为从机,程序中要对S3C2440的SPI串行端口进行初始化设置,表1所示为相关引脚配置。
表1 ADS8556与S3C2440的接口引脚配置 图2所示为ADS8556的采样程序流程图。S3C2440的SPI接口工作于主模式,数据传输采用中断模式。本设计只使用了ADS8556的6路转换通道中的4个通道。 图2 ADS8556工作程序流程图 2 多路同步D/A设计 2.1 DAC8574的功能 DAC8574是带有IIC接口的16位4路同步数模转换芯片。DAC8574带有一个IIC串行接口,包括SCL串行时钟输入和SDA串行数据输入两个引脚。输出四路模拟电压为VOUTA、VOUTB、VOUTC、VOUTD,电压范围为+2.7~+5.5V。由外部提供参考电压VREFH、VREFL。A0、A1为IIC地址选择,A2、A3为扩展地址选择,A1、A0、A3、A2共可确定16个地址,在IIC总线上最多可扩展16个DAC8574。本设计在IIC总线上只使用一个DAC8574,则设置地址A1A0A3A2=0000。LDAC为同步输出电压更新。 DAC8574有三种工作模式:标准模式、快速模式、高速模式。标准模式时传输速率为100kbit/s,串行时钟频率fscl=100kHz,更新率为5.3kS/s;快速模式时传输速率为400kbit/s,fscl=400kHz,更新率为22.22kS/s;高速模式时传输速率为3.4Mbit/s,fscl=3.4MHz,更新率为188.88kS/s。标准模式和快速模式传输线协议基本相同,高速模式不同于标准和快速模式。DAC8574与S3C2440通过IIC总线连接时,DAC8574作为从机,S3C2440作为主机。本设计将DAC8574设置为高速模式。 2.2 DAC8574与S3C2440接口电路设计 DAC8574通过IIC接口SDA、SCL引脚与S3C2440连接,其工作模式选择、通道使能、LDAC功能是由S3C2440通过SDA输入设定的。如图3所示,电源电压+5V,参考电压+5V,IOVDD为+3.3V、LDAC接地。 图3 DAC8574接口电路
2.3 DAC8574的接口程序设计 DAC8574作为从机,S3C2440作为主机,根据高速模式传输协议编写DAC8574的接口程序。图4所示为设计的DAC8574接口程序的流程图。主机先产生一个开始状态,随后产生高速主机编码的串行数据00001XXX。从机设备不需要确认高速主机编码,但必须能够识别并改变自身内部设置以支持3.4Mbit/s的高速传输。主机产生一个重复开始状态,接着发送一个有效的从机地址字节,本设计的从机地址字节为10011000,包括7位DAC8574的地址1001100和1位读写控制位0(主机写入从机)。地址匹配的从机识别地址后产生确认信号。本设计将控制字节设置为00010000,主机发送控制字节设置从机运行模式后,从机产生确认信号。随后,主机发送数据最高有效位MSB,从机产生确认信号,主机再发送数据最低有效位LSB,从机产生确认信号并开始数据更新,这样DAC8574就完成了一次数据接收与数模转换。之后主机可以继续向从机发送数据,最后主机产生停止状态结束当前的数据传输。 图4 DAC8574 工作程序流程图 本文论述了一种基于ARM的实时、高速、同步、高精度、多通道的数据采集与输出控制的设计方法。可以通过对程序的修改而改变其通道数、转换速率、传输速率,因而具有一定的灵活性。而基于ARM处理器设计的系统还具有成本低、功耗低、实时性能好、智能程度高、可靠性高、体积小、易扩展、功能强、开发周期短等优点,在工业控制、信息技术领域有着广阔的应用空间。 |