新闻中心

EEPW首页 > 测试测量 > 设计应用 > 基于A/D芯片AD1674设计的数据采集电路

基于A/D芯片AD1674设计的数据采集电路

作者:时间:2008-07-11来源:嵌入式技术网收藏

  1.3.2 A/D转换数据的读取方式

本文引用地址:http://www.amcfsurvey.com/article/85599.htm

  在系统中,计算机读取A/D转换数据的方式一般有三种,即查询、中断和方式。其中查询方式就是通过查询标志位来判断A/D是否转换完毕,如果 A/D转换完毕则读入转换的数据。这种方式下CPU主动查询,通过CPU读取A/D转换的数据,故实现的硬件简单,但数据读取速度慢,同时在 WINDOWS的多任务执行方式下,存在着A/D转换数据不能及时读入的问题。中断方式是利用A/D转换完毕的标志位触发一硬中断,然后中断管理器向 CPU提出中断申请。在中断允许的情况下,执行中断服务程序读入转换的数据。这种方式实现的硬件也比较简单,但中断服务程序的介入,引起程序的断点的不可预测性,这样会导致程序的失控。方式利用A/D转换完毕的标志位向控制器提出DMA申请,当DMA控制器从CPU取得总线控制权时,接口便与内存之间直接地进行数据交换(不经过CPU)。这种方式下,由于不经过CPU读入数据,故提高了数据传输速度。同时由于A/D转换器主动申请数据传输,而DMA申请比外设中断申请的优先级高,A/D转换数据能够及时读入,系统性能也得到了提高,但实现的硬件较前两种方式复杂。

  本电路设计有查询、中断和DMA三种数据传输方式。通过一拨码盘开关来选择不同的的传输方式。如图3所示,当A/D转换完毕时,标志位STS由高电平变为低是电平,从而引起D触发器U20A触发,U20A的输出Q由低电平变成高电平。当拨码盘开关S1选择为查询方式时,该U20A的输出Q通过一个三态门(端口地址为&0X23F)与数据线D6相连,提供计算机查询;在中断方式下,该U20A的输出Q直接与硬中断引脚IRQ2相连,当Q由低电平变成高电平时,引起计算机中断。在前两种方式下,通过软件编程,向一锁存器U22的最低位写入0或1,选择读取A/D转换数据的高八位或低四位,且由专门的端口(地址为&0X23D)读取A/D转换的数据。实现的硬件电路简单。而在DMA方式下,通过应答信号DACK1寻址,并不由专门的端口读取A/D 转换的数据,故选择A/D转换数据的高八位或低四位的功能必须由硬件电路来实现,比较而言,电路更复杂一些。

  下面介绍DMA方式下的具体实现电路。DMA请求电路由两个D触发器组成,当A/D转换完毕时,U20A的输出Q由低电平变成高电平,DRQ1=1, DMA通道1发出请求,DRQ1被认可后进行两次DMA传输。在第一次DMA传输期间,触发器U20B的输出Q为低电平,A/D转换数据的高八位传输到指定内存单元。在第一次DMA传输结束时,DACK1由低电平变成高电平,触发器U20B的输出为高电平,但触发器U20A的输出Q仍然是高电平,该电平申请第二次DMA传输。在第二次DMA传输期间,触发器U20B的输出为高电平,A/D转换数据的低四位传输到指定的内存单元。当第二次DMA传输结束时, DACK1由低电平变成高电平,使触发U20B输出低电平,同时触发器U20A的输出Q变为低电平,DRQ1=0变为低电平,DRQ1=0,DMA通道1 的请求被撤销,结束一次A/D转换12位数据传输过程。

  2 软件设计

  该接口电路支持各种带有口指令操作的高级语言和8086/8088汇编语言。以下就以Turbo C为例对相应的部分编程,经供参考。

  2.1 A/D编程

  该编程适合于中断或查询方式下的编程,端口地址=0x238~0x23f。

  outportb(0x23c,0x00); /*初始化清零*/

  outportb(0x23a,0x00); /*选择传输高8位数据并为A/D转换作准备*/

  {

  }; /*启动A/D并检查A/D是否转换完毕*/

  dh=inportb(0x23d); /*输入高八位数据*/

  outporth(0x23a,0x01); /*选择传输低四位数据*/

  dl=inportb(0x23d); /*输入低四位数据*/

  outportb(0x23a,0x00); /*选择传输高8位数据并为A/D转换作准备*/

  dl=dl>>4;

  dh1=dh;

  dl=(dh1<<4)+dl;

  dh=dh>>4; /*将高八位低四位数据转化为高四位低八位数据*/

  d=dh*256+dl; /*拼合12位数据*/

  u=(d-2047)*10.0/4096; /*转换电压值*/

  2.2 写启动和查询方式的编程

  outportb(0x23d,0x00); /*写启动A/D转换*/

  if(inporth(0x23e)&0x80);/*D7=1则A/D转换完毕*/

  2.3 8253定时器编程

  outportb(0x23b,0x03); /*set 8253 timer into writing mode word state*/

  outportb(0x23f,0x36); /*set 0 channel working with mode 3*/

  outportb(0x23f,0x74); /*set 1 channel working with mode 2*/

  outportb(0x23b,0x00); /*set to write data to 0 Channel mode */

  outportb(0x23f,0x02); /*write low data to 0 channel*/

  outportb(0x23f,0x00); /*write high data to 0 channel*/

  outportb(0x23b,0x01); /*set to write data to 1 channel*/

  outportb(0x23f,LC1); /*write low data to 1 channel*/

  outportb(0x23f,HC1); /*write high data to 1 channel*/

  outportb(0x23b,0x0c); /*启动CH0,CH1工作*/

  其中采样频率决写入计数器1的计数值。

  2.4 DMA方式下PC主机中8237A DMA控制器编程

  8237A DMA控制器具有4个DMA通道,该接口电路使用通道1。

  outportb(0x0x,0x05); /*mask DMA channel 1*/

  outportb(0x0c,0x00); /*clear byet pointer flip*/

  outportb(0x0b,0x55); /*write mode word.demand mode,address tincrease,autoinitialization,write trasfer and select 1*/

  outportb(0x83,SEG); /*write page number*/

  outportb(0x02,LA); /*write low 8 bit address*/

  outportb(0x02,HA); /*write hige 8 bit address*/

  outportb(0x03,LC); /*write low 8 bit count data*/

  outportb(0x03,HC); /*write hige 8 bit count data*

  outportb(0x03,0x01); /*clear mask bit of DMA channel*/

  其中写入11口的数值应按照具体的工作方式来确定,写入131口的页地址SEG取20位绝对地址的最高4位的数值,而将低16位地址的数值写入地址寄存器。写基值字节计数寄存器的字节总数值应为需要传输的字节数减1。

  2.5 中断服务程序的编写以有中断向量的装入

  void interrupt int9() /*中断服务程序*/

  { disable();

  ah5=inportb(0x23d); /*输入高八位数据*/

  outportb(0x23a,0x01); /*选择传输低四位数据*/

  dl5=inportb(0x23d); /*输入低四位数据*/

  outportb(0x23a,0x00); /*选择传输高8位数据并为A/D转换作准备*/

  outportb(0x23c,0x00); /*A/D转换完毕的标志位清零*/

  outportb(0x20,0x20);

  enable();

  }

  void stall 1(void interrupt(*faddr)())

  {

  disable();

  setvect(INT1,faddr); /*装入中断服务程序*/

  enable();

  }

  本文介绍一种基于AD1674设计的接口电路,该电路具有查询、中断和DMA三种数据传输功能,同时采用8253定时脉冲或端口写两种A/D启动方式。其中 DMA方式实现了数据的快速传输,而两种A/D启动方式将会使采样率的设定更加灵活。应用本文原理设计的可插入通用PC机的数据采集板已用于我们的高频多谱勒和到达角探测分析系统中,取得了满意的效果。这些设计方法和原理在其它实际数据采集系统的设计过程中,也会具有重要的参考价值。

DIY机械键盘相关社区:机械键盘DIY



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