c语言sscanf函数的用法是什么
384
2022-11-10
基于STC89C52芯片的USB接口低功耗设计方案
引言
1 电路硬件设计
1.1 芯片简介
1.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设备与计算机通信过程
(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。
(4)地址分配完毕后,计算机从新地址获取设备描述符。设备描述符中规定了一个或多个配置描述符,计算多次发送Get_Descriptor()命令来读取这些配置描述符。设备描述符包括端点0的最大包长度、设备支持配置和个数、设备类型、PID、VID等。计算机收到后发送0 B数据包作为应答。
(5)计算机读完设备描述符后对设备进行配置,此时计算机端口会弹出窗口,展示发现新设备的信息、产商、产品描述、型号等。
2.2 固件程序设计
2.2.1 固件结构
固件结构和数据流向如图3所示。在硬件提取层中首先要对系统进行底层设置和识别,主要是对PDIUSB12和MCU的I/O口进行识别和加载的过程;PDIUSB12命令接口包含若干子程序命令,需要时可对子命令进行直接调用;中断服务程序(ISR)的主要功能是当PDIUSB12发送中断请求时,接收传来的数据并设定标志传给主循环程序;标准设备处理表示对USB的标准设备请求进行处理;厂商请求处理表示对用户添加的厂商请求进行处理[5];主循环主要是处理用户按键、I/O口等用户自定义功能和接收各模块的数据处理的功能。
2.2.2 PDIUSB12接口命令
该模块包含PDIUSB12的所有子程序,当需要时只要从中直接调用即可。下面列举其中几个主要功能:
//设置端点使能
void D12_SetMode(INT8U bConfig,INT8U bClkDiv)
//模式设置
void D12_SetDMA(INT8U bMode)//DMA工作方式设置
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 结论
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~