您当前的位置:五五电子网电子知识单元电路接口电路基于PDIUSBD12芯片的USB接口的研究与开发 正文
基于PDIUSBD12芯片的USB接口的研究与开发

基于PDIUSBD12芯片的USB接口的研究与开发

点击数:7463 次   录入时间:03-04 11:53:39   整理:http://www.55dianzi.com   接口电路

摘要:本文介绍了PDIUSBD12芯片的工作性能与特点,利用该芯片,经过硬件设计和软件调试,开发出了一种USB设备接口。该接口适用于虚拟仪器的开发,其性能稳定,可靠性高,具有广阔的应用前景。
关键词:USB接口;PDIUSBD12;固件

    USB接口是近年来应用在PC领域的新型接口技术,它基于单一的总线接口技术来满足多种应用领域的需求。它的即插即用、支持热插拔、易于扩展等特性极大的方便了用户的使用,使其成为开发虚拟仪器接口的首选,具有极好的应用前景。本文利用USB的接口芯片PDIUSBD12,经过硬件设计和软件调试,开发了一种USB接口设备。

1、芯片的选择
    在进行任何USB设备开发之前,首先应选择适合的USB控制器芯片。目前市场上供应的USB控制器主要有两种:带USB接口的单片机和纯粹的USB接口芯片。带USB接口的单片机从应用上可分为两类:一类是从底层设计专用于USB控制的单片机;另一类是增加了USB接口的普通单片机,选择这类USB控制器的最大好处是开发者对系统结构和指令集非常熟悉,开发工具简单,但对于简单或低成本系统,价格高将会是最大的障碍。纯粹的USB接口芯片仅处理USB通信,必须有个外部微处理器来进行协议处理和数据交换。纯粹的USB接口芯片主要特点是价格便宜、接口方便、可靠性强,尤其适用于产品的改型设计。典型的产品有Philips公司的PDIUSBD11/12、NS公司的USBN9603/9604(并行接口)、NetChip公司的NET2888。这里选择功能强大、支持总线供电和设备自供电两种方式的PDIUSBD12作为接口芯片来设计USBS设备接口。

2、 PDIUSBD12芯片的性能与特点
    PDIUSBD12是PHILIPS在USB1.1协议设备端使用最多的芯片之一,此芯片是带有并行总线和局部DMA传输能力的全速USB接口器件。片内集成了高性能的USB接口器件、SIE、FIFO存储器以及电压调整器等,可与任何外部微控制器/微处理器实现高速并行接口。
    PDIUSBD12芯片的功能框图如图1所示


图1  D12的功能框图


    PDIUSBD12是一款性价比很高的USB器件,它采用28PIN脚模式,有SO28和TSSOP28封装,SIE实现了全部的USB协议层,且完全由硬件实现而不需要固件的参与。其具体功能如下:同步方式识别、并/串转换、比特填充/解填充、CRC校验/生成、PID确认/生成、地址识别和握手信号的鉴定/生成、批处理数据传输可达1MB/s,3±0.3V双极性输入范围,可接受4.5~5.5V工作电压、工业级标准工作环境温度范围为-40~+85℃。利用该芯片可以高效地完成微控制器所送出的信号到USB规范的信号的转换。

3、 USB设备接口的硬件设计
    利用PDIUSBD12芯片来实现USB接口,允许设计者挑选一种适合的微控制器进行开发。设计者可以根据需要和实际情况进行合理选择。这样,不仅减少了开发成本,而且大大缩短了开发周期。本设计采用了80C51作为微控制器,由于80C51是应用比较广泛的一种单片机微控制器,具有比较成熟的软件开发平台,且大多数电子工程师对其指令操作比较熟悉。因此,使用者可以利用比较熟悉80C51进行核心程序的设计,即用80C51来实现数据传输的功能,而具体的数据信号的转换则由PDIUSBD12来完成。
    USB设备接口的硬件设计主要以PDIUSBD12为中心,设计它与USB物理接口及微控制器(80C51)之间的连接。这里采用总线供电方式设计全速USB设备接口,其接口电路如图2所示:

 

