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

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

    关注

    48

    文章

    8250

    浏览量

    162421
  • 单片机
    +关注

    关注

    6074

    文章

    45340

    浏览量

    663628
  • usb
    usb
    +关注

    关注

    60

    文章

    8372

    浏览量

    281725
  • fifo存储器
    +关注

    关注

    0

    文章

    10

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    低功耗LCD驱动段码屏抗干扰驱动芯片VKL092Q

    ) 应用领域 ·面板手表·医疗仪器 超低功耗LCD液晶控制器及驱动系列: VKL060 2.5~5.5V 15seg4com 偏置电压1/2 1/3 I2C通讯接口 SSOP24 超低功耗
    发表于 11-03 17:29

    CS501芯片,Typec转DP 8k60方案,typec转DP方案

    CC 控制器, 用于 CC 通信, CS501的应用提供了一个完整的 USB TYPE-C 接口控制解决方案芯片可根据用户需求灵活配
    的头像 发表于 10-28 09:42 339次阅读
    CS501<b class='flag-5'>芯片</b>,Typec转DP 8k60<b class='flag-5'>方案</b>,typec转DP<b class='flag-5'>方案</b>

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

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

    STM32H7使用HAL库如何控制外置USB HS PHY进入低功耗

    项目使用STM32H7的HAL库控制外置USB HS PHY(如USB3300或CH132)的。不知如何让MCU通过ULPI接口写寄存器让USB HS PHY进入
    发表于 08-14 07:21

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

    SILERGY矽力杰推出极致性价比USB-C接口ESD保护方案
    的头像 发表于 07-07 11:28 717次阅读
    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 1258次阅读
    瑞萨全新RA2L2 MCU 搭载48MHz ArmCortex-M23内核 超<b class='flag-5'>低功耗</b>、支持CAN及<b class='flag-5'>USB-C</b>

    Ci24R02—高度集成的低功耗SOC芯片

    Ci24R02是一款高度集成的低功耗SOC芯片,具有低功耗、Low Pin Count、宽电压工作范围,集成了 13/14/15/16位精度的ADC、LVD、UART、SPI、I2C
    发表于 06-01 18:41

    电机温度监测系统低功耗无线节点模块设计

    提出了一种用于电机温度监测系统的无线数据收发节点模块设计方案,利用LPC1114的省电耗模式配合Si4432集成芯片实现无线收发模块的低功耗。另外,针对模块硬件实现RF前端高频电路设计和前期仿真做出
    发表于 04-30 00:42

    芯片为什么要做低功耗设计?

    芯片低功耗设计已成为芯片领域核心竞争指标,从底层工艺到系统架构的全链路优化,正推动电子设备向高效、智能、可持续方向演进‌。 一、‌设计必要性‌ 物理限制突破‌: 随着CMOS工艺制程微缩,晶体管密度
    的头像 发表于 04-22 15:36 1040次阅读

    极致性价比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保护<b class='flag-5'>方案</b>

    DA14531-00000FX2 超低功耗蓝牙5.1 SOC芯片介绍

    DA14531-00000FX2 芯片介绍1. 概述DA14531-00000FX2 是 Dialog Semiconductor(现为 Renesas Electronics)推出的一款超低功耗
    发表于 03-10 16:47

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

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

    低功耗段码屏驱动段码屏芯片厂家芯片VK2C22

    176点(44SEGx4COM) 的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,也可通过指令进入省电模 式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表类产品。Z142+403 特点
    发表于 12-25 17:13

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

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