标题:
经USB端口的模拟和数字I/O
[打印本页]
作者:
rise_ming
时间:
2013-1-30 21:19
标题:
经USB端口的模拟和数字I/O
本文给出通过计算机USB端口得到16位数字I/O和12位模拟I/O。用Gigatechnology USB 模块和 LTC1286ADC、LTC1451DAC 实现本设计。
USB模块
USB模块(图1)接入USB总线,它提供字节宽的双向信号。4个其他信号控制数据流。为了从PC得到数据,等待直到*RXF输出为高态和 *RD输入为低态为止,然后数据呈现在双向引脚。在*RD变化状态之后,*RXF输出变高态。重复此过程直到读出所有数据为止。在*WR输入的负沿送数据到PC,*TXE输出应变高态。当它再次变低态时,可以发送更多数据。
数字I/O寄存器
数据输出
从PC送数据到USB模块,过程为:
·打开器件;
·从PC发送代表数据的字符串;
·关闭器件。
当从PC发送数据到模块时,Visual Basic程序检测代表数字数据的检查单元中的变化或定义ADC输出的区域中设置变化。程序汇编字符串,每个字符的bit5和bit2表示被发送的模拟和数字数据。Bit3表示选通数据进入74HC595输入寄存器(图2)和LTC1451寄存器的时钟信号(图3)。在数据正确地放送后,后跟两个字符。 Bit1选通数据进入74HC595输出并驱动LTC1451门*CS输入。
模拟I/O电路
尽管DAC是12位器件,但它可以接收16个时钟脉冲,它仍然能正确工作,这是因为恰当地选通*CS输入。因为它首先接收数据MSB,所以,bit0必须在数字输出字bit16相同时间发送,bit11与数字输出字bit4的相同时间发送,这靠软件实现。
ADC具有内部2.048V基准和倍数2放大器,因此,毫伏输出是方便的等效码。
数据输入
数据输入过程如下:
·打开器件;
·从USB模块中读表示数据的字符串;
·关闭器件。
为了从USB模块中读数据到PC,程序汇编锁存在74HC589输入寄存器中的字符中,此时再次用bit1。字符串其后的字符再次选通bit7 低态和高态,选通U3a(图1)并送其Q输出为1。U3a的Q和*Q输出信号控制74HC589器件的*SLOAD输入和LTC1286的*CS输入。它也去除来自U4的复位信号,允许工作直到其Q9输出变逻辑1为止,通过U3b复位U3a。当U4工作时,其Q4输出提供16个时钟沿来选通来自 LTC1286的数据输入。此信号经反相器也选通74HC589(图2)和USB模块的*WR输入。74HC589和LTC1286 ADC(图3)在时钟沿的不同极性转换数据,而电路能确保USB模块在有效时钟沿之间的中间状态接收数据。
来自USB模块的模拟和数字数据分别从模块返回字符串中bit6和bit4获得。在*CS有效之后,ADC在第4个时钟脉冲给出其输出的最高有效位(D11),其他位紧随其后,在第15个时时脉冲输出最低有效位(D0)。为了与数字输入具有共性,电路中给出第16个时钟脉冲;在第16个脉冲期间,ADC再一次输出D1。因此,软件除去USB所接收的转换数据最后1位,并转送剩余的其他正确位。
因为时钟率必须低于单纯数字情况下的时钟率,所以,不需要来自USB模块的*TXE信号。在此采用4MHz振荡器连率,需要选择U4的不同输出以获得ADC所用的低于200KHz时钟率。
在ADC之前有一个1增益运放,提供高输入阻抗并使ADC所产生的噪声与输入隔离。电位器(图3)补偿放大器漂移并设置到零输入电压时ADC读出零。本文所用ADC是12位器件,其输出码是:4096×Vin/Vref,其中Vref是由LM3852-2.5提供的2.5V电压。
软件
软件分为三部分:
·专用于本系统的Visnal Basic码;
·码编译版本;
·包含动态链路数据库(DLL)的.Zip文件,这可使Visual Basic存取需要控制USB模块的函数并能驱动此模块。这可从Future Technology Devices International公司的网站(
http://www.ftdichip.com
)下载。
作者:
TLP291
时间:
2013-2-1 17:26
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0