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

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

3天内不再提示

USB-HOST嵌入式模块的实现方案及应用研究分析

电子设计 来源:微计算机信息 作者:黄樱,赵巾帼,罗庆 2020-05-28 08:08 次阅读

引言

随着数据采集系统、工控行业和嵌入式用户对移动存储的需求越来越大,传统的通过软盘、串行口(RS232/RS485)或以太网等传输数据的方式已不能满足当前数据存储和交换的需求。如何在嵌入式模块中实现USB移动存储已成为急需解决的问题。

本文提出利用SL811HS和8位单片机实现USB-HOST嵌入式模块的一种方案。它带有标准USB数据总线接口,完全遵守USB 1.1协议和大规模存储协议规范。移动存储设备的文件操作方式支持FAT16文件系统。

1、USB-HOST嵌入式模块原理

USB技术规范将使用USB进行数据传输的双方划分为两种角色――Host和Slave,并且规定,数据传输只能发生在Host和Slave之间。目前,绝大多数Host功能角色被集成在各种类型的PC机上,如笔记本电脑、台式机、Mac机及服务器等;而各种各样的基本USB的移动设备都集成了USB Slave功能角色,例如U盘、带USB接口数码相机等。这样,就导致这些作为USB Slave的USB接口的数字设备中的数据,离开PC机无法读写。解决这一问题的根本办法就是在需要使用USB设备的系统中集成USB Host功能模块,使之具有与USB Slave设备进行数据传输的能力。

利用SL811HS和8位单片机实现的系统完成了USB Host功能,并且提供了USB总线的接口方式。它可以作为一个数据接口模块集成到用户的嵌入式系统中,使用户系统能够读/写作为Slave的USB移动存储器,从而完成数据存储和交换功能。由于它支持FAT16文件系统,所以可以将用户系统发来的数据以文件的方式存储到USB移动存储器中,因此,用户可以在需要时,将USB移动存储器取出,并拿到自己数据处理中心的PC机,直接将采集到的数据进行分析,极大地方便了用户数据的采集和处理。其原理如图1所示。

USB-HOST嵌入式模块的实现方案及应用研究分析

2、SL811HS芯片介绍

Cypress公司提供的USB嵌入式主控制器芯片SL811HS具有标准的微处理器总线接口,可以提供全速(12Mb/s)和低速(1.5Mb/s)USB数据转换。图2为SL811HS主从控制功能模块。

它具有以下功能:

①自动检测全速或低速设备;

②8位双向数据输出端口

③集成芯片的串行接口驱动和USB接收;

④256字节内部SRAM缓存,乒乓处理;

⑤自动生成内部帧同步和CRC5/16校验;

⑥自动地址增益模式,可以节省存储器读写周期。

3、硬件电路设计

图3为SL81HS电路设计图,在实际项目中已经得到了应用。

USB-HOST嵌入式模块的实现方案及应用研究分析

其中AD0~AD7、CS、RD、WR均与单片机89C51相连,由单片机进行控制。虽然SL811HS可以使用12MHz晶振,然而在实际使用过程中发现,当晶振质量不太好时,电路稳定性较差,故建议在条件许可的情况下,尽量使用48MHz的有源晶振。

4、SL811HS的工作过程

①通过SL811HS向从机发送数据过程。接收数据过程同发送数据过程类似。

②通过SL811HS向从机发送数据的Ping-Pong方式的实现。若有大量的数据(如以512字节为最小单位的扇区写操作)需要传送,就要考虑到Ping-Pong传送。其具体过程为:

*向BUFFER中同时写入2个帧;

*发出第1个帧;

*等待确认信息

*收到确认信息后发出第2个帧,在第1个帧的位置上填充第3个帧,同时开始等待确认信息。

Ping-Pong方式利用等待的时隙,填充BUFFER,可以极大提高系统的性能,在不改变其它条件的情况下,提高速度。

5、大规模存储过程

