0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于AT89C52单片机和接口芯片实现USB接口的应用设计

电子设计 来源:微计算机信息 作者:马军;李玉林 2021-05-25 10:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

USB是一种新型的通用串行总线,它具有即插即用、可热插拔和传输速率高的特点,在工业界已经获得了广泛的支持和应用。迄今为止,各种USB的外设已有上千种,除了象显卡这种需要极高数据量和实时性要求特别高的控制设备,几乎所有的PC外设都可以移植到USB上来。

一般的USB设备都使用一片微控制器作为其核心部件,通过微控制器强火的控制和运算功能,开发者可以很容易地实现USB设备的智能化。而嵌入式设备的实时、小巧等特性使得USB的协议栈和总线驱动的开发设计显得尤为重要,因为它的好坏会直接对USB主机产生影响,从而会对嵌入式系统性能和稳定产生较大影响。本文以PDIUSBD12为USB接口芯片,以AT89C52为控制器,给出了一种USB接口的设计方法。

1 PDIUSBD12芯片介绍

PHILIPS公司生产PDIUSBD12接口芯片是一款性价比很高的USB器件,它通常通过其高速并行接口进行和微控制器通信,支持本地的DMA传输,支持3个USB端点,其中一个端点128B容量,另外2个端点具有256B容量。该器件允许在众多可用的微控制器中选择最合适的系统控制器可,允许使用现存的体系结构并使设备软件投资成本减少,是开发低成本,高效率的USB外围设备的最佳途径。

PDIUSBD12特性:

(1) 符合通用串行总线USB1.1版规范

(2)高性能USB接口器件集成了SIE FIFO存储器收发器以及电压调整器

(3) 符合大多数器件的分类规格

(4) 可与任何外部微控制器/微处理实现高速并行接口2M字节/秒

(5) 完全自治的直接内存存取DMA操作

(6) 集成320字节多结构FIFO存储器

(7) 主端点的双缓冲配置增加了数据吞吐量并轻松实现实时数据传输

(8) 在批量模式和同步模式下均可实现1M字节/秒的数据传输速率

(9) 具有良好EMI特性的总线供电能力

(10) 在挂起时可控制LazyClock输出

(11) 可通过软件控制与USB的连接

(12) 采用GoodLink技术的连接指示器,在通信时使LED闪烁

(13) 可编程时钟频率输出

(14) 符合ACPI OnNOW和USB电源管理的要求

(15) 内部上电复位和低电压复位电路

(16) 有SO28和TSSOP28两种封装

(17) 工业级操作温度-40~+85℃

(18) 高于8kV的在片静电防护电路减少了额外元件的费用

(19) 具有高错误恢复率(》99%)的全扫描设计确保了高品质

(20) 双电源操作3.3V或扩展的5V电源,范围为3.6~5.5V

(21) 多中断模式实现批量和同步传输

2 USB通信模块的硬件电路的设计

本系统设计采用PDIUSBD12和AT89C52配合完成通信设计。其连线图如图1所示。

从上图分析知道,AT89C52和PDIUSBD12采用总线方式连接,对AT89C52来说,PDIUSBD12是一个具有8位数据总线的存储设备。PDIUSBD12获取USB总线数据,并对数据作相应协议处理之后以中断的方式通知AT89C52,MCU根据相应的中断请求往PDIUSBD12发送不同请求数据,协同实现USB设备列举和数据传输。当外设经过PDIUSBD12连接到集线器后,集线器就会检测外设的连接状态并向主机报告,一但发现该设备,主机就会发送一系列请求给集线器,以使得集线器在主机和设备之间建立一个通信通道。然后主机试图列举该设备,发送设备描述符等请求可,列举成功后,主机即可以从外设能够被主机识别并能和主机进行通信。之后,USB总线进入数据传输阶段。

3 USB固件程序的设计

固件是FireWare的中文意思,它实际上足单片机的程序文件,可以采用C语言或是汇编语言编写。它的操作方式与硬件联系紧密,包括USB设备的连接、USB协议、中断处理等,它不是单纯的软件,而是软件和硬件的结合,开发者需要对端口、中断和硬件结构非常熟悉。在本系统中,当PDIUSBD12从USB接受到一个数据包,就对CPU产生一个中断请求,CPU立即响应中断。在ISR(中断服务程序)中,固件读取数据,并将数据保存值到循环数据缓冲区,随后置柏应事件的标志位,CPU继续前台程序,检测事件标志,执行完成相应的事件任务。固件程序一般放入MCU中,当把设备连接到主机上时,上位机可以发现新设备,然后建立连接。因此,编写固件程序的一个最主要的目的就是让Windows可以检测和识别设备。

