APP下载

基于ADS8341与ARM的数据采集模块接口设计

2014-12-18韩卫洁陈江锋董兴田军

现代电子技术 2014年24期
关键词:高电平时钟计数

韩卫洁+陈江锋+董兴+田军

摘  要: 为了对冻土区土壤环境进行实时采集处理和检测,在此选取ADS8341作为A/D转换芯片,STM32F103ZET6芯片作为微处理器,设计并实现了将ADS8341芯片和STM32F103ZET6芯片相结合用于采集土壤环境数据的硬件电路和A/D采集软件控制过程。经过实际的检测与分析,该设计可以对冻土区土壤进行实时高效的采集、处理以及对数据的保存,以便后期数据的查询和土壤环境总体趋势的预测。

关键词: ADS8341; STM32F103ZET6; 接口电路; 采集控制

中图分类号: TN964?34                   文献标识码: A                            文章编号: 1004?373X(2014)24?0084?03

Interface design of high?speed data acquisition module based on ADS8341 and ARM

HAN Wei?jie1, CHEN Jiang?feng2, DONG Xing1, TIAN Jun1

(1. School of Construction Machinery, Changan University, Xian 710064, China;

2. School of Materials Science and Engineering , Changan University, Xian 710064, China)

Abstract:  In order to conduct  real?time acquisition, processing and detection of the frozen soil environment data, ADS8341 is chosen as A/D conversion chip and STM32F103ZET6 chip as MPU. The data acquisition circuit and A/D acquisition software control process based on ADS8341 and STM32F103ZET6 was designed. The actual tested and analyzed results show that the interface circuit can achieve real?time effective acquisition, processing and storage of the frozen soil environment data, which contribute to the future query of the relevant data and prediction of the trend of soil environment.

Keywords: ADS8341; STM32F103ZET6; interface circuit ; acquisition control

为实现某冻土区石油管道监测系统对管道周围土壤温度的实时监测和控制,在同一时间需要多路采集和处理温度信号,由于系统对温度信号的实时性和采集准确度有严格的要求,采用ADS8341作为专用的A/D转换芯片而不是使用ARM芯片自带的12位A/D转换芯片,微处理器选用STM32F103ZET6芯片,该芯片是由ST公司生产的STM32F103“增强型”系列处理器芯片。其时钟频率可达72 MHz,具有512 KB的FLASH[1?2]。ADS8341芯片可实现16位数字量输出,4路模拟量采集通道,并且可简单方便地实现微处理器软件编程和操作,对不同的检测信号可设计并采用特定的采集方法,从而使系统更便于操作和推广。

1  ADS8341与STM32F103ZET6接口电路设计

1.1  ADS8341芯片

ADS8341是Texas Instruments公司设计生产的具有串行接口和两个字节数字量输出的高速逐渐逼近式A/D转换芯片[3]。ADS8341 具有SPI串行总线功能,可实现4路独立模拟输入或两路差动模拟输入,16位数字数据的输出。ADS8341选用5 V供电,其具有86 dB的信噪比。当ADS8341选用5 V供电和采样频率为100 kHz时,其最低的功率损耗为8 mW,VREF(基准电压)的选取范围为500 mV~5 V,对应的模拟输入电压范围为0~VREF ,当ADS8341芯片工作在低功耗模式时,其功率消耗很小[3]。供电电压以2.7 V分界,高于 2.7 V时,正常使用,反之,低于 2.7 V时,正常工作。ADS8341采用SSOP?16封装,其体积很小,便于电路板布局和加工。其在-40~85 ℃时可正常工作,超出这个温度范围芯片无法正常工作[4]。ADS8341芯片可在同一时间对4路模拟输入信号进行采样,所以在需要采集多路模拟输入时使用ADS8341芯片,因此本采集系统选用ADS8341芯片将模拟输入信号转换为数字输出信号[4]。

1.2  ADS8341与STM32F103ZET6接口电路设计

采用软件实现ADS8341与STM32F103ZET6接口控制连接[5]。本设计中ADS8341采用外部时钟供电模式,最高频率为72 MHz, A/D转换输入引脚DIN接STM32F103ZET6的PA2,A/D转换输出引脚DOUT接STM32F103ZET6的PA4,A/D转换结束控制引脚BUSY接STM32F103ZET6的PA3,A/D转换片选引脚CS_1接STM32F103ZET6的PA1,A/D转换时钟引脚DCLK接STM32F103ZET6的PA0。当采用软件连接时,STM32F103ZET6使用芯片14(DIN)引脚把控制字命令逐位传送给ADS8341,实现芯片的初始化。芯片的第2~第5引脚(CH0~CH3)为四路模拟输入通道,6引脚为COM引脚,当不使用COM引脚时,即COM接?IN、选中的的CHX(X=0~3) 接+IN,采用的是单通道输入模式,当使用COM引脚时采用的是差分输入模式[3]。本文选择单通道模拟输入模式即选取CHX(X=0~3)中的一个模拟输入通道[3]。其具体的接口电路如图1所示[5]。

为了保证A/D采样精度,还需要注意:正确区别模拟、数字地。由于ADS8341芯片内部对模拟地和数字地有明确的区分,所以必须正确地区分和使用它们[5]。PCB电路板设计布线时,需将模拟地和数字地分开与在ADS8341芯片相接处,在设计多层板时必须将电源层和地层分开。VREF的布线应尽量短,防止其他信号对其产生严重影响[6]。

2  A/D采集控制

