基于SPI总线的多路数据采集系统的设计李宁,黄元峰,雷元林,彭瑾(武汉工程大学电气信息学院湖北武汉430205)摘要:本文介绍了高精度AD芯片AD7891与C8051F040单片机组成的数据采集系统。通过SPI总线,可将AD7891与C8051F040直接连接,方便的实现了8路模拟量的高速采集和传输,并给出了SPI总线的接口电路及软件设计。关键词:高精度;单片机;SPI;高速采集中图分类号:TP23文献标识码:ADesignofhighspeedserialdataacquisitionsystembaseonSPIbusLINing,HUANGYuan-feng,LEIYuan-lin,PENGJin(SchoolofElectricalandInformationEng.WuhanInstituteofTechnology,Wuhan,430205)Abstrct:ThisarticleintroducedthehighaccuracyADchipAD7891andC8051F040chipmicrocomputerdataacquisitionsystem。ThroughtheSPIbus,AD7891canbedirectlyconnectedwithC8051F040,andthusfacilitatetherealizationofthe8channelanaloghighspeeddataacquisitionandtransmission,andgivestheSPIbusinterfacecircuitandsoftwaredesign.Keywords:Highaccuracy;Microcomputer;SPI;Highspeeddataacquisition随着微处理器的发展及其在各领域的广泛应用,人们对电子测量技术和电子仪器系统提出越来越高的要求,对测试速度和精确度的要求也与日俱增。测试系统主要包括对实时数据的高速采集、现场显示和分析处理三部分,其中最重要的一环就是实时数据高速采集,因为它关系到能否真实反映被测对象的状态和性能。根据实际项目需要,本文基于80C51F040单片机的SPI总线和AD7891芯片,设计实现了多路数据的高速采集。文中给出了系统的主要硬件电路和对时序控制的软件编程。1系统的硬件实现本数据采集系统功能是能对多路电压和电流进行高速采集和分析处理,其要求精度高,线性度好,采集电压要求以1mV为单位,模拟信号输入范围为-10V~+10V。系统处理芯片采用SiliconLaboratories公司出品的C8051F040单片机是完全集成的混合信号系统级芯片(SOC),具有与MCS-51完全兼容的指令内核,该系列单片机采用流水线处理(pipeline)技术不再区分时钟周期和机器周期,能在执行指令期间预处理下一条指令,提高指令执行效率。而且大部分C8051F040单片机具备控制系统所需要的模拟和数字外设,包括看门狗、ADC、DAC、电压比较器、电压基准输出、定时器、PWM、定时器捕捉和方波输出等,并具备多种总线接口,包括UART、SPI、SMBUS(与I2C兼容)总线以及CAN总线。C8051F系类单片机采用FlashROM技术,集成JTAG,支持在线编程。C8051F系列单片机诸多特点和优越性,使其广受单片机系统设计工程师青昧,成为很多测控系统设计的首选机型[1]。虽然C8051F040内部提供A/D转换器,但在实时高速采集中易受干扰,性噪比比较低,A/D转换速度不能满足高速数据采集系统的要求,为了满足系统的指标、提高数据的精确性采样和系统的抗干扰能力,本数据采集系统根据实际情况采用外扩的A/D转换芯片[2]。本数据采集系统采用的A/D芯片是美国ADI公司推出的一种AD789112位数据采集系统(DAS),它具有并行和串行两种工作模式,适合各种微处理器、控制器以及数字信号处理机接口。AD7891内含有多路转换器、采样保持放大器、12位高速ADC、+2.5V基准电压源和高速接口电路,并有8个具有过压保护的模拟信号通道,AD7891-1可承受的过压为±17V。AD7891的模数转换时间是1.6us,采样时间为1.4us。当只对一个通道信号采样时,采样率为500kSPS;当对8个通道信号逐个采样时,采样率为62.5kSPS,AD7891-1使用硬件或软件方法控制转换开始得数据采样时间分别为0.6us和0.7us,相应的数据采集率分别为454.5kSPS和435kSPS。AD7891采用单电源工作,功耗低,可选择输入信号的范围,也可并行或串行工作,非常适合用于数据采集系统、电机控制、移动通信系统和测试设备等方面的应用[3]。AD7891管脚功能说明见表1表1AD7891管脚功能说明Tab.1theAD7891pinfunctionsdescription符号功能VINXAVINXB模拟信号输入。具有8个模拟信号输入通道VDD+5V电源,+5V±5%AGND模拟地DGND数字地STANDBY待机模式输入。芯片正常工作时,此端输入为高电平;当输入为低电平时,芯片处于待机状态REFOUT/REFIN基准电压输出/输入端REFGND基准地CONVST转换开始控制端。当输入为一负脉冲时,在脉冲上升沿时,A/D转换开始EOC转换结束。当A/D转换结束时,此端输出为一脉宽80ns的负脉冲MODE接口模式控制。当输入为低电平时,AD7891处于串行工作模式;当输入为高电平时,AD7891处于并行工作模式。CS片选信号RD读信号WR写信号A0、A1、A2地址输入。控制寄存器中的3位,决定模拟信号通道的选择SWCON软件模数转换开始控制位SWSTBY软件待机模式控制FORMAT数据格式选择SCLK串行时钟输入TFS发射框架同步脉冲RFS接收框架同步脉冲DATAOUT串行数据输出DATAIN串行数据输入TEST测试端通常在高速数据采集系统中,AD7891和单片机之间的接口有串行和并行两种方式,采用软件控制数据线的方式来满足系统所要求得采集速度。由于C80C51F040单片机具有SPI总线接口功能,所以本数据采集系统采用串行工作方式,数据的读取通过单片机的SPI总线来传输,不仅能够满足采集系统的快速性要求,在硬件上也较易实现[4]。图1是AD7891与80C51F040单片机的接口电路。图1AD7891与C8051F040单片机接口电路Fig.1theAD7891andC8051F040MCUinterfacecircuit2系统的软件实现为了实现对模拟量的高速采样,首先要对AD7891的时序进行分析,图2为AD7891的串行读操作时序图,图3为AD7891的串行写操作时序图。图2AD7891的串行读操作时序图Fig.2AD7891serialreadoperationsequencediagram图3AD7891的串行写操作时序图Fig.3AD7891serialwriteoperationsequencediagram图2为AD7891的串行读操作时序图,从图2中可以看出,当单片机要从AD7891中读取数据时,必须先将RFS置低,串行数据时一位一位的接收的。在整个数据传输过程中,RFS必须一直保持低电平。传输的数据格式是一次传输16位数据,数据的传输是以FORMAT位开始的,紧接着是3位地址位,接下来是12位数据位,存放的是12位AD转换的值,每一位数据都是在时钟的上升沿开始发送的,16位数据发送完成后,DATAOUT线一直保持高阻态直到RFS和SCLK其中任意一个有一个上升沿的脉冲出现[5]。图3为AD7891的串行写操作时序图,从图3中可以看出,当单片机向AD7891中写数据时,必须先将TFS置低,AD7891的控制寄存器只接收前6位数据,前三位A0、A1、A2用于配置AD采样通道,在接收完前6位数据之后不再接收数据,数据的接收都是在时钟的下降沿进行的[6]。下面给出通道1采集的主要程序代码(C语言){……TFS_AD7891=0;//AD7891接收数据RFS_AD7891=1;SPIF=0;SPI0DAT=0x10;//选择通道1while(SPIF==0);//等待数据传输结束delay(2);//延时RFS_AD7891=0;//AD7891发送数据TFS_AD7891=1;SPIF=0;SPI0DAT=0;//将数据寄存器置0while(SPIF==0);//等待AD转换的结束ad_result_all[0]=SPI0DAT;//接收16位数据的第一个字节SPIF=0;SPI0DAT=0;while(SPIF==0);ad_result_all[1]=SPI0DAT;//接收16位数据的第二个字节……}3小结本文基于串行SPI通信方式,设计了一个高速数据采集系统,用SPI总线来实现数据的读取,能够满足数据采集系统的要求,具有硬件结构简单,软件编程容易的特点。参考文献:[1]童长飞.C8051F系列单片机开发与C语言编程[M].北京航空航天大学出版社,2005.TONGChang-fei.C8051FSeriesMCUdevelopmentandClanguageprogramming[M].BeihangUniversitypress,2005[2]潘琢金,C8051F040/1/2/3/4/5/6/7混合信号ISPFLASH处理器数据手册[Z].新华龙电子有限公司.PANZhuo-jing.C8051F040/1/2/3/4/5/6/7mixedsignalISPFLASHprocessor[Z].XinhuadragonelectronLimitedcompany.[3]徐爱均,彭秀华.单片机高级语言C51Windows环境编程与应用[M].北京电子工业出版社,2003.XUAi-jun,PENGXiu-hua.SinglechipC51languageprogramminganditsapplicationinWindowsenvironment[M].BeijingPublishingHouseofelectronicsindustry,2003.[4]陈劲超,利用增强型并口设计12位数据采集系统[J].电子工程师,2001.CHENGJing-chao,Useofenhancedparallelportdesignof12bitdataacquisitionsystem[J].ElectronicEngineer,2001[5]刘春生,游志刚,李晓波.AD7891高速数据采集系统的原理与应用.[J]电子工程师,2001.LIUChun-sheng,YOUZhi-Gang,LIXiao-bo.AD7891highspeeddataacquisitionsystemprincipleandApplication[J].ElectronicEngineer,2001[6]张迎新,雷文,姚静波.C8051F系列SOC单片机原理及其应用[M].国防工业出版社,2005.ZHANGYing-xin,LEIWen,YAOJing-bo.C8051FseriesofSOCsinglechipmicrocomputerprincipleandApplication[M].NationalDefenseIndustryPress,2005.第一作者简介:李宁(1986-),湖北省咸宁市人,硕士。研究方向:电力电子技术。