3.1 固件功能需求

在本系统设计中,固件程序不仅要协助USB控制芯片PDIUSBD12完成USB通信的任务,而且还要控制采集模块和标准信号源的工作,具体包括:

(1) 应答主机列举设备的所有请求,完成设备的列举和重列举过程。其中包括用软件来模拟USB设备的断开与从新连接,对接收到的设备包进行分析和判断,对主机的设备请求作出适当的响应工作,直到主机对设备的配制完成。

(2) 初始化工作,这项工作有两个方面,一是对采集模块和信号源模块的硬件进行初始化工作;二是对USB芯片进行初始化,设置一些特殊功能寄存器的初值,例如开或关中断,配制I/O端口等。

(3) 当主机发送数据时,要接收数据包并解析数据包的含义,根据事先约定的协议进行相应的操作。对于采集模块具体包括:写入波形数据,选择频率,选择幅度,选择波形类型等。

(4) 当主机要求回传采集到的数据时,根据设备状态回传数据,或者应答数据未准备好。回传数据后,自动按照原先保存的设置初始化采集参数并启动下一次采集,从而使采集继续下去。

(5) 响应硬件产生的中断,并作出相应的处理。

单片机与PDIUSBD12的通信主要是靠单片机给PDIUSBD12发命令和数据来实现的。PDIUSBD12的命令字分为三种:初始化命令字、数据流命令字和通用命令字。PDIUSBD12数据手册给出了各种命令的代码和地址。单片机先给PDIUSBD12的命令地址发命令,根据不同命令的要求再发送或读出不同的数据。

因此,可以将每种命令做成函数,用函数实现各个命令,直接调用函数即可。

固件程序流程图如图2所示。

其中:

TD_Init():此函数用于初始化全局状态变量。

TD_Poll():此函数在操作外设时反复调用,用于外设功能程序代码的执行。

TD Suspend():此函数使外设进入低功耗挂起状态。

TD_Resume():次函数用于对外部恢复事件作出反应,并恢复处理器的正常工作状态。

3.2 驱动程序设计

驱动程序介于硬件与上层应用软件之间,为它们之间的通信提供桥梁。应用程序可以不必知道它想要或者正在与之通信的硬件设备的属性,包括电气连接,物理地址,信号种类。通信协议等,甚至应用程序可以不知道与之通信的是何种接口。这些工作全部是由各个层次的驱动程序来完成的,应用程序只需要知道设备的名称,或是功能就可以了。在Windows中,应用程序可以通过驱动程序像操作一般文件一样来访问硬件设备,以实现应用层与设备的交互。与传统PC总线(如PCI总线)设备的驱动程序相比,USB设备驱动程序从不直接与硬件对话。相反,它仅靠创建URB(USB请求块)并把URB提交到总线驱动程序就可完成硬件操作。

USB驱动程序现在已经具有工业标准化,一般生产USB芯片的厂家已经设计好其驱动程序,在本设计中,使用了由PHILIPS公司提供的PDIUSBD12通用驱动程序D12usb.sys,即功能驱动程序。

4 结束语

