- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
用串行端口控制ADC
录入:edatop.com 点击:
工程师经常需要连接PC对电路进行简单的测量。当没有资金购买一台用于低速信号的数字化仪时,可以用两只IC,自己做一个连接在PC的串口上。数字化仪的吞吐率主要取决于PC操作系统的性能、处理器速度和内存。我用一台2.4 GHz的Pentium PC实现了250采样/秒,该PC有512M RAM,运行Windows XP。更快的处理器能提供更高的采样速率。计算1秒钟的转换数就可以计算出吞吐率。
电路如图1所示,使用一只MAX232 RS-232接口IC和MCP3201 12位逐次逼近型ADC(模数转换器)。使用C#编写的应用程序,可以将数据输入运行Windows XP或Vista的PC中。源码可从本文的在线版下载,地址为:www.tmworld.com/2008_10。
MCP3201使用RTS(准备发送)、CTS(清除发送)和DTR(数据终端就绪)串口线与PC通信。通过其标准SPI(串行外设接口)端口与MAX232通信。模拟信号连接到MCP3201的IN+引脚,MAX232将RS-232信号电平转换为TTL兼容电平。
来自DOUT引脚的数字输出流通过MAX232到达IC的CTS线串行点。RTS线为ADC的CLK(时钟)引脚提供时钟脉冲。在CLK信号的下降沿上,每个独立位出现于DOUT引脚。因此,软件应用必须在时钟脉冲的上升沿锁存该位。最后,DTR线产生CS(片选)信号来构成转换过程。转换过程中CS位必须为低。图2表示过程的时序图。
图2中,有效数据位(最高位在先)在第三个CLK脉冲为低后出现在DOUT线上。因此,必须在读取数据后,用软件舍弃前三位。
软件应用采用免费的微软Visual C# 2008 Express Edition编写。C#中内置了SerialPort元件,提供对端口的全面控制。该软件是作为一个简单的控制台应用执行的。使用该代码,不需要设备驱动就能使用串行端口。
工程师可以方便地重复或修改源码,以适应自己的应用。例如,可以通过因特网将ADC的数据发送到其他位置,或将数据提供给Excel或其他应用进行分析。
另外,也可以改善图1中的硬件设计。例如,在ADC前面放一个低通滤波器可以降低噪声,从而也减少了由于混叠而产生的错误。在MAX232的VCC引脚上一定要用一只旁路电容器。在尽可能靠近元件引脚处放一只1 μF电容器(推荐值)。
类似的逐次逼近型ADC可以代替MCP3201,ADC也要有SPI兼容接口。例如,可以采用LinearTechnology公司的LTC1286或LTC1297。如果打算采用不同的ADC,就需要作一些硬件修改,因此要仔细阅读厂家的数据表。除了MAX232线路驱动器以外,还可以使用类似的元件,如MAX225或MAX233。这些元件不需要任何外接元件,因此简化了设计。
如果采用其他硬件,可能还需要应用源码。例如,可能需要根据所选元件的时序图,修改源码中的for循环语句(int i = 0; i < 15; i++)。
电路如图1所示,使用一只MAX232 RS-232接口IC和MCP3201 12位逐次逼近型ADC(模数转换器)。使用C#编写的应用程序,可以将数据输入运行Windows XP或Vista的PC中。源码可从本文的在线版下载,地址为:www.tmworld.com/2008_10。
MCP3201使用RTS(准备发送)、CTS(清除发送)和DTR(数据终端就绪)串口线与PC通信。通过其标准SPI(串行外设接口)端口与MAX232通信。模拟信号连接到MCP3201的IN+引脚,MAX232将RS-232信号电平转换为TTL兼容电平。
来自DOUT引脚的数字输出流通过MAX232到达IC的CTS线串行点。RTS线为ADC的CLK(时钟)引脚提供时钟脉冲。在CLK信号的下降沿上,每个独立位出现于DOUT引脚。因此,软件应用必须在时钟脉冲的上升沿锁存该位。最后,DTR线产生CS(片选)信号来构成转换过程。转换过程中CS位必须为低。图2表示过程的时序图。
图2中,有效数据位(最高位在先)在第三个CLK脉冲为低后出现在DOUT线上。因此,必须在读取数据后,用软件舍弃前三位。
软件应用采用免费的微软Visual C# 2008 Express Edition编写。C#中内置了SerialPort元件,提供对端口的全面控制。该软件是作为一个简单的控制台应用执行的。使用该代码,不需要设备驱动就能使用串行端口。
工程师可以方便地重复或修改源码,以适应自己的应用。例如,可以通过因特网将ADC的数据发送到其他位置,或将数据提供给Excel或其他应用进行分析。
另外,也可以改善图1中的硬件设计。例如,在ADC前面放一个低通滤波器可以降低噪声,从而也减少了由于混叠而产生的错误。在MAX232的VCC引脚上一定要用一只旁路电容器。在尽可能靠近元件引脚处放一只1 μF电容器(推荐值)。
类似的逐次逼近型ADC可以代替MCP3201,ADC也要有SPI兼容接口。例如,可以采用LinearTechnology公司的LTC1286或LTC1297。如果打算采用不同的ADC,就需要作一些硬件修改,因此要仔细阅读厂家的数据表。除了MAX232线路驱动器以外,还可以使用类似的元件,如MAX225或MAX233。这些元件不需要任何外接元件,因此简化了设计。
如果采用其他硬件,可能还需要应用源码。例如,可能需要根据所选元件的时序图,修改源码中的for循环语句(int i = 0; i < 15; i++)。