图2  USB设备接口电路


    当P27=1时,80C51给PDIUSBD12发命令;当P27=0时,向PDIUSBD12写数据或从PDIUSBD12读数据。PDIUSBD12的GL_N接LED,对其工作状态进行监控,LED在USB被连接时会发光,在进行数据传输时会闪烁,LED常亮或一直不亮说明USB接口有问题。R1,R2是串联终端电阻。L1,L2是磁珠,分别串联在电源和地中,USB总线电源从L1引入。如果是设备自供电,可以不接L1。对于自供电设备的电源必须要与总线的电源进行隔离,自供电电源与USB总线的电源之间只能共地,同时设备不能通过USB口向VBUS输出电流。PDIUSBD12片内集成了6MHz—8MHZ时钟乘法PLL,这样就可以使用低成本的6MHZ晶振,EMI也随之降低。同时,PDIUSBD12的时钟输出可以作为微处理器的外部晶振输入。

4、 USB设备接口的固件程序设计
    USB设备接口固件的开发在整个USB接口设计中具有举足轻重的地位。设备接口硬件需要软件的协同来完成相应的工作,然而固件的编制并不受具体微处理器种类的限制。对于开发者而言,接口硬件的工作是不可见的,可见的是接口固件在控制整个接口时所做的工作。
    PDIUSBD12的固件设计成完全的中断驱动,当CPU处理前台任务时,USB的传输可在后台进行。这就确保了最佳的传输速率和更好的软件结构,同时简化了编程和调试。后台ISR(中断服务程序)和前台主程序循环之间的数据交换通过事件标志“EPPFLAGS”和Setup包数据缓冲区“CONROL_XFER”来实现,其原理如图3所示。

图3 前后台工作原理

    对于这种结构,主循环不用考虑数据的来源,只要检查循环缓冲区内需要处理的新数据。这样,主循环可以专注于数据的处理,而ISR能够以最大可能的速度进行数据的传输。
    D12固件编写成分层结构简洁且易于修改和测试,既增加了代码的可读性,又增加了程序的通用性。固件的积木式结构如图4所示。

图4 固件结构和数据流向

    各模块程序的分工如下:
    硬件提取层:对单片机的I/O口、数据总线等硬件接口进行操作。
    PDIUSBD12命令接口:对PDIUSBD12器件进行操作的模块子程序集。
    中断服务程序:当PDIUSBD12向单片机发出中断请求时,读取PDIUSBD12的中断传输来的数据,并设定事件标志“EPPFLAGS”和Setup包数据缓冲区“CONROL_XFER”传输给主循环程序。
    标准请求处理程序:对USB的标准设备请求进行处理。
    厂商请求处理程序:对用户添加的厂商请求进行处理。
    主循环程序:发送USB请求、处理USB总线事件和用户功能处理等。
    下面是固件程序主循环的部分代码:
#include<reg51.h>
#define D12_COMMAND (*(unsigned char xdata*)0xff01)
#define D12_DATA (*(unsigned char xdata*)0x7f02)
extern void D12_int();
sbit D12_suspend=P3^4;
sbit D12_int_n=P3^2;
void main(void)
{
 unsigned char ist;
 P3=0xff;
 D12_COMMAND=0xf3;
 D12_DATA=0x06;//设置模式0
 D12_DATA=0x03;//初始化频率
 D12_COMMAND=0xd0;
 D12_DATA=0x80;//设置地址0使能
 D12_COMMAND=0xf3;//连接主机
 D12_DATA=0x16;
 While(1)
 {  if(!D12_int_n)
{  D12_int(); }
}
}

5、 USB设备接口数据通信的两个阶段
    USB设备接口的一系列状态转换和不同类型的数据传输共同构成了USB数据通信的两个阶段,即列举阶段和应用阶段。列举阶段是指主机与设备在进行实际数据交换之前,主机了解设备并根据设备要求进行系统配置的阶段。为了进行列举,所有设备的接口必须都支持控制传输、标准USB请求和端点0功能。
应用阶段是指主机和设备进行实际数据交换的通信过程。经过了列举过程,应用阶段显得相对简单 。在主机一侧,应用程序可以用标准的Windows API函数从指定的设备读取数据或将数据写入设备。在设备一侧,主要工作是对配置过的端点进行端点操作,同时对一些寄存器的状态进行实时处理。数据传输使用HID规定的控制、中断两种传输类型,每一种类型都有适合特殊用途的格式和协议。

6、 结束语

    本文详细介绍了基于PDIUSBD12的USB设备接口的设计,从硬件设计及软件调试两方面讨论了设备接口的设计方法。这种通用USB设备接口适用于基于USB总线的虚拟仪器,以及各种现场测试环境,使设备实现了真正意义上的即插即用,简洁方便,可靠性高,具有广阔的应用前景。





本文关键字:接口  开发  接口电路单元电路 - 接口电路