PHILIPS公司的PDIUSBD12芯片及其开发环境提供了一个快速有效的开发手段,本文对USB设备端的固件和硬件设计过程以及在主机端的驱动程序和应用程序开发都作了全面详细的介绍。给出了一个快速实现USB控制器的方法与技术,也是开发其他类似设备的参考范例。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    462

    文章

    53534

    浏览量

    459082
  • 单片机
    +关注

    关注

    6074

    文章

    45340

    浏览量

    663513
  • 接口
    +关注

    关注

    33

    文章

    9444

    浏览量

    156140
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    通信接口模块的设计

    等相连接。CH375的USB主机方式支持各种常用的USB全速设备,外部ARM可以通过CH375按照相应的USB协议与USB设备通信。CH375以C
    发表于 10-29 07:00

    嵌入式接口通识知识之USB接口

    规格,传输速度提升为10Gbps,比USB 3.0 的5Gbps快上一倍,并向下兼容USB 2.0/1.0。USB 3.2(USB 3.2 Gen 2x2)在
    发表于 08-21 16:56

    AT89C51 单片机中文资料

    电子发烧友网站提供《AT89C51 单片机中文资料.pdf》资料免费下载
    发表于 06-24 15:29 1次下载

    使用USB转TTL串口板和ST-LINK调试下载器给STM32单片机下载程序

    本文详细介绍如何使用ST-LINK/V2和USB转TTL串口板为STM32单片机下载程序,包括STM32启动模式、JTAG与SWD接口对比、驱动安装及官方软件STM32ST-LINKUtility和FlashLoaderDemo
    的头像 发表于 06-20 17:26 2050次阅读
    使用<b class='flag-5'>USB</b>转TTL串口板和ST-LINK调试下载器给STM32<b class='flag-5'>单片机</b>下载程序

    极致性价比USB-C接口ESD保护方案

    什么是USB-CUSBType-C(简称USB-C)是通用串行总线(USB)的标准化接口规范。其插头与插座采用对称式设计,支持双向插拔操作,物理尺寸为8.3mm×2.5mm,相较于传统
    的头像 发表于 03-24 18:03 1000次阅读
    极致性价比<b class='flag-5'>USB-C</b><b class='flag-5'>接口</b>ESD保护方案

    单片机接口类资料大汇总—50册大全

    本份资料为单片机接口类资料大汇总 总共有50册,内容包括TCP/IP接口,模拟串口,CAN接口、I2C,MODBUS,PCI,
    发表于 03-14 11:08

    请问ADS1247和单片机接口最少可以用几根线完成?

    我最近要使用到AD1247,通过SPI接口单片机接口,由于单片机IO数量的限制以及隔离芯片数量,和成本的限制,我想请问ADS1247和
    发表于 02-13 07:22

    什么是单片机的ADC接口

    ,简称ADC)接口单片机中不可或缺的一部分,它负责将模拟信号转换为数字信号,使得单片机能够处理来自传感器、仪表等模拟世界的信号。本文将深入探讨单片机的ADC
    的头像 发表于 02-03 11:27 3724次阅读

    单片机I/O接口的传输方式

    单片机(Microcontroller Unit,MCU)作为嵌入式系统的核心部件,其输入输出(Input/Output,I/O)接口实现与外部设备数据交换的关键。I/O接口不仅承担
    的头像 发表于 02-02 15:56 1640次阅读

    电动牙刷USB接口芯片保护电路方案

    1 USB2.0的ESD保护方案 如图1所示为USB接口与ESD保护芯片连接示意图,其中USB Controller/Charger指的是
    的头像 发表于 01-17 16:52 1742次阅读
    电动牙刷<b class='flag-5'>USB</b><b class='flag-5'>接口</b>的<b class='flag-5'>芯片</b>保护电路方案

    利用FPGA实现USB 2.0通信接口

    USB 2.0接口实现方式 利用FPGA来实现USB 2.0接口的方式一般有两种,一是借助外围
    的头像 发表于 12-30 13:59 3777次阅读
    利用FPGA<b class='flag-5'>实现</b><b class='flag-5'>USB</b> 2.0通信<b class='flag-5'>接口</b>

    HDMI和USB-C接口的对比

    HDMI和USB-C是两种不同用途但功能有所重叠的接口标准。它们各自有着独特的优势,并且在不同的应用场景中扮演着重要的角色。目前在音视频传输领域中,这两个接口很容易产生对比,本期我们将进行深度解析。
    的头像 发表于 12-20 10:27 3846次阅读

    USB Type-C接口快充协议芯片的特点与发展趋势

    现代设备快充的核心技术之一。为了满足用户对充电速度和效率的需求,USB Type-C接口快充协议芯片应运而生。本文将深入分析USB Type
    的头像 发表于 12-18 14:36 1793次阅读
    <b class='flag-5'>USB</b> Type-<b class='flag-5'>C</b><b class='flag-5'>接口</b>快充协议<b class='flag-5'>芯片</b>的特点与发展趋势

    USB-A/C 2in1接口的未来应用前景分析

    随着科技的不断进步和消费电子设备的更新换代,接口标准也在不断发展和演化。USB接口作为目前最常见的数据传输和电力供应标准,已经成为了现代电子设备中不可或缺的组成部分。近年来,USB-A
    的头像 发表于 12-18 14:29 1128次阅读
    <b class='flag-5'>USB</b>-A/<b class='flag-5'>C</b> 2in1<b class='flag-5'>接口</b>的未来应用前景分析

    基于51单片机的1U服务器电源的电源管理接口设计

    电子发烧友网站提供《基于51单片机的1U服务器电源的电源管理接口设计.pdf》资料免费下载
    发表于 12-16 14:50 0次下载