物联传媒 旗下网站
登录 注册
RFID世界网 >  技术文章  >  航空  >  正文

基于DSP和LTC1859数据采集系统设计

作者:RFID世界网 收编
来源:电子网
日期:2010-03-29 10:46:53
摘要:现在很多测控制系统为了提高抗干扰的能力,传感器输出信号多为 3线制的差分信号,如航空舵机的控制系统 ,通常采用的方法是把差分信号通过复杂电路处理再进行数据采集 ,这样不仅增加了硬件成本,还降低系统精度。
  1 引言

  现在很多测控制系统为了提高抗干扰的能力,传感器输出信号多为 3线制的差分信号,如航空舵机的控制系统 ,通常采用的方法是把差分信号通过复杂电路处理再进行数据采集 ,这样不仅增加了硬件成本,还降低系统精度。本系统设计的基于 DSP和 LTC1859的 16位高精度数据采集系统 ,不仅可以实现多路的单信号输入 ,还可以实现多路差分信号的输入 ,对输入的信号的范围可以通过软件满足不同的要求,真正实现差分输入抑制共模噪声。

   LTC1859是凌力尔特公司最新推出的一款高性能的 8通道、 16位、100ksps的 AD转换器,每个通道可通过软件实现 0~5V,0~10V,0~±5V,0~±10V的不同范围的输入电压,同时还可以实现单输入和差分信号输入的选择,可承受至 ±25V的故障保护。LTC1859的多路复用器可以配置为接受 4个差分输入、 8个单端输入、或差分与单端输入的组合。该器件提供了卓越的 DC性能,具有在整个温度范围内的 15位无漏失码和±3 LSBMAX INL。LTC1859具有较好的失调、满标度增益和通道至通道匹配。适用于多通道高分辨率应用,如仪表、数据采集系统和工业过程控制。它与 CPU之间采用的 SPI总线通信。LTC1859用单 5V电源工作,同时仅消耗 40mW功率。LTC1859还具有温度系数为 ±10ppm/oC的 2.5V内部基准,如果需要较高的准确度,还可以从外部驱动。对于那些对功耗敏感的应用, LTC1859提供了两种断电模式,在基准仍保持运行状态时功耗降至 27.5mW(打盹模式),或基准完全断电时功耗降至 40uW(休眠模式)。LTC1857和 LTC1858分别是引脚兼容的 12位和 14位器件。本系统的 CPU为 TI公司的 TMS320C2407A,主频可达 40MHZ,它有标准的 SPI总线,丰富的外设,非常适合与 LTC1859构成高精度的数据采集系统和控制系统的。 

  2 硬件系统设计

  本系统设计了由 2块 LTC1859构成 8通道的差分信号输入,也可以实现 16通道的单路信号输入,或者它们之间的组合,详细电路如图 1。本电路具有通用性,在实际应用中性能稳定,效果很好。下面针对 LTC1859芯片引脚对对电路进行详细分析。 

  CH0~CH7是8路模拟输入通道,在本系统中构成了4路差分输入信号,每路差分输入信号接3000P的滤波电容去干扰。 MUXOUT+、MUXOUT-为模拟复用器的正负输出,把它们连在ADC+、ADC-上进行正常操作。 Vref为2.5V的基准电压输出。 ODD为数字输出缓冲器的电源,这样使SPI总线上的数字信号的电压等于 ODD的接入电压,本系统采用的 DSP2407,它对输入的数字信号要求为3.3V,所以这里接的 3.3V电压,就不需要另加电平转换电路。 BUSY为输出转换器的状态,当正在转换中为低,转换结束变高,连在 DSP的I/O口上, SDO为SPI总线的串行数据输出,接在 DSP的SPISOMI引脚上,SDI为SPI总线的串行数据输如,接在DSP的SPISIMO引脚上 ,SCK为SPI总线的时钟,接在DSP的SPICLK上。RD为引脚SDO数字输出的能使信号,当 RD为低能使输出,当 RD为高SDO为高阻抗,该引脚接在 DSP的I/O口上,由于 LTC1859没有片选信号,为了让多片 LTC1859在总线上不发生冲突,把要工作的 LTC1859的RD置为低,把要没工作的LTC1859的RD置为高。CONVST为启动转换引脚。其它引脚分别接电源、数字地、模拟地,就不再详细介绍。 


