利用指令冗余解决ADS7825无法正常启动的问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
-14-
中国科技信息2005年第18期 CHINA SCIENCE AND TECHNOLOGY INFORMATION Sep.2005
科 技 论 坛
利用指令冗余解决ADS7825无法正常启动的问题
张娅莉 许永忠 米彦丽 中国矿业大学资源学院221008
摘 要:ADS7825是常用的可编程模数转换芯片,但由于该芯片对时序要求较高,所以常出现无法正常启动的问题。
对该芯片编程时应用软件抗干扰技术——指令冗余,解决了这一技术难题。
关键词:逐次逼近式模数转换器;单片机;指令冗余;数据采集
Abstract:ADS7825 is a sampling A/D transformer that could be compiled, it always can’t moving normally because depend higher Conversion Timing with Parallel Output.If apply directive prolix in software,the tickler can be resolved.
Key words: Sampling A/D Transformer;MCU ; Directive Prolix; Data Acquisition
ADS7825是美国Burr—Brown公司生产的4
通道16位、逐次逼近式模数转换器。
它的最大功
耗仅为50mW,由单一的+5V电源供电,可接受-
10.0V ̄+10.0V的模拟输入电压,AD转换后的数据
既可并行输出,又可串行输出,ADS7825的转换
速度和精度在同类产品中是比较高的,因此是常用
的高速数据采集A/D转换芯片。
见图1
图1
ADS7825有几个引脚的时序关系很重要:
为片选引脚,为读/转换控制引脚,的下
降沿启动一次转换,的上升沿打开数据总线的
三态输出缓冲器,转换结果从数据总线输出。
为转换器的状态引脚,为低电平时表示
转换正在进行,为高电平时表示转换结束。
BYTE=1数据总线上输出的是转换结果的低8位,
BYTE=0时数据总线上输出的是转换结果的高8
位。
、、、BYTE之间的时序关系
见图2
图2
一,问题的提出
由图2可以看出,一般情况下,脚置低电
平,始终选中ADS7825芯片,在端触发一
个低电平,就可启动AD转换,但每次启动AD转
换时,保持低电平的时间一般为40ns,最大
不能超过12us,否则将影响读数的准确性。
检测
的输出,只有=1时,才能读取数
据。
同时需要考虑BYTE位的低高逻辑来依次
读取数据输出的高8位和低8位。
如果用单片机控制ADS7825,以上时序可
以如下编程实现。
为了读者阅读方便,暂时用
ADS7825原引脚名出现在程序中,实际情况可
以分别单片机的P1口的几个引脚控制它们:
......
CLR ;片选中
CLR ;为读/转换控制引脚置低
SETB ;为读/转换控制引脚置高
(启动A/D转换)
BUSY: JNB BUSY;等待数据转换完
毕
CLR BYTE;BYTE置0读转换结果高8位
......
SETB BYTE;BYTE置1读转换结果低
8位
......
此程序看上去没有任何问题,也符合
ADS7825时序的需要,在引脚做了一个上升
沿的启动,且CLR 这句指令只需一个机
周即1us(如果用的晶振是12MHZ),满足最大
不能超过12us的要求。
但程序实际在线仿真时我
们发现:程序在BUSY: JNB BUSY这
一指令处原地等待,这说明始终为低电平,转
换始终不能结束,当然就不能从数据输出口获得转
换结果了。
二,问题的解决
问题经过理论分析和实践检验,我们发现,如
果始终默认低电平的初始状态,程序中虽
然只有一句CLR 指令,结果仍然可能超过
了保持低电平的时间12us的要求,这会导致启动
失败,这个问题好解决,只要将CLR 前加
一句SETB 即可。
然而,这样改动程序后,ADS7825仍偶尔出
现程序在BUSY: JNB BUSY这一指令处
原地等待的现象,导致高速数据采集系统工作不
稳定。
问题就出在对的置1置0再置1这几句
上。
从图2的时序分析可以看出:需要一
个类似波谷的启动脉冲,关键是这个低电平脉
冲的宽度。
像上面所说的方法启动ADS7825,
这个低电平脉冲的宽度仅为1us,虽然保持
低电平的时间一般为40ns,但这在实际中是不适
用的,数字化的操作可能会导致这些靠时钟工
作的芯片步调不能保持一致。
因此可以这样解
决:分别对这个低电平波谷的三次逻辑命令增
强,即适当的将SETB 、CLR 、SETB
这三句指令进行冗余处理:
......
SETB
SETB
CLR
CLR
SETB
SETB
......
这样ADS7825就会正常启动了,经过实践,这
个方法可靠,系统工作稳定,的确值得推荐。
至于
指令冗余的长度参考器件的时序要求即可,
ADS7825指令冗余两至三次就可正常启动了。
三,后记
冗余是单片机软件抗干扰中常见的方法,分
为指令冗余和RAM数据冗余,本案采用的是指
令冗余。
在高速数据采集中可编程逻辑器件的使
用非常广泛,如果想提高系统的抗干扰能力,使
芯片更加稳定的工作,就需要设计者在时序的处
理上多考虑一些。
本文是笔者科研实践中总结的一点小经验,
不足之处请广大读者指正。
参考文献:
1.刘书明,马小平等著.数据采集系统芯片原理
与应用.西安电子科技大学出版社.2000
2.赵保经等著.A/D和D/A转换器应用手册.上海
科学普及出版社.1995
3.www.burr-brown.com/databook/ADS7825.html
4.胡汉才著.单片机原理及其接口技术.清华大学
出版社.2004。