基于PDIUSBD12芯片扩展W78E58 的USB接口
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于PDIUSBD12芯片扩展W78E58 的USB接口
宋曰聪;李敏;柳波;袁亮
【摘要】USB接口因其通用性而可以外接多种设备,W78E58是一种典型的使用广泛的单片机,W78E58不具有USB接口,限制了其在某些领域的应用.介绍了一种用PDIUSBD12扩展单片机W78E58 USB接口的方法.阐述了硬件设计原理,软件的设计结构,主要软件程序的功能划分.基于以上硬软件方案,我们设计出了单片机的USB 通信模块,实现了单片机通过USB口和PC机的通信.
【期刊名称】《现代电子技术》
【年(卷),期】2007(030)007
【总页数】2页(P67-68)
【关键词】单片机;USB接口;PDIUSBD12;W78E58
【作者】宋曰聪;李敏;柳波;袁亮
【作者单位】绵阳师范学院,四川,绵阳,621000;绵阳师范学院,四川,绵阳,621000;绵阳师范学院,四川,绵阳,621000;绵阳师范学院,四川,绵阳,621000
【正文语种】中文
【中图分类】TP368.1
1 引言
单片机因为其价格便宜、性能稳定、技术成熟而在很多领域都有使用。
但是随着其应用领域的增多,单片机和外设种类的增多与有单片机通信端口之间的矛盾日益突
出,我们如果利用Intel,Microsoft等公司联合制定的总线接口规范即通用串行总线(Universal Serial Bus,USB)[1],就为解决这一问题提供了最好的解决方案。
USB具有以下特点:
有较高的传输速率 USB 1.1支持全速和低速2种方式。
全速速率为12 Mb/s,低速速率为1.5 Mb/s; USB 2.0除支持USB 1.1的2种速度方式外,还增加了速率可达480 Mb/s的高速方式。
使用方便灵活 USB支持即插即用和热插拔,他允许在任何时候连接和断开外设,当外设被连接时,系统会自动检测到外设并准备使用。
易于扩展通过根集线器可携带127个设备[2],真正实现多个外设共用一个接口。
此外,USB还有可靠性高、成本低、功耗小等优点而倍受欢迎。
目前供于开发USB设备的芯片很多,但主要有两类:一类是带USB接口的微控制器(MCU),这些微控制器有些是从底层专用于USB控制的,这类微控制器有自己的系统结构和指令;另一类是纯粹的USB接口芯片,用于扩展现成的MCU比较方便,本文以PDIUSBD12为USB接口芯片,对W78E58B单片机的接口进行扩充。
使得单片机可以实现与其他设备之间进行USB通信。
2 系统硬件方案设计
硬件设计的原理比较简单,如图1所示。
图1 硬件设计原理图
PDIUSBD12 芯片电路如图2所示。
分析如下:
(1) D0~D7分别与MCU的P 0.0~P 0.7 相连。
(2) D12的A0引脚通过10 kΩ电阻到地,因为D12 Smart 板上只有D12一个外部总线扩展电路。
(3) D12 的ALE引脚与MCU的ALE引脚相连。
(4) 振荡电路采用6 MHz,经过D12内部倍频电路以后,实际D12内部时钟为
24 MHz。
请特别注意两个电容值的大小是不一样的,而且必须采用22 pF和68 pF的。
(5) GL_N 通过一个电阻和绿色LED 串联到VCC。
当USB设备枚举成功后,该LED常亮,当PC 机与D12 有数据通信时,该LED 闪烁。
(6) DMACK_N 和EOT_N 必须接上拉,因为D12 Smart 板上没有用到D12 的DMA功能。
(7) SUSPEND 和INT_N 也要通过电阻上拉到VCC,因为这两个引脚都是开漏的。
图2 PDIUSBD12电路图
3 软件程序设计结构
3.1 软件结构设计
USB接口的数据通过中断服务程序ISR来触发CPU接收,CPU主程序设计成消
息触发型的循环主程序。
其设计思路如图3所示。
图3 软件结构
后台ISR 中断服务程序和前台主程序循环之间的数据交换通过事件标志和数据缓
冲区来实现。
例如PDIUSBD12 的批量输出端点可使用循环的数据缓冲区。
当PDIUSBD12 从USB 收到一个数据包那么就对CPU 产生一个中断请求,CPU 立
即响应。
中断在ISR中固件将数据包从PDIUSBD12 内部缓冲区移到循环数据缓
冲区,并在随后清零PDIUSBD12 的内部缓冲区,以使能接收新的数据包CPU 可以继续他当前的前台任务,直到完成。
由于这种结构主循环不关心数据是来自USB,串口还是并口。
他只检查循环缓冲
区内需要处理的新数据。
这样主循环程序专注于数据的处理而ISR 能够以最大可
能的速度进行数据的传输。
3.2 软件主要函数的设计
(1) 硬件提取层EPPHAL.C
这是固件中的最低层代码他执行对PDIUSBD12 和硬件与I/O 相关的访问。
当与其他CPU型号改变时这部码需要修改或增加。
(2) 中断服务程序ISR.C
这部分代码处理由PDIUSBD12 产生的中断他将数据从PDIUSBD12 的内部FIFO 取回到CPU 存储器并建立正确的事件标志以通知主循环程序进行处理。
(3) 主循环MAINLOOP.C
主循环检查事件标志并进入对应的子程序进行进一步的处理,他还包含人机接口的代码例如LED和键盘扫描。
(4) 协议层CHAP_9.C PROTODMA.C
协议层处理标准的USB 器件请求还有特殊的厂商请求,例如DMA模式。
USB器件不是决定传输速率的惟一标准。
主机端的应用程序在整个系统的性能占有更重要的地位。
因为主机一直在控制USB的处理。
DMA 传输是一个包括了控制端点和主端点的连续操作。
由于下一步操作由前一操作的结果决定,所以协作非常重要。
虽然多线程可用于对不同管道进行访问以增加系统的性能,但使用单线程却使处理建立DMA请求IOCTL和数据传输写文件/读文件操作的编程容易许多。
按照以上的软硬件设计思路,我们成功调试了W78E58B与PC机通过USB口的通信。
达到了扩充单片机接口的目的。
4 将来研究的问题
PDIUSBD12 是符合USB 1.1 的USB 接口器件USB协议的最高速度为12
Mb/s[3] 。
但是我们设计出来的USB口经过测试,速度只有2 Mb/s,远远低于理论水平。
我们将从缓冲区设计的影响和测试方法的科学性两个方面研究,来提高USB的通信速率,使其尽可能达到理论值。
参考文献
[1] Universal Erial Bus Specification Compaq. Intel,Microsoft,NEC Revision
1.1 September 23,1998.
[2] [美] Jan B大全[M].陈逸,译.北京:中国电力出版社,2001.
[3] [美] Don B系统体系[M].精英科技,译.北京:中国电力出版
社,2001.。