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

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

3天内不再提示

基于STC89C52芯片的USB接口低功耗设计方案

电子设计 来源:中电网 作者:中电网 2021-02-06 11:31 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:张学峰;陈瑾;翟从鸿;彭文超;朱家俊

为解决51单片机与计算机的串行总线(USB)的通信问题,以PDIUSB12芯片为基础,选择51单片机中的STC89C52为示例,设计了一款USB的接口电路,解决了多款51单片机与计算机的USB通信困难的问题。

引言

USB因其使用方便、传输速度快、连接灵活而受到用户和计算机厂商的广泛青睐。微控制器MCU)在与计算机实现通信时大多依靠USB来实现。在MCU中,51单片机是国内使用最广的单片机之一,但是由于多款51单片机无法直接与计算机实现USB通信,而给许多用户开发和使用带来不便。本文以51单片机中的典型代表STC89C52和恩智浦半导体公司的PDIUSB12为基础设计的USB接口电路,解决了MCU和计算机的USB通信问题。本方案具有价格便宜、使用简单、无需编写复杂的USB驱动程序、即插即用等优点。

1 电路硬件设计

1.1 芯片简介

本系统以单片机STC89C52和PDIUSB12接口芯片为基础而搭建。STC89C52是STC公司生产的一种低功耗、高性能8位CMOS微处理器,具有经典的MCS-51内核,主要有以下功能特点:拥有灵活的8 KB Flash程序存储器和512 B RAM数据存储器,并含有32位I/O口和内置的4 KB EEPROM,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构,全双工串行口;掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止;最高运作频率35 MHz,是一种常用性价比较高的MCU。

USB接口芯片采用的PDIUSB12是一种高性能USB接口器件,集成了SIE、FIFO存储器、收发器以及电压调整器。它支持本地的DMA传输,能够与外部的微处理器实现2 Mb/s的高速并行接口,集成了320 B的多配置FIFO存储器,在块传输模式下有1 Mb/s的数据传输率,可通过软件实现与USB相连,多中断模式实现批量和同步传输[1]。可以把PDIUSB12、MCU与计算机连接,本设计中与计算机相连的结构图如图1所示。

1.2 硬件电路

由STC89C52和PDIUSB12构成的USB接口电路图如图2所示,PDIUSB12的8位并行数据分别与STC89C52的P0口连接;ALE表示地址锁存功能,与GND相连,关闭地址信息锁存;CS_N表示片选功能,与GND相连,芯片一直处于工作状态;SUSPEND与GND相连,挂起功能失效;中断请求引脚INT_N与MCU的外部中断INT0相连,低电平时有效;RD_N和WR_N为控制信号,分别与单片机P3.3口和P3.4口相连;地址位A0与单片机P3.5口相连,当A0为高电平时表示单片机发出命令指令,当A0为低电平时表示单片机发出数据指令;DMA请求引脚DMREQ悬空;DMA应答引脚DMACK_N低电平时有效,它与VCC相连无DMA应答;可编程时钟输出DMACK_N悬空[2]。

USB设备有两种供电方式:总线供电和自供电方式,为了方便使用、减少外围电路的复杂程度,本文选择了总线供电方式。USB接口有4个引脚,分别是5 V的VCC口、GND、数据口D+和D-。LED灯D2与USB的VCC口和GND相连,当系统与USB接口连接时,D2灯亮。数据口D+、D-用于通信,也可通过D+、D-的电位状态来判断系统是否被计算机识别。当电位差接近GND时,表示系统与计算机连接未成功;当电位差接近VCC时,表示系统已做好准备可以与计算机通信。也可以通过GL_N脚的LED灯D1来进行判断:当D1间歇闪烁,表示系统正在与计算机进行识别;当D1一直点亮,表示已成功完成识别,可以通信。

2 系统软件设计