大规模存储是CPU和移动存储设备打交道的接口程序,通过调用大规模存储程序,可以得知移动存储设备文件分区表中的DBR、FAT表、文件目录表等的起始位置,并且可以获得移动存储设备某些地址区间的一系列数值。Windows系统可以自动支持大规模存储协议,使主机可以自如访问移动存储设备;然而在单独开发此嵌入式模块时,大规模存储协议须自己编写。

下面为通过大规模存储协议访问移动存储设备的部分程序。

if(!SPC_RequestSense()) return FLASE;

//转换数据状态到主机

if(!SPC_TestUnit()) returnFALSE; //检测UFI设备状态

if(!RBC_ReadCapacity()) return FLASE; //主机读取的最大容量

if(!RBC_Read(0x0,1,DBUF)) return FLASE;//主机读0x0开始的一个数据块到DBUF

//以上为大规模存储的各个命令块,运行成功,则继续。

if(DBUF[0]==0xeb||DBUF[0]==0xe9)

DeviceInfo.StartSector=0;

Else

DeviceInfo.SartSector=SwapINT32(pMBR-》StartSector);

pBPB=(PBPB_BLOCK)DBUF; //引导扇区DBR的BRB块定义

if(!RBC_Read(DeviceInfo.StartSector,1,DBUF)) return FLASE;

DeviceInfo.BPB_BytesPerSec=SwapINT16(pBPB-》BPB_BytesPerSec);

DeviceInfo.PBP_SecPerClus=pBPB-》BPB_SecPerClus;

DeviceInfo.BPB_NumFATs=pBPB-》BPB_NumFATs;

DeviceInfo.BPB_RootEntCnt=SwapINT16(pBPB-》BPB_RootEntCnt);

DeviceInfo.BPB_TotSec16=SwapINT16(pBPB-》BPB_TotSec16);

DeviceInfo.BPB_FATSz16=SwapINT16(pBPB-》BPB_FATSz16);

DeviceInfo.BPB_TotSec32=SwapINT32(pBPB-》BPB_TotSec32);

SeviceInfo.FatStartSector=DeviceInfo.StartSector+1;

SeviceInfo.RootStartSector=DeviceInfo.StartSector+2*DeviceInfo.BPB_FATSz16+1;

DeviceInfo.FirstDataSector=DeviceInfo.FatStartSector+2*DeviceInfo.BPB_FATSz16+32;

/*以上为各个部分存储位置即每扇区字节数、每簇扇区数、FAT表起始扇区、根目标起始扇区、数据区起始扇区等。*/

6、系统的整个工作流程

通过单片机定时器0检测设备状态,如果发现从设备接入,则触发外部中断0。当从设备发现后,通过SL811HS进行设备枚举,设置设备地址、数据描述和配置,然后通过大规模存储协议访问从设备文件系统。发读或写命令,对从设备进行读写,最后反馈响应码。

7、总结

本文描述了SL811HS芯片和大规模存储协议的应用,介绍了基于8位单片机实现USB-HOST的整个过程。此系统已经过试验,能够完成对从设备的直接读写数据,查看从设备目标及从设备剩余存储空间等一系列操作,稳定性较强;可广泛地应用于数据采集系统、工控行业等领域,具有一定的实用价值。

责任编辑:gt


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

    关注

    5069

    文章

    19023

    浏览量

    303454
  • usb
    usb
    +关注

    关注

    60

    文章

    7901

    浏览量

    264025
  • 总线
    +关注

    关注

    10

    文章

    2869

    浏览量

    87995
