当前位置:首页 > 智能硬件 > 智能硬件
[导读]提出利用SL811HS和8位单片机实现USB-Host实时数据采集嵌入式模块。该系统的数据传输,遵守大规模存储协议和USB 1.1协议规范,可作为嵌入式设备的数据输入输出模块。

    摘要:提出利用SL811HS和8位单片机实现USB-Host实时数据采集嵌入式模块。该系统的数据传输,遵守大规模存储协议和USB 1.1协议规范,可作为嵌入式设备的数据输入输出模块。它以文件的形式,与Slave端的USB移动存储器进行数据传输。

    关键词:SL811HS USB-HOST 大规模存储协议 USB1.1

引言

随着数据采集系统、工控行业和嵌入式用户对移动存储的需求越来越大,传统的通过软盘、串行口(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所示。

2 SL811HS芯片介绍

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

它具有以下功能:

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

②8位双向数据输出端口;

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

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

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

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

3 硬件电路设计

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

其中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的整个过程。此系统已经过试验,能够完成对从设备的直接读写数据,查看从设备目标及从设备剩余存储空间等一系列操作,稳定性较强;可广泛地应用于数据采集系统、工控行业等领域,具有一定的实用价值。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

摘 要:针对目前钢铁企业对能效要求的提高,企业需要建立一套能源管理系统。但是钢铁企业过程控制层控制设备繁杂,通信协议繁多,难以实现数据的集成和共享。为此,文中提出了一种基于工业网关的数据采集系统,该系统作为一个标准的数据...

关键字: 实时数据采集 能源管理系统 工业网关 仿真

关注、星标 嵌入式客栈 ,干货及时送达 [导读] 前文分析了Linux设备驱动的驱动模型,本文来聊聊Platform_driver/Platform_device这个类。做嵌入式Linux的驱动,这个也是绕不开的,所以来...

关键字: DEVICE Linux PLATFORM BSP

菜菜哥,请教个问题呗? 说说看,能否解决不敢保证哦 最近做的App业务中,有很多敏感操作需要用户输入手机验证码 这没问题,手机验证码主要是为了验证当前操作人的有效性,有什么问题呢? 如果有数的几个操作还可以,但是系统有很...

关键字: 手机 程序员 BSP DEVICE

[导读] 前文分析了Linux设备驱动的驱动模型,本文来聊聊Platform_driver/Platform_device这个类。做嵌入式Linux的驱动,这个也是绕不开的,所以来学习分析总结一下。 阅读本文,建议先读:...

关键字: DEVICE PLATFORM 嵌入式LINUX LINUX驱动

5G详细资费在11月1号推出,消息称,三家运营商按速度区分费用,月均最低128元。对于5G的想象很多,但距离真正成熟还需要一段时间。 一、别着急升级套餐 最低128元,这个水准相

关键字: 5G 华为 DEVICE 苹果

11月26日,由搜狐科技主办的“2019搜狐科技AI峰会”在北京举行。 峰会嘉宾——三星电子中国研究院院长张代君在会上针对AI芯片作了题为《Ubiquitous AI Powered b

关键字: AI DEVICE AI技术 三星电子

(文章来源:中科罗伯特机器人学院) 发那科 M-20iA 是一款小型智能机器人,具有可以简单方便地进行用户电缆处理的中空手腕机型和可以应对大型工件搬运的具有高容许转动惯量手腕的机型,可以

关键字: 机器人 电缆 DEVICE 集成

关注、星标公众号,不错过精彩内容 素材来源:网络 编辑整理:strongerHuang 对于许多物联网设备而言,拥有一个小型且具有弹性的文件系统至关重要。 在MCU上运行的文件系统不多,绝大部分人应该知道FatFS这个文...

关键字: FATFS LITTLE BOOT DEVICE

嵌入式编程中的复杂指针的使用 1.说明 2.函数指针与指针函数 3.const修饰的指针问题 4.函数指针直接跳转的问题 5.回调函数 6.总结 1.说明 在C语言编程中,指针是最容易出错的地方,尤其是在很多指针同时出现...

关键字: 嵌入式编程 DEVICE 回调函数 接口

据韩媒报道,新冠肺炎疫情已给韩国的显示设备行业以重创,而随着中国面板商纷纷推迟从韩引进设备的计划,韩国显示设备行业恐将再受重创。 根据韩国金融监管局(FSS)公开的信息显示,韩国主要的显示设备制造商们

关键字: DEVICE PRECISION
关闭
关闭