对51单片机和PDIUSB12的USB系统而言,其核心部分是程序设计,主要包括驱动软件部分、固件程序部分和应用软件部分。为简化设计,驱动软件利用Windows自带的驱动软件,使用HID系统接口协议,省去了驱动软件的开发过程。因此固件程序和应用软件程序是系统的关键部分。

2.1 USB设备与计算机通信过程

PDIUSB12拥有PSIE(Philips串行接口引擎)功能,PSIE实现了全部的USB协议层,并完全由硬件实现而不需要软件的参与。该模块的功能包括同步模式的识别、并行/串行转换、位填充/解除填充、CRC校验/产生、PID校验/产生、地址识别和握手评估/产生。要实现计算机与USB设备的通信,需要在USB设备接入计算机时进行枚举过程[3],也就是让计算机识别与设置USB设备、设备与主机之间的通信通过控制传输模式进行。其过程主要如下:

(1)当USB设备接入计算机时,USB设备处于上电状态,单片机和PDIUSB12上电。在PDIUSB12芯片内部的D+、D-上集成有1.5 k?赘的上拉电阻,默认状态下此上拉电阻不与VCC相连。上电后,若将D+拉至高电平,根据集线器监测到的数据变化,识别出有高速设备接入;若上拉电阻将D-拉至高电平,识别出有低速设备接入。本系统设定的是高速USB设备。在MCU完成初始化操作中,设置D+为高电平。

(2)当计算机检测USB设备已经接入并判断出是高速设备还是低速设备后,计算机会发送Set_Port_Feature请求给集线器用以管理端口USB设备,并将D+、D-置低电平状态(即复位状态),持续10 ms后回到通信状态。在计算机发送完Set_Port_Feature后,会不断向集线器发送Get_Port_Status请求,以查询USB设备是否完成复位功能。当集线器完成复位后,USB设备处于空闲状态,等待计算机发送新的指令。USB设备和计算机传输的默认地址是0和端点0。

(3)计算机通过发送Set_Address请求向USB设备分配一个唯一的地址。此后计算机与USB设备的所有通信都通过这个地址来实现。

(4)地址分配完毕后,计算机从新地址获取设备描述符。设备描述符中规定了一个或多个配置描述符,计算多次发送Get_Descriptor()命令来读取这些配置描述符。设备描述符包括端点0的最大包长度、设备支持配置和个数、设备类型、PID、VID等。计算机收到后发送0 B数据包作为应答。

(5)计算机读完设备描述符后对设备进行配置,此时计算机端口会弹出窗口,展示发现新设备的信息、产商、产品描述、型号等。

(6)计算机从描述符中得到足够的信息之后开始为设备安装驱动。加载驱动后,计算机发送Set_Configration()命令请求为设备选择一个合适的配置,至此USB枚举过程结束[4]。此时,若计算机向USB发送某一数据指令,数据通过USB口传送给PDIUSB12,经PDIUSB12交由MCU进行处理,处理完毕后其结果经USB接口返还给上位机软件显示出来。至此,实现USB设备与计算机的最基本通信。

2.2 固件程序设计

2.2.1 固件结构

固件结构和数据流向如图3所示。在硬件提取层中首先要对系统进行底层设置和识别,主要是对PDIUSB12和MCU的I/O口进行识别和加载的过程;PDIUSB12命令接口包含若干子程序命令,需要时可对子命令进行直接调用;中断服务程序(ISR)的主要功能是当PDIUSB12发送中断请求时,接收传来的数据并设定标志传给主循环程序;标准设备处理表示对USB的标准设备请求进行处理;厂商请求处理表示对用户添加的厂商请求进行处理[5];主循环主要是处理用户按键、I/O口等用户自定义功能和接收各模块的数据处理的功能。

2.2.2 PDIUSB12接口命令

该模块包含PDIUSB12的所有子程序,当需要时只要从中直接调用即可。下面列举其中几个主要功能:

INT16U D12_ReadChipID(void)//读取芯片ID

void D12_SetEndpointEnable(INT8U bEnable)

//设置端点使能

