位置:51电子网 » 技术资料 » 测试测量

51单片机控制SL811HS的USB主机底层驱动

发布时间:2008/6/3 0:00:00 访问次数:464

        

    

    

    摘 要:本文介绍了51单片机控制sl811hs实现usb主机的硬件设计和底层驱动的编写。其中,底层驱动部分主要讲述了usb总线复位、设备插拔动作检测、设备速度检测以及usb传输事务的实现。

    

    引言

    

    基于usb接口的设备使用方便,性价比高,因此在人们的工作和生活中得到了广泛的应用,如u盘、移动硬盘、移动光驱、usb摄像头、usb鼠标键盘等。同时,51 系列单片机以其成熟的技术和高性价比吸引了大量国内用户,被广泛应用于测控和自动化领域。因此,如果在51 单片机系统中增加usb 主机接口,实现对usb 从机设备的控制,则该单片机系统可充分利用现有的各种usb从机设备,大大扩展单片机系统的功能。

    

    本设计实现了在51单片机系统中增加usb主机功能,采用普通51单片机外接专用usb接口芯片的方案。这种方案虽然会使系统传输速度受到限制,而且在稳定性方面有所欠缺,但此方案设计灵活性高,且易于移植,为低成本产品的开发提供了广阔前景。设计中采用的51单片机是atmel公司的at89s52芯片,usb主机功能的扩展通过外接专用usb接口芯片sl811hs实现。cypress公司的usb接口芯片sl811hs可以工作在主机或从机模式,支持usb1.1的全速和低速数据传输。工作在主机模式时,sl811hs可以自动检测外设的插拔动作,可以按照外处理器(如单片机)的要求自动把数据整合为usb协议数据包进行数据传输。

    

    

    

    图 1 系统硬件示意图

    

    本文将介绍单片机at89s52控制sl811hs的硬件设计和底层驱动的编写,其中重点讲述底层驱动的设计。

    

    硬件设计

    

    系统的硬件原理图如图1所示。at89s52的供电电压为5v,sl811hs的为3.3v。尽管供电电压不同,但根据芯片引脚的信号噪声容限参数分析可知,at89s52与sl811hs之间的引脚可以直接相连,不需要电平转换或缓冲。

    

    

    

    表1 usb主机枚举操作驱动的层次关系

    

    软件设计

    

    usb主机驱动是一个高低层子程序的组合,实现usb传输和控制的过程是较高层子程序调用较低层子程序的过程。编写usb主机驱动时,可接从低层往高层的顺序逐层进行。

    

    以usb主机枚举从机设备的操作为例,实现该功能所需要的各层子程序层次关系如表1所示。本文将介绍较低层的几个子程序的实现,包括读写sl811hs内部寄存器、传输事务的实现、设备插拔检测、复位等,其中,“传输事务的实现”是关键和难点,同时也是本文的重点。

    

    单片机读写sl811hs

    

    内部寄存器

    

    读写sl811hs内部寄存器子程序是最低层的子程序,系统所进行的各种操作主要都是通过调用这些子程序读写sl811hs内部寄存器实现的。例如,通过读取sl811hs的状态寄存器获取sl811hs的状态信息可以实现设备插拔检测、设备速度检测等,通过向sl811hs的相关控制寄存器写入控制字节可以实现usb总线复位以及usb数据传输等操作。

    

    sl811hs内部寄存器

    

    从编程结构的角度来看,sl811hs内部寄存器一共有256个单元,每个单元是一个字节,其中地址为[00h]~[0fh]的前16个单元是sl811hs的状态寄存器或控制寄存器(统称为特殊寄存器),其余的是数据缓冲寄存器。表2列出了16个特殊寄存器的名称和主要功能含义。

    

    

    

    表2 sl811hs内部特殊寄存器简介

    

    单片机读写sl811hs

    

   &nbs

        

    

    

    摘 要:本文介绍了51单片机控制sl811hs实现usb主机的硬件设计和底层驱动的编写。其中,底层驱动部分主要讲述了usb总线复位、设备插拔动作检测、设备速度检测以及usb传输事务的实现。

    

    引言

    

    基于usb接口的设备使用方便,性价比高,因此在人们的工作和生活中得到了广泛的应用,如u盘、移动硬盘、移动光驱、usb摄像头、usb鼠标键盘等。同时,51 系列单片机以其成熟的技术和高性价比吸引了大量国内用户,被广泛应用于测控和自动化领域。因此,如果在51 单片机系统中增加usb 主机接口,实现对usb 从机设备的控制,则该单片机系统可充分利用现有的各种usb从机设备,大大扩展单片机系统的功能。

    

    本设计实现了在51单片机系统中增加usb主机功能,采用普通51单片机外接专用usb接口芯片的方案。这种方案虽然会使系统传输速度受到限制,而且在稳定性方面有所欠缺,但此方案设计灵活性高,且易于移植,为低成本产品的开发提供了广阔前景。设计中采用的51单片机是atmel公司的at89s52芯片,usb主机功能的扩展通过外接专用usb接口芯片sl811hs实现。cypress公司的usb接口芯片sl811hs可以工作在主机或从机模式,支持usb1.1的全速和低速数据传输。工作在主机模式时,sl811hs可以自动检测外设的插拔动作,可以按照外处理器(如单片机)的要求自动把数据整合为usb协议数据包进行数据传输。

    

    

    

    图 1 系统硬件示意图

    

    本文将介绍单片机at89s52控制sl811hs的硬件设计和底层驱动的编写,其中重点讲述底层驱动的设计。

    

    硬件设计

    

    系统的硬件原理图如图1所示。at89s52的供电电压为5v,sl811hs的为3.3v。尽管供电电压不同,但根据芯片引脚的信号噪声容限参数分析可知,at89s52与sl811hs之间的引脚可以直接相连,不需要电平转换或缓冲。

    

    

    

    表1 usb主机枚举操作驱动的层次关系

    

    软件设计

    

    usb主机驱动是一个高低层子程序的组合,实现usb传输和控制的过程是较高层子程序调用较低层子程序的过程。编写usb主机驱动时,可接从低层往高层的顺序逐层进行。

    

    以usb主机枚举从机设备的操作为例,实现该功能所需要的各层子程序层次关系如表1所示。本文将介绍较低层的几个子程序的实现,包括读写sl811hs内部寄存器、传输事务的实现、设备插拔检测、复位等,其中,“传输事务的实现”是关键和难点,同时也是本文的重点。

    

    单片机读写sl811hs

    

    内部寄存器

    

    读写sl811hs内部寄存器子程序是最低层的子程序,系统所进行的各种操作主要都是通过调用这些子程序读写sl811hs内部寄存器实现的。例如,通过读取sl811hs的状态寄存器获取sl811hs的状态信息可以实现设备插拔检测、设备速度检测等,通过向sl811hs的相关控制寄存器写入控制字节可以实现usb总线复位以及usb数据传输等操作。

    

    sl811hs内部寄存器

    

    从编程结构的角度来看,sl811hs内部寄存器一共有256个单元,每个单元是一个字节,其中地址为[00h]~[0fh]的前16个单元是sl811hs的状态寄存器或控制寄存器(统称为特殊寄存器),其余的是数据缓冲寄存器。表2列出了16个特殊寄存器的名称和主要功能含义。

    

    

    

    表2 sl811hs内部特殊寄存器简介

    

    单片机读写sl811hs

    

   &nbs

相关IC型号

热门点击

 

推荐技术资料

音频变压器DIY
    笔者在本刊今年第六期上着重介绍了“四夹三”音频变压器的... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!