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

随着科学技术的发展,计算机在测量与控制中的应用日益广泛。为了使外部世界的模拟信号与计算机接口,需要进行模/数转换,该转换一般通过a/d芯片来完成。目前市场上出现了各种a/d芯片,且各种a/d芯片具有不同的控制方式和应用条件。对于高速数据采集,最大采样频率取决于a/d的转换时间以及数据的传输时间。提高最大采样频率可通过缩短a/d的转换时间或提高数据的传输速度来实现。如果与pc机接口,数据的传输速度决定于pc机的主频以及数据的传输方式,常用的有查询和中断方式,若采用dma传输方式则可进一步提高数据的传输速度。本文选取ad1674芯片,设计具有查询、中断和dma三种数据传输方式的数据采集电路。该电路既可以采用定时器定时,通过8253定时器的控制设煊可变的采样变(步进间隔为1μs),获得高准确的采样间隔;也可以采用软件定时,通过端口写启动a/d来实现。在时序方面,该电路解决了a/d控制信号与计算机时序匹配问题,可能与高档pc机进行接口。
1 硬件设计
1.1 ad1674接口电路
文献[1]详细介绍了ad1674芯片的性能和控制信号的时序。在完全受控方式下,最好是用逻辑控制信号ce启动数据读或a/d转换;在ce有效时,片选信号cs应有效,并且控制信号r/c和a0已确定,只有满足这种时序,ad1674才能正常工作。
1.2 a/d转换及数据的读时序
对a/d接口电路而言,只有pc机的时序与ad1674的要求时序匹配才能保证电路的正常工作。该电路的a/d转换及数据的读时序如图1所示。
a在/d转换时,8253的定时脉冲或端口写脉冲qd经过延时和调节定时宽度后,使a/d的使能控制ce开始启动a/d转换。同时qd宽度为1μs的低电平脉冲(在端口写启动方式下,1μs的低脉冲是由端口写脉冲经调节定时宽度后获得)使r/c的转换有效,a0及片选cs可在a/d转换前设置为有效。当读取a/d转换后的数据时,端口读信号或dma读信号d直接使a/cd的使能控制ce启动数据读,此时r/c=1,r/c的读有效,开始12位数据的读取。当a0=0时,读取高八位数据;当a0=1时,读取数据低四位,读完后a0=0,准备下一次a/d转换。可见该时序既能与pc机接口,又能使ad1674正常工作。
1.3 a/d转换及数据读取的实现电路
本电路的ad1674工作在完全受控方式。a/d转换为12位,而转换后数据分两次读取,即先读数据的高八位,后读数据的低四位。
1.3.1 a/d转换的启动方式
a/d转换的启动方式有两种:8253定时器硬件启动和写端口软件启动。
8253定时器启动方式应用于对数据采集的时隔要求准确的场合,该方式是利用8253的定时脉冲启动a/d转换,通过8253数据总线缓冲器(端口地址为&0x23f)输出鉴别通道的计数初值,通过向6位锁存器74ls174(端口地址为&0x23b)写入控制字设定8253的控制字以及a/d片选控制位。6位锁存器数据位定义说明如下:
a1a0=00:&0x23d口输出的数据为计数器0的计数值。
a1a0=01:&0x23f口输出的数据为计数器1的计数值。
a1a0=10:&0x23f口输出的数据为计数器2的计数值。
a1a0=11:&0x23f口输出的数据为计数器8253的方式字。
g0&g1=1:起动计数器0和计数器1;g0&g=0:禁止计数器0和计数器1。
cs=1:选中a/d芯片cs=0;不选中a/d芯片。
具体的实现电路如图2所示。首先将8253定时通道0与通道1串联起来定时,通道0的时钟输入clk0的频率是2mhz,工作在方式3(方波比率发生器)下,通道0的输出out0为频率1mhz的方波,作为通道1的输入时钟clk1。通道1设定为方式2,即通道1的输出out1从输出开始一直维持高电平,计数回零后,输出为低电平并自动重新装入原计数值,低电平维持一个时钟周期后,输出恢复高电平并重新作减法计数。输出out1分为两路信号,一路通过与门u18a输出,作为ad1674的r/c控制信号;另一路经过单稳触发器u24延时和调节定时宽度后,再通过或门u15c输出作为ad1674的ce控制信号。当out1输出宽度为1μs的低电平脉冲时,一方面使控制信号r/c的转换有效,同时经延时和调节定时宽度后,使a/d的使能控制ce开始启动a/d转换。因此在装入计数初值以后,只要设置6位锁存器u8的控制字,就可利用8253定时器启动a/d。
写启动a/d方式应用于软件定时,即通过对端口(地址为&0x23d)写来触发a/d转换。如图2所示,端口写信号一方面经过单稳触发器u6a调节定时宽度(宽度为1μs)后,作为ad1674的r/c控制信号,同时经过另一单稳触发器u24延时和调节定时宽度后,再通过或门u15c输出作为ad1674的ce控制信号。
可见两种启动a/d转换的过程相似。相比较而言,前者的采样间隔是由8253定时脉冲的周期决定的,属于可编程定时器方式定时,共特点是采样间隔准确;后者则由相邻两次写端口(地址为&0x23d)的时间差决定采样间隔,为软件定时方式,特点是灵活方便。
1.3.2 a/d转换数据的读取方式
在数据采集系统中,计算机读取a/d转换数据的方式一般有三种,即查询、中断和dma方式。其中查询方式就是通过查询标志位来判断a/d是否转换完毕,如果a/d转换完毕则读入转换的数据。这种方式下cpu主动查询,通过cpu读取a/d转换的数据,故实现的硬件电路简单,但数据读取速度慢,同时在windows的多任务执行方式下,存在着a/d转换数据不能及时读入的问题。中断方式是利用a/d转换完毕的标志位触发一硬中断,然后中断管理器向cpu提出中断申请。在中断允许的情况下,执行中断服务程序读入转换的数据。这种方式实现的硬件电路也比较简单,但中断服务程序的介入,引起数据采集程序的断点的不可预测性,这样会导致数据采集程序的失控。dma方式利用a/d转换完毕的标志位向dma控制器提出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=(dh14; /*将高八位低四位数据转化为高四位低八位数据*/
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机的数据采集板已用于我们的高频多谱勒和到达角探测分析系统中,取得了满意的效果。这些设计方法和原理在其它实际数据采集系统的设计过程中,也会具有重要的参考价值。

预测到2022年中国智慧城市投资将达到两千亿元人民币
拓展坞的广泛应用场景6023AQ
英特尔联手长安汽车,致力推动汽车智能化进程
博泰车联网荣登“2022新经济独角兽企业150强”榜单
【英飞凌开发板模块评测任务大挑战】开发初体验
基于AD1674芯片的数据采集电路设计
唯恩新发布H2M双模块外壳
如何从 Android 界面中收集数据流
对linux初学者的建议总结
爆华为将推出新款畅享平板2,搭载麒麟710A处理器
无服务器化的潜力有多大?能否成为云计算的未来?
嵌入式处理器是怎样分类的
Verilog的两个误区
锂电池电解液
薄板焊接的焊接方法_薄板焊接的焊接注意事项
mCloud完成对AR创企NGRAIN收购,此次收购将会看到NGRAIN的AI和AR技术
HNYC变压器有载开关测试仪(同期)
硅基薄膜太阳能电池的高性能检测器
局面更尴尬,英特尔可能会失去苹果公司的调制解调器业务订单
智能合约与传统合约有何不同