void D12_SetMode(INT8U bConfig,INT8U bClkDiv)

//模式设置

void D12_SetDMA(INT8U bMode)//DMA工作方式设置

INT16U D12_ReadInterruptRegister(void)

//读取中断寄存器

INT8U D12_SelectEndpoint(INT8U bEndp)//端点选择

INT8U D12_ReadEndpointStatus(INT8U bEndp)

//读取端点状态

INT8U D12_WriteEndpoint(INT8U endp,INT8U len,

INT8U*buf)//写入数据

void D12_AcknowledgeEndpoint(INT8U endp)//答应setup

在该模块下的大多函数都是D12开头的。其详细功能就不一一介绍,可参阅PDIUSB12数据手册。

2.3 应用软件及程序设计

应用软件是将计算机发送过来的数据经单片机处理后再返回给计算机,并通过上位机将发送和接收的数据显示出来。

以计算机将发送给MCU的数字进行+1操作为例,实现该功能的应用程序如下:

if(bEPPflags.bits.ep2_rxdone)

{

bEPPflags.bits.ep2_rxdone=0;

D12_WriteEndpoint(5,EP2_PACKET_SIZE,EpBuf);

}

本设计选择单片机多功能调试助手作为上位机软件,这是一款集串口/USB/网络调试、进制转换、字模与数码管字型码制作、常用校验值计算、UNICODE码转换、位图输出C文件等众多功能于一身的综合型调试软件。将实验数据和实验结果显示出来,其实现结果如图4所示。

3 结论

