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

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

3天内不再提示

基于M8SS storage CBI协议在绣花机上实现高质量高速率的数据传输

电子设计 来源:单片机与嵌入式系统应用 作者:王子鉴;张莉君 2021-03-19 14:21 次阅读

引言

绣花机广泛用于纺织行业,基本原理为读取绣花花版文件到主控设备,进行固定算法的花版解释,控制绣花机机头进行绣花动作,目前广泛利用USB接口读取花版文件。USB协议对所有USB设备进行分类,同类型的设备拥有一些共同的行为特征和传输协议,在此基础之上USB协议又划分了子类设备,进一步区分相同类设备的属性,以利于设计主机与设备的数据传输。对于USB大容量存储设备(mass storage device)设计,普遍采用两种基本传输方式:CBI和BULKONLY。使用较多的是BULKONLY协议,主要应用在U盘存储设备;而CBI协议由于具有中断传输的特性,主要应用在USB硬盘及工业上普遍使用的USB软盘驱动器,目前,在绣花机的使用过程中也需要磁盘读写花版文件,这样的好处是保密性强、可随时更换,可以作为U盘的很好补充。

1 M8SS storage CBI协议介绍

在CBI协议的描述中,必须采用4种传输方式和通道进行主机和设备的数据交换,这4种方式称为端口,按顺序为:O,控制传输;1,块输入 (bulkin);2,块输出(bulk-out);3,中断传输。这与普通U盘设备采用2个传输端口有明显区别。控制端口0主要用来在主机和设备间传送 USB标准命令和对硬盘的控制命令集,批量输入端口1和批量输出端口2用来传输大量块数据,中断端口3用来返回命令的发送状态用于主机产生中断。

1.1 数据传输过程

在对设备进行任何操作前,主机都必须发送mass_storage_ufi协议中定义的相关UFI命令块(USB FloppyInterface Command)。从控制端口0传送到设备,命令块被分为无数据、数据进、数据出3种类型。主机将以指定类请求ADSC开始命令传输,接着在控制传输的数据阶段传输命令块。指定类请求命令包如表1所列。

基于M8SS storage CBI协议在绣花机上实现高质量高速率的数据传输

对于CBI设备来说,主机每次发送UFI命令块前都必须由指定类请求ADSC引导,否则设备不识别。以下是发送一组UFI命令响应的过程举例:

在主机命令发送得到接收正确响应ACK(确认接收)后,设备会从端口3自动返回2字节状态码,用于主机产生中断(中断不是必须),数据传输状态如下:

命令发送全过程完毕,当需要数据输入/输出时,设置主机发送IN/OUT PID请求,设备按照请求通过BULK-IN/OUT端口传输数据,每次发送的字节数根据设备描述符所定义的端口最大吞吐量。

1.2 CBI设备描述符及枚举过程

按照USB协议,所有USB设备接入主机后,主机进行设备枚举,识别此设备属于USB范畴的哪一类,以及该类型中的哪一子类;然后对此设备进行配置,直到该设备能进行正确读写。这些枚举信息都已固化在USB设备中,主机只进行提取操作。

CBI协议存储设备支持很多描述符,主要且必须支持下列USB描述符:

①设备描述符(device descriptor)

②配置描述符(configuration descriptor)

③接口描述符(interface descriptor) CBI存储设备至少应支持1个数据接口。

④端点描述符(endpoint descriptor) 除用作初始化和命令传输的控制端口Endpoint 0外,CBI存储设备还必须支持批量输入、批量输出、中断3种端点,配置、接口、端口描述符是在主机一次请求时接收的。

当某设备描述符被识别为mass storage device类CBI设备子类后,主机进行第2次枚举,对设备进行相关配置和初始化。具体枚举过程通过第1次枚举所配置的端口,发送相关请求命令,进行初始化的数据输入/输出。具体函数及功能如下:

2 USB 软驱主机程序设计

2.1 开发平台介绍

开发平台主要包括:

MCU S3C24IOA(绣花机主芯片

USB芯片 SL811HS

③开发语言 嵌入式C语言

④编译环境 CodeWarrior for ARM Developer SuiteVl.2

仿真器 Magic-ICE

⑥USB软驱类型 SONY MPF82E-U1磁盘驱动器

2.2.1 USB设备的枚举

USB软驱首先要进行设备枚举,主机通过控制端口0向设备发送DeviceRequest命令。DeviceRequest命令主要有 Get_Descriptor,Set_Address,Set_Config,Set_Interface等,而Get_Descriptor描述符又可分为Device_Descriptor、Configuration_Descriptor、Interface_Descrip-tor、 Endpoint_Descriptor,枚举阶段所有的请求都是基于setup ID。根据不同的请求命令,配置相应的协议栈。以下是配置接收描述符的部分参数,以设备描述符为例:

配置请求参数完成以后,利用USB数据传输函数usbXfer()来传输该请求。usbXfer()必须完全遵循USBl.1协议。该函数具体算法流程如图1所示。

2.2.2 大容量存储设备的枚举

此阶段任务的中心是对主机发送UFI命令的处理。ADSC请求是UFI命令的前导,通过控制端口0以setup数据包发送,接着仍通过端口0以数据包的形式发送UFI命令包。命令包均为12字节,发送前暂存在ufi[]数组中。以CBI_Read(unsigned long lba,unsigned charlen,unsigned char* pBuffer)函数为例叙述命令发送过程,其他枚举函数实现基本原理相同。CBI_Read()函数读取扇区数据到指定数组,源程序如下:

该程序段成功返回标志着所发指令执行正常,且最后读写USB软驱首扇区数据正确。

2.3 绣花机花版文件读取

实现读写磁盘首扇区数据功能,可以结合上层FAT文件系统读取磁盘中的花版文件。FAT文件系统中所有文件都作为链表存在,在文件系统的文件目录项中标明了文件的一些相关信息,如文件名、扩展名、文件属性、修改时间、起始簇号(簇是文件系统中的最小读写单位,一般为32字节),如表2所列。

由于文件是以簇链的形式存在,所以可以根据起始簇号设计程序来读取磁盘中该文件的所有簇数据,进而抓取所需花版文件。

结语

CBI协议和BULKONLY协议是当今USB大容量存储设备使用最多的传输方式。两种方式各有特点,本文只详细讲解了CBI传输应用到USB软驱上的实现方法和原理。这方面内容属于USB协议中很重要的子协议,可应用到USB通信设计中。开发人员可以借鉴CBI传输模式的诸多优点实施高质量高速率的数据传输。

责任编辑:gt

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

    关注

    52

    文章

    8150

    浏览量

    145960
  • 接口
    +关注

    关注

    33

    文章

    8493

    浏览量

    150815
  • usb
    usb
    +关注

    关注

    60

    文章

    7890

    浏览量

    263954
收藏 人收藏

    评论

    相关推荐

    MSP430实现以太网高速数据传输

    的可靠性保证吧)!?应该使用什么协议才能够实现可靠且速度高的数据传输呢!?或者,怎么样的方式才能实现高速
    发表于 11-07 16:46

    基于FPGA的高速LVDS数据传输

    高速LVDS数据传输方案和协议基于FPGA的高速LVDS数据传输本人在北京工作6年,从事FPGA外围接口设计,非常熟悉
    发表于 03-01 18:47

    请问labview如何实现高速数据传输

    和labview做下中转。1,NI的哪个板卡可以实现这个功能? 只要一个通道的PT100采集2,labview接受板卡的速度可以达到或超过1ms1次吧?3,labview如何高速的将数据传输给执行器?执行器支持485通讯和网口通
    发表于 06-16 09:09

    如何利用ARM和FPGA设计电脑绣花机控制器?

    方式。电脑绣花机是当代最先进的绣花机械,它能使传统的手工绣花得到高速度、高效率的实现,并且还能实现
    发表于 08-16 08:09

    高速工业绣花机人机界面的设计过程是怎么样的?

    高速工业绣花机是机电一体化结合较为完美、自动化程度较高的绣花专用设备,它能使传统的手工绣花得到高速度、高效率、高可靠性的
    发表于 11-11 07:20

    ARM绣花机控制系统有什么应用?

    随着全自动绣花机的不断发展,机械方面的改进对机器的性能改善已经没有太大的效果。因而,控制系统就成为了绣花机提高性能和降低成本的关键,也是各大绣花机厂商的竞争重点[1,2]。控制系统的硬件决定了整个
    发表于 03-11 06:21

    可以通过微网格设计实现高速数据传输吗?

    嗨,我们可以通过微网格设计实现高速数据传输吗?我正在使用Microlaze连接Aurora(3.125 Gbps)。数据正在转移,这在console和ILA上得到验证。但我怎样才能确保
    发表于 08-26 14:35

    WinCE多线程下绣花机运动控制的实现

    提出了一种基于Windows CE5.0 多线程机制的绣花机运动控制系统软件设计方案。结合硬件中断技术,运用线程同步方法,实现绣花机运动控制系统的强实时性技术要求,解决了绣花机
    发表于 08-13 10:11 24次下载

    基于FPDP的高速数据传输系统设计

    基于FPDP的高速数据传输系统设计 随着电子技术的高速发展,越来越多的信号处理系统,需要高速数据采集和大吞吐量的
    发表于 12-01 09:41 2141次阅读
    基于FPDP的<b class='flag-5'>高速</b><b class='flag-5'>数据传输</b>系统设计

    数据传输速率是什么意思

    数据传输速率是什么意思 数据传输速率是通过信道每秒可传输的数字信息量的量度。数据传输
    发表于 03-18 14:45 4986次阅读

    基于ARM的电脑绣花机监控系统的设计与开发

    电脑绣花机是当代最先进的绣花机械,随着人们对刺绣品质量的追求以及刺绣品需求量的增加,高性能的电脑绣花机越来越受到市场的推崇,用户对CAN(现场总线)、远程控制、海量USB存储、彩色LC
    发表于 08-30 16:31 11次下载
    基于ARM的电脑<b class='flag-5'>绣花机</b>监控系统的设计与开发

    基于UDP协议和FPGA的点到点数据传输方案

    基于提升数据传输速率,提高数据传输实时性的目的,提出了一种基于UDP协议的点到点数据传输方案,并采用现场可编程逻辑门整列(FPGA)和以太网
    发表于 06-01 09:58 13次下载

    如何实现MQTT协议数据传输

    如何实现MQTT协议数据传输? 随着物联网技术的不断发展,越来越多的设备和应用需要实现互联互通。而MQTT作为一种轻量级的发布/订阅消息传输
    的头像 发表于 11-15 17:23 1101次阅读

    网络数据传输速率的单位是什么

    网络数据传输速率的单位是 bps(bit per second) ,即比特每秒,也可以表示为b/s或bit/s。它表示的是每秒钟传输的二进制数的位数。比特(bit)是计算机中数据量的单
    的头像 发表于 10-12 10:20 896次阅读

    LORA模块的数据传输速率

    有所不同。以下是关于LoRa模块数据传输速率的一些关键点: 数据传输速率的可变性 : LoRa技术允许不同的
    的头像 发表于 10-31 17:03 561次阅读