收藏 人收藏

    评论

    相关推荐

    嵌入式工业以太网的应用研究

    以太网在工业现场中的应用与uClinux嵌入式系统是两个现在研究的热点领域,以太网与uClinux在工业控制领域有着非常好的应用前景。本文所完成的一些工作都将为这两部分的深入研究开发有很好借鉴的意义,对
    发表于 05-21 11:21 1485次阅读
    <b class='flag-5'>嵌入式</b>工业以太网的<b class='flag-5'>应用研究</b>

    基于嵌入式实时操作系统MQX的内核分析应用研究

    基于嵌入式实时操作系统MQX的内核分析应用研究
    发表于 08-18 15:29

    嵌入式系统中USB-HOST协议栈该如何设计?

    USB协议栈的基本知识包括哪些?嵌入式系统中USB-HOST协议栈该如何设计?
    发表于 04-27 07:10

    USB- HOST实时数据采集嵌入式模块实现

    提出利用SL811HS 和8 位单片机实现USB-Host 实时数据采集嵌入式模块。该系统的数据传输,遵守大规模存储协议和USB 1.1协议
    发表于 04-15 09:24 13次下载

    嵌入式usb主机系统的研究与设计

    本文主要讲述的是嵌入式usb主机系统的研究与设计。
    发表于 04-22 16:33 20次下载

    软件项目管理在嵌入式系统中的应用研究

    本文主要讲述的是软件项目管理在嵌入式系统中的应用研究
    发表于 04-22 17:06 21次下载

    USB- HOST 实时数据采集嵌入式模块实现

    提出利用SL811HS 和8 位单片机实现USB-Host 实时数据采集嵌入式模块。该系统的数据传输,遵守大规模存储协议和USB 1.1协议
    发表于 05-16 14:57 13次下载

    嵌入式系统USB接口的研究及设计

    本文针对嵌入式系统中USB 接口进行了研究,提出了MCU+USB嵌入式USB
    发表于 06-13 11:29 15次下载

    泰克为嵌入式设计师推出USB2.0总线分析解决方案

    泰克为嵌入式设计师推出USB2.0总线分析解决方案 泰克公司日前发布DPO4USB模块,此
    发表于 12-14 09:15 768次阅读

    基于USB-Host的大容量数据采集方案研究

    针对目前数据采集系统面临的不足,介绍了一种使用U盘作为存储介质的大容量数据存储方案。该方案使用C8051F020单片机作为主控制器,CH376则工作在 USB-Host 方式下通过USB
    发表于 08-29 14:05 103次下载
    基于<b class='flag-5'>USB-Host</b>的大容量数据采集<b class='flag-5'>方案</b><b class='flag-5'>研究</b>

    嵌入式USB MiniHost系统设计与实现

    设计并实现了一个嵌入式USB主机系统的硬件和软件,用于解决USB设备不能脱离PC主机的问题。并在设计的硬件和软件基础上利用嵌入式C语言编制了
    发表于 04-12 15:04 47次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>USB</b> MiniHost系统设计与<b class='flag-5'>实现</b>

    USB host嵌入式系统中应用的详细资料概述

    随着移动通信技术的飞速发展,人们对设备的移动性需求越来越高,希望移动设备能直接越过PC 与USB 外设通信。文中基于LM3S3749 着重介绍了USB host嵌入式系统中的应用,
    发表于 05-10 11:18 17次下载
    <b class='flag-5'>USB</b> <b class='flag-5'>host</b> 在<b class='flag-5'>嵌入式</b>系统中应用的详细资料概述

    采用单片机stc89c516rd+和ch375s芯片实现嵌入式usb-host设计

    基于usb的大容量数据采集系统的设计,主要是要实现嵌入式usb-host。要想设计出能直接读写u盘的嵌入式
    发表于 05-19 09:54 4531次阅读
    采用单片机stc89c516rd+和ch375s芯片<b class='flag-5'>实现</b><b class='flag-5'>嵌入式</b><b class='flag-5'>usb-host</b>设计

    探究USB-Host的大容量数据采集系统的设计

    CH375S,USB-Host,数据采集系统,Mass-Storage类,FAT16文件系统
    的头像 发表于 04-07 17:58 2082次阅读
    探究<b class='flag-5'>USB-Host</b>的大容量数据采集系统的设计

    DSP嵌入式识别系统应用研究

    电子发烧友网站提供《DSP嵌入式识别系统应用研究.pdf》资料免费下载
    发表于 10-12 10:23 0次下载
    DSP<b class='flag-5'>嵌入式</b>识别系统<b class='flag-5'>应用研究</b>