载入中...

他们彼此深信,是瞬间迸发的热情让他们相遇。这样的确定是美丽的,但变幻无常更为美丽
 
 
 
 

公告

载入中...

留言簿

最新日志

最新评论

搜索

登陆

友情连接

统计

2006-11-10 16:30:00
[转载]基于PDIUSBD12芯片的USB接口的研究与开发
作者:马春雷 申宇皓 刘于端 来源:微计算机信息

摘要:本文介绍了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总线事件和用户功能处理等。
    下面是固件程序主循环的部分代码:
#i nclude<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总线的虚拟仪器,以及各种现场测试环境,使设备实现了真正意义上的即插即用,简洁方便,可靠性高,具有广阔的应用前景。

参考文献:
[1] 周立功.PDIUSBD12 USB固件编程与驱动开发[M].北京航空航天大学出版社,2003,
[2] 魏相华,张士文.虚拟仪器的发展现状和前景[J].工业控制计算机,2001,(3):1-3.
[3] 刘炎,冯穗力.通用串行总线原理及接口设计[J].电子技术应用,2000,(12):56-59。
[4] 陈启美,王刚.USB技术概述[J].电力自动化设备,2001,(2):55-59.
[5] 王朔,等.USB接口器件PDIUSBD12的接口应用设计[J].单片机与嵌入式系统,2001,(4)

posted @ 2006-11-10 16:30:00 老蒋 阅读全文 | 回复(1) | 引用通告 | 编辑
  • 标签:PDIUSBD12 USB 
  • 2007-5-18 0:04:00
    Re:[转载]基于PDIUSBD12芯片的USB接口的研究与开发
    cutemale(游客)你好的,你的关于基于PDIUSBD12芯片的USB接口的研究与开发中的那部分程序我不是很理解啊,设置模式和地址使能为什么都传到数据地址指针里去啊,不是该传到命令地址指针的吗? 如看到回复,可不可以加我的QQ:573529259,请教一下前辈你些问题,因为我正在搞这方面的课题.非常感谢!
    posted @ 2007-5-18 0:04:00 cutemale(游客) 个人主页 | 引用 | 返回 | 删除 | 回复
    发表评论:
    载入中...