新闻中心

EEPW首页>模拟技术>设计应用> 经USB端口的模拟和数字I/O

经USB端口的模拟和数字I/O

——
作者: 时间:2005-06-27 来源: 收藏

本文给出通过计算机端口得到16位数字I/O和12位模拟I/O。用Gigatechnology模块和 LTC1286ADC、LTC1451DAC 实现本设计。
模块
USB模块接入USB总线,它提供字节宽的双向信号。4个其他信号控制数据流。为了从PC得到数据,等待直到*RXF输出为高态和*RD输入为低态为止,然后数据呈现在双向引脚。在*RD变化状态之后,*RXF输出变高态。重复此过程直到读出所有数据为止。在*WR输入的负沿送数据到PC,*TXE输出应变高态。当它再次变低态时,可以发送更多数据。
数据输出
从PC送数据到USB模块,过程为:
* 打开器件。
* 从PC发送代表数据的字符串。
* 关闭器件。
当从PC发送数据到模块时,Visual Basic程序检测代表数字数据的检查单元中的变化或定义ADC输出的区域中设置变化。程序汇编字符串,每个字符的bit5和bit2表示被发送的模拟和数字数据。Bit3表示选通数据进入74HC595输入寄存器(图2)和LTC1451寄存器的时钟信号(图3)。在数据正确地放送后,后跟两个字符。Bit1选通数据进入74HC595输出并驱动LTC1451门*CS输入。
尽管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



关键词:USB

评论


相关推荐

技术专区

关闭