图 1 硬件系统图 Fig1 Hardware system configuration 


  3 软件设计

  由于采用标准 SPI总线通信,软件的关键是 DSP和 LTC1859之间的时序匹配,首先介绍 LTC1859软件配置。

  3.1  LTC1859不管是在发送系统中还是接收系统中,都是在 SCK的下降沿传输,上升沿被捕获,这就要求 DSP在进行 SPI初始化时采用上升沿无延时模式。8位的控制字通过 SDI输入,用于配置 LTC1859以进行下一个转换,同时前一个转换输出在 SDO上输出,在数据交换的末端在 CONVST上施加一个上升沿启动被请求的转换。转换完成后,转换结果将在将在下一个数据传送周期提供。LTC1859的 8位命令控制字在首 8个 SCK的上升沿按时间顺序记录到 SDI输入中,SDI随后的输入的位被忽略。控制字的 8位定义如表 1 

  其中复用器通道选择如表 2 

  其中输入范围选择如表 3 

  3.2 下面详细介绍软件编写,考虑到 SPI总线的时钟很快,采用查询方式,其软件流程如图 2,这里只介绍 LTC1859(1)的流程及源代码,其它原理都一样。


图 2流程图 Fig2 Flow chart 


  程序源代码及其详细注释:
 
  void SPIAD_Init() 
  {   MCRB=MCRB | 0x001C; // SPISIMO,SPISOMI,SPICLK特殊功能方式  SPICCR=0x000F;  // 16bit数据, 上升沿无延时模式  SPICTL=0x0006; //禁止中  断  SPIBRR=0x0004; // 8M波特率 ,40M/5=8M   SPICCR=SPICCR | 0x80; 
  } 
  void ADLTC() 
  {   PADATDIR=PADATDIR|0x1010;  //将 A4即 LTC2RD置高  PADATDIR=PADATDIR&0xFFFD;  //将 A1即 LTC1RD置低  PADATDIR=PADATDIR&0xFFFE;  //将 A0  即 LTC1CON(CONVST)置低 PADATDIR=PADATDIR|0x0101; //将A0即LTC1CON(CONVST)拉高启动转换  asm(" NOP ");    while((PADATDIR&0x0004)!=0x0000); //等待 A2即 LTC1BUSY(BUSY)变低  PADATDIR=PADATDIR&0xFFFE; //A2即 LTC1BUSY(BUSY)变低后再将 A0即 LTC1CON(CONVST)拉低  while((PADATDIR&0x0004)!=0x0004); //等待 A2即 LTC1BUSY(BUSY)变高 SPITXBUF=(0x0004<<8);  // 输入通道 1控制字,当 LTC1BUSY变高说明转换完成 ,则可写入下次转换的命令字  while  ((SPISTS&0x0040)!=0x0040); //等待总线传输  
  SPIRXBUF=SPIRXBUF;  PADATDIR=PADATDIR|0x0101;  asm(" NOP ");    while((PADATDIR&0x0004)!=0x0000);PADATDIR=PADATDIR&0xFFFE;           
  while((PADATDIR&0x0004)!=0x0004);  SPITXBUF=(0x0014<<8);  
  while((SPISTS&0x0040)!=0x0040); 
  /*虚读寄存器以清除中断标志*/  //将A0即LTC1CON(CONVST)拉高启动转换
  //等待 A2即 LTC1BUSY(BUSY)变低 //A2即 LTC1BUSY(BUSY)变低后再将 A0即 LTC1CON(CONVST)拉低 //等待 A2即 LTC1BUSY(BUSY)变高 //输入通道 2控制字,      当 LTC1BUSY变高说明转换完成,则可写入下次转换的命令字 //等待总线传输 
ADINRESULT[4]=(0x0FFF&SPIRXBUF);   /*保存转换结果 */   SPIRXBUF= SPIRXBUF; /*虚读寄存器以清除中断标志*/  PADATDIR=PADATDIR|0X0101; //将 A0即 LTC1CON(CONVST)拉高启动转换 asm(" NOP ");  while((PADATDIR&0x0004)!=0x0000); //等待 A2即 LTC1BUSY(BUSY)变低 PADATDIR=PADATDIR&0xFFFE;  //A2即 LTC1BUSY(BUSY)变低后再将 
  A0即 LTC1CON(CONVST)拉低  while((PADATDIR&0x0004)!=0x0004); //等待 A2即 LTC1BUSY(BUSY)变高  SPITXBUF=(0x0024<<8);  //输入通道3控制字当LTC1BUSY变高说明转换完成,
  则可写入下次转换的命令字 
  while((SPISTS&0x0040)!=0x0040); //等待总线传输 
  ADINRESULT[5]=SPIRXBUF; /*保存转换结果 */  
  SPIRXBUF=SPIRXBUF;  /*虚读寄存器以清除中断标志*/ 
  ……………………………………………通道 3、4的转换程序原理一样 } 

  4 结 论 

  本文作者创新点是成功实现了基于 DSP和 LTC1859的 16位高精度数据采集系统,给出了全新实用的硬件和软件设计,特别适合差分信号和电压范围变化较大的系统该设计,对与 LTC1859与其它的 CPU的设计也有很大的参考价值。该系统性价比高,具有一般通用性能,有一定的应用推广价值。