本文研究了基于STC 51单片机和PDIUSB12的USB接口设计,以STC89C52为示例提出了整体研究方案。该方案采用HID系统接口协议,经试验发现其性能稳定、使用方便、性价比高,可作为STC 51单片机与计算机的通信接口使用。同时也可为其他USB接口电路的研究提供解决思路。
编辑:hfy

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

    关注

    49

    文章

    8905

    浏览量

    165991
  • 单片机
    +关注

    关注

    6078

    文章

    45618

    浏览量

    674992
  • usb
    usb
    +关注

    关注

    60

    文章

    8486

    浏览量

    286471
  • fifo存储器
    +关注

    关注

    0

    文章

    10

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    探索CY7C65632和CY7C65634:低功耗USB 2.0集线器控制器的卓越之选

    。Cypress的CY7C65632和CY7C65634 HX2VL™ 非常低功耗USB 2.0集线器控制器以其出色的特性和功能,为工程师们提供了一个理想的解决
    的头像 发表于 05-18 09:15 213次阅读

    OM6627C—针对蓝牙低功耗 (BLE) 及 2.4GHz 私有协议应用

    OM6627是一款针对蓝牙低功耗(BLE)及 2.4GHz私有协议应用而优化的低功耗真系统级芯片(SoC)解决方案。它集成了高性能、低功耗
    发表于 05-13 17:11

    为什么选择 Nordic 的低功耗蓝牙解决方案

    为什么选择 Nordic 的低功耗蓝牙解决方案?强大的无线 SoC 产品组合: 我们丰富的超低功耗无线 SoC 选件具有可扩展的内存配置和功能集,可满足各种需求。如果存储器或功能要求发生意外变化
    发表于 04-16 10:40

    低功耗BLE应用三模键盘模块方案

    在无线外设市场,键盘产品正加速向多模化、低功耗方向演进。针对厂商对低功耗BLE应用的迫切需求,基于CH592芯片的三模键盘模块方案提供了USB
    的头像 发表于 04-14 17:20 503次阅读
    <b class='flag-5'>低功耗</b>BLE应用三模键盘模块<b class='flag-5'>方案</b>

    抖胆DD3118s芯片USB3.0读卡器芯片,双头读卡器方案

    DD3118S 是采用40nm 低功耗工艺打造的单芯片解决方案,专为高速读卡器、多功能合一读卡设备设计,核心作用是实现 USB 接口与 SD
    的头像 发表于 04-07 02:44 377次阅读
    抖胆DD3118s<b class='flag-5'>芯片</b>,<b class='flag-5'>USB</b>3.0读卡器<b class='flag-5'>芯片</b>,双头读卡器<b class='flag-5'>方案</b>

    AT89C55WD微控制器:特性、功能与应用详解

    AT89C55WD微控制器:特性、功能与应用详解 在嵌入式系统设计领域,选择一款合适的微控制器至关重要。AT89C55WD作为一款低功耗、高性能的CMOS 8位微控制器,具有诸多出色特性,能为众多
    的头像 发表于 04-06 09:10 374次阅读

    AT89C52:一款经典的8位微控制器

    AT89C52:一款经典的8位微控制器 在嵌入式控制应用领域,AT89C52这款8位微控制器凭借其出色的性能和丰富的功能,一直是众多工程师的选择。尽管现在它已不推荐用于新设计(建议使用AT89S52
    的头像 发表于 04-06 09:10 470次阅读

    浅谈低功耗晶振的设计方案

    在电源受限的电路应用中,为延长电池寿命或降低系统整体功耗,晶振通常需要具备低功耗特性。今天,凯擎小妹来和大家聊聊低功耗晶振的设计方案
    的头像 发表于 02-11 11:34 597次阅读
    浅谈<b class='flag-5'>低功耗</b>晶振的<b class='flag-5'>设计方案</b>

    AT89LP51/52微控制器:高效能与低功耗的完美融合

    AT89LP51/52微控制器:高效能与低功耗的完美融合 在电子工程师的设计世界里,寻找一款性能卓越、功能丰富且功耗合理的微控制器是一项关键任务。AT
    的头像 发表于 02-09 17:20 460次阅读

    深入解析DS90C402:高数据率低功耗LVDS接收器

    )接收器,为高数据速率和低功耗应用提供了出色的解决方案。今天就来详细聊聊这款芯片。 文件下载: ds90c402.pdf 一、芯片概述 DS
    的头像 发表于 01-04 14:45 402次阅读

    NXP MCX C系列微控制器:入门级低功耗解决方案

    NXP MCX C系列微控制器:入门级低功耗解决方案 在电子设计领域,寻找一款既经济实惠又具备低功耗特性的微控制器是许多工程师的目标。NXP的MCX
    的头像 发表于 12-24 14:00 852次阅读

    原厂 FZH1693 低功耗的字段式LCD显示驱动控制专用芯片

    特性描述 型号:FZH1693 FZH1693是一种低功耗的字段式LCD显示驱动控制专用芯片。它拥有52个SEG输出端、4个COM输出端,内置52×4=208bit的DDRAM存,采用
    发表于 11-05 09:42

    高速/低功耗/高性价比的 HyperRam 应用

    : 扩展 MCU 外部数据 RAM 超低功耗 简单的接口设计,可高效利用 PCB 空间 SDRAM 扩展解决方案的经济高效的替代方案 Hyper Bus
    发表于 09-05 06:06

    SILERGY矽力杰推出极致性价比USB-C接口ESD保护方案

    SILERGY矽力杰推出极致性价比USB-C接口ESD保护方案
    的头像 发表于 07-07 11:28 1355次阅读
    SILERGY矽力杰推出极致性价比<b class='flag-5'>USB-C</b><b class='flag-5'>接口</b>ESD保护<b class='flag-5'>方案</b>

    瑞萨全新RA2L2 MCU 搭载48MHz ArmCortex-M23内核 超低功耗、支持CAN及USB-C

    电压范围,-40至125°C的宽工作温度范围,并具有丰富的外设,如 I3C、SSI、低功耗UART、CAN、USB FS,以及USB Typ
    的头像 发表于 06-11 15:22 1866次阅读
    瑞萨全新RA2L2 MCU 搭载48MHz ArmCortex-M23内核 超<b class='flag-5'>低功耗</b>、支持CAN及<b class='flag-5'>USB-C</b>