由硬件电路知,ADS8341芯片工作所需的CLK时钟信号不能自己产生而是由  STM32F103ZET6向其提供所需的时钟信号[4]。在STM32F103ZET6的准确控制之下,严格按照ADS8341芯片的采样时序图由PA0引脚提供ADS8341的工作时钟。为了更加高效地采集数据,选用100 kHz 作为实际的采样率。当A/D转换开始时,以片选信号(15引脚)的下降沿作为起始标志,最初的8个时钟信号将8位的控制字通过DIN引脚传送给ADS8341芯片,当ADS8341芯片接收完控制字的第八位后,等待一个时钟周期,然后A/D转换芯片通过硬件方式将BUSY引脚设置为高电平,BUSY引脚为高电平标志着转换已完成,已经产生了16位的数据,随后16位数据将在16个时钟信号下降沿的作用下逐位的从DOUT引脚输出,此时只需要将输出的数据放到事先定义好的数组中便可以将其存储起来,以便后续的输出或查看[4]。当MSB出现时BUSY引脚才被设置为低电平,此过程用一个CLOCK周期完成,16位数据逐位地输出需要16个CLOCK周期,因此单次采样最少需要25个时钟周期,本系统采用的单片机采用8 b传输数据,因此需额外增加一个时钟信号用于LSB位,为满足采样周期和快速采样要求,决定选用24个时钟信号作为每次采样的时钟周期[4]。当控制字的首位出现在输入引脚上时,上一次的LSB同时出现在DOUT引脚上。当BUSY引脚拉低后,标志通道的转换已全部完成,STM32F103ZET6开始读取数据,完成后将片选信号设置为高电平,输出引脚和忙标志引脚进入高阻态,等待直到再次的转换开始[4]。ADS8341的工作时序如图2所示。

如图3所示为采集流程图。程序设计时,通过定时器0控制采集系统的采样率,将采集程序与定时器程序相结合,可以按编程者的需求方便的控制采集过程。程序开始运行时,首先将对ADS8341芯片和单片机系统进行初始化,初始化结束以后,A/D转换过程开始。转换完成标志(BUSY引脚)接PA3引脚,在此对BUSY脉冲进行计数,每完成一次采集,计数变量累加1(初值设为0),系统等待BUSY拉低判断转换是否完成(即BUSY信号是否拉低)。当完成时,从DOUT引脚读取输出数据;当相反时,表明转换过程非正常,对系统复位,重新采集数据。系统以1 000个数据为一次采集周期,因此要判断是否达到1 000个数据,当达到时进行相应的的后续处理。

部分程序代码如下:

//主函数代码:

int main(void)

{

Stm32_Clock_Init(9);                            //系统时钟设置

uart_init(72,9600);                              //串口初始化

delay_init(72);                                       //延时初始化

TIM3_Int_Init(10,7199);                              //计时1ms

io_Init();                                             //I/O口初始化

while(1);                                                       //循环

}

//定时器中断服务程序

void TIM3_IRQHandler(void)

{

q++;                                                       //计数变量

if(TIM3?>SR&0X0001)                                //溢出中断

{

RCC?>APB1ENR|=0<<1;

TIM3?>CR1|=0X00;

read8341 (0x94);                              //采集数据

}

if(q==1000)                                        //计数变量判断

{

q=0;                                          //计数变量清零

sendu1000();              //将采集的1 000个数据发送到串口

}

TIM3?>SR&=~(1<<0);                       //清除中断标志位

RCC?>APB1ENR|=1<<1;

TIM3?>CR1|=0X01;

}

//A/D采集程序

void read8341(u8 port)

{

u8 i=0;

u8 al,ah;

ah=0;

al=0;

DLCK=0;

CS_1=0;

BUSY=0;

for(i=0;i<8;i++)

{

if(port&0x80)

{

DIN=1;

}

else

{

DIN=0;

}

DLCK=1;

DLCK=0;

port<<=1;

}

for(i=0;i<8;i++)

{

DOUT=0;

DLCK=1;

ah<<=1;

if(DOUT) ah|=0x01;

}

for(i=0;i<8;i++)

{

DOUT=0;

DLCK=1;

al<<=1;

if(DOUT) al|=0x01;

}

sendch(ah);

sendch(al);

CS_1=1;

}

3  结  论

基于ADS8341芯片和STM32F103ZET6芯片的高速数据采集方案,选用 STM32F103ZET6芯片作为单片机, ADS8341芯片作为转换芯片,具有高效的数据传输效率以及非常方便的软件编程环境。结果表明,此设计方案可非常高效、实时以及准确地对土壤状态进行采集处理,具有传输速度快,过程稳定等优点。在日后实际推广应用时,需要对实际情况进行评估并进行多次试验。

参考文献

[1] 佚名.STM32开发指南V1.0 库函数版本[EB/OL]. [2013?02?18].http://wenku.baidu.com.

[2] 佚名.Cortex?M3权威指南[EB/OL].[2011?09?18].http://wenku.baidu.com.

[3] 刘明伟.16 位模/数转换器ADS8341的应用[J].宝成科技,2003(1):4?10.

[4] Anon. ADS8341E [EB/OL]. [2013?08?07]. http://www.dzsc.com/xi.

[5] 刘品,李松岩,徐赫.基于ADS8364高速数据采集模块接口设计[J].现代电子技术,2011,34(8):138?140.

[6] 王霞,李淑民,裴培,等.基于ADS8364的数据采集系统设计[J].电子技术应用,2009(7):95?97.

[7] 何炳林,张焕文,梁柱扬,等.基于ADS1252的数据采集模块设计[J].现代电子技术,2011,34(13):139?141.

猜你喜欢

高电平时钟计数
一种基于FPGA的PWM防错输出控制电路
古人计数
别样的“时钟”
递归计数的六种方式
古代的时钟
古代的计数方法
TS-03C全固态PDM中波发射机开关机控制电路原理及故障分析
这样“计数”不恼人
有趣的时钟
DM 50KW中波广播发射机欠推动故障分析