由于S3C4510B的I/O引脚的工作电压为3.3 V,而ADS1252的I/O引脚的工作电压为5 V,因此S3C4510B的CPU_TOUT1,CPU_P1,CPU_P2信号不能与ADS1252的CLK,SCLK,信号直接相连。74HC245芯片是8路总线收发器,在发送和接收两个方向上都具有正相三态总线兼容输出,并且其输入、输出的工作电压范围是0~VCC。本设计通过74HC245芯片使S3C4510B与ADSl252的I/O引脚的工作电压进行匹配,并使DIR=H且
,令数据从A总线传送到B总线。
为了实现S3C4510B与ADS1252电气信号隔离,本设计选用6N137高速光耦,它是电子线路中隔离电压冲击及噪声串扰的优选器件,具有体积小、隔离效果好、价格便宜、便于安装等特点。
REF195是一款精密、微功耗、低温漂、高稳定性的基准电压源。本设计选用它为ADS1252提供5 V的基准电压。ADS1252的差分模拟输入V+,V-支持双极性输入,但本设计将V-引脚参考AGND,只允许单极性输入,因此ADS1252的电压测量范围为0~5 V。本设计在V+、V-之间并接5.1 V的齐纳二极管,当输入电压大于5.1 V时,可以把V+,V-两端的电压稳定在5.1 V,从而起到保护ADS1252的目的。
3 采集模块软件开发
采集模块软件的开发主要包括两个方面:ADS1252驱动和采集任务软件的开发。
3.1 ADS1252驱动的开发
由图2(a)可知,ADS1252的驱动开发主要包括I/O初始化、时钟初始化、ADS1252初始化、ADS1252读数据、校准数据。现分别介绍如下:
(1)I/O初始化:由于S3C4510B的I/O端口P1、P2既可用作输入口也可以用作输出口,因此必须通过软件对IOPMOD寄存器配置将P1设置为输出口,用于产生ADS1252的串行时钟;将P2设置为输入口,用于读取ADS1252的串行数据。
(2)时钟初始化:由于S3C4510B的I/O端口P17既可用作I/O口、也可用作定时器1的溢出TOUT1,因此必须通过软件对IOPCON寄存器配置将P17设置为定时器1的溢出TOUT1;接着通过软件对TMOD寄存器配置将定时器1设置为触发工作模式;
最后通过软件对TDATA1寄存器配置产生ADS1252工作所需的时钟频率。
(3)ADS1252初始化:当ADS1252工作在某个频率f(t=1/f),首先通过软件对P1端口置1使SCLK引脚保持高电平的时间TReset满足4TDRDY≤ TReset<20TDRDY(TDRDY=384t),那么ADS1252就会进入复位的状态。接着通过软件对P1端口置0使SCLK引脚变为低电平,此时ADS1252开始工作,它的串行数据引脚首先会进入Mode,接着进入DOUT Mode模式,之后在这两种模式之间交替切换。
(4)ADS1252读数据:当对ADS1252进行初始化后,此时软件通过对P2端口的轮询检测上升沿。一旦检测到上升沿,表明ADS1252进入 Mode,该模式的持续时间
。当软件延时
后,ADS1252进入DOUT Mode,该模式持续时间TDOUT=348t。在DOUT Mode期间,软件对P1端口产生一个脉冲,即可从P2端口读取到1位的数据。同理,即可获取其余23位的数据。软件必须保证在TDOUT时间内读完24位数据,否则ADS12 52将会进入下一个数据转换周期。
(5)校准数据:采集数据必须经过校准参数K,B的调整才能匹配实际值。其中采集电路的校准原理是采用两个恒定电压作为基准,通过原始的采集数据和高精度电压表实测电压,进行比较计算,从而得出校准参数K,B。
3.2 采集任务软件的开发
VxWorks是美国风河公司开发的一款具有微内核、高性能、可裁剪的嵌入式实时操作系统。本采集模块软件是基于VxWorks5.5操作系统进行开发的,为了满足数据采集的实时性,采集任务被分配了最高的优先级。由图2(b)可知,采集任务软件的开发主要包括采集数据、数据平滑处理、数据转发、任务休眠。现分别介绍如下:
(1)采集数据:调用ADS1252驱动程序对电压进行多次采集。
(2)数据平滑处理:除了在硬件上采取必要的抗干扰措施外,很有必要对多次的采集数据进行软件滤波,但必须考虑因此造成的延时。在保证测量精度和实时性要求的前提下,在软件处理上采取去掉最大、最小值,然后取平均的算法。
(3)数据转发:采集任务除了对数据进行采集以及平滑处理外,还必须将数据定时转发到它的订阅者,如通信模块、显示模块等。
(4)任务休眠:调用操作系统的taskDelay()函数,采集任务交出对CPU的控制权,以便让其他任务得到运行的机会。