摘要:为了实现对Freescale MC9S12UF32芯片的USB2.0模块的开发,首先,阐述了MC9S12UF32单片机专门作为高速USB存储设备接口设计芯片的优势和特点;然后提出了海量存储设备的USB2.0接口设计方案,在软、硬件架构上实现访问MC9S12UF32芯片USB2.0接口,设计方案加速了USB2.0设备开发,促进了USB2.0设备接口的应用,具有较好的理论和应用价值。
1、绪论
USB已成为微机和众多电子设备的重要标准接口,USB1.1规范的推出已得到了广泛应用,但随着电子技术的飞速发展,USB1.1规范已不能满足电子消费产品的性能要求,特别在传输速度和存储容量方面。因而,很快推出USB2.0规范,快速催生了USB2.0接口的消费电子产品。国外推出了大量集成USB2.0接口的芯片,国内公司对拥有USB2.0接口芯片还在初步研发阶段。本文基于16位单片机MC9S12UF32,提出了一种USB2.0设备接口的设计与实现。
2、USB接口类MC9S12UF32芯片特性
MC9S12UF32是恩智浦(源飞思卡尔)公司的HC/S12系列中的16位单片机,它是一款低价位、高性能的单片机,片内资源丰富,FLASHEEPROM空间32KBytes,RAM空间3.5KBytes,QRAM队列1.5KBytes,集成高速USB2.0接口、集成队列控制器(IQUE)、SCI接口,通过一条专用内部总线,IQUE模块可以实现从存储接口到USB模块进行高速数据传输,最快达到60MB/S。
MC9S12UF32单片机是高速USB存储设备接口设计的首先,支持高速、全速USB传输[1]。构成该款芯片的主要模块为IQUE模块、USB2.0接口和存储控制器接口。CPU是控制与处理的核心,但真正的数据传输是通过中介IQUE完成,它与CPU是并行工作,互不干扰。
IQUE模块的组成:队列控制器(QUE)、队列控制器集成模块(QIM)和QRAM队列(1.5KB)。集成队列模块IQUE数据传输是以FIFO的方式写入或传出QRAM。
由USB物理层接口(UPHY)和USB设备控制器(UDC20)构成USB2.0模块,配合IP总线及USB全速和高速协议,实现数据传输。模块的结构框图如图1所示。
图1USB2.0模块图
USB设备控制器模块通过IP总线与S12内核进行交互。交互的通道为6个独立的端点。共有5个64字节的端点缓冲区,其中两个分配给物理端点1,另外三个分配给了物理端点2、3和6。
端点数据是通过IPFIFO总线保存于集成队列控制器模块,然后片内模块才能与USB2.0模块进行连续的数据通信。
综上所述,USB接口与存储器接口间的高速数据通道是由IQUE模块、USB2.0模块和存储设备接口构成的,其中IQUE模块起到了桥梁的作用。
3、USB2.0设备接口的设计
USB2.0设备接口设计主要由硬件设计和固件设计[2],USB2.0协议中的链路层功能是由硬件完成;USB2.0协议及设备子类协议是由固件来完成。基于硬件架构,增强型MCHS12UF32核的USB2.0接口设计应包括以下几个模块。
(1)USB传输处理模块。底层硬件送来的各种信号需要USB传输处理模块进行分析处理,Endpoint中接收到的主机命令/数据需要由该模块上传到主机命令解析模块,并返回命令处理结果。
(2)主机命令解析模块。分析处理USB传输处理模块送来的主机命令,并返回分析处理结。
(3)设备应用处理模块。外部应用系统接收到具体的操作命令执行,并返回外部器件相关状态。固件的功能可分为设备枚举、传输控制、命令解析、外部应用操作等几个过程,如图2所示。
图2USB2.0设备接口IP核固件的功能层次结构
3.1USB海量存储设备固件的设计
IP核固件主要元素为Bulk-Only传输协议和SCSI命令集[3]。
3.1.1固件流程
图3是大容量USB存储设备固件工作流程。工程流程中主要是4类中断处理,即Bulk-In端点中断、Bulk-Out端点中断和Command端点0的In中断及Out中断。Command端点是实现设备枚举过程中主机与设备间的交互,Bulk端点是实现枚举成功后主机与设备间的交互。
图3固件工程流程
3.1.2设备枚举
USB设备在接入USB电缆后需要一个枚举过程,为什么要枚举?枚举就是从设备读取各种描述符信息,这样主机就可以根据这些信息来加载合适的驱动程序,从而知道设备是什么样的设备,如何进行通信等,用户首先需要将枚举过程中所需要的各种描述符表设置好后存放于指定存储单元。枚举过程如图4所示。
图4枚举过程图
3.1.3Bulk-Only传输控制
USB设备枚举成功后,就可以通过Bulk端点进行数据传输了,Bulk-Only传输控制过程如下:
(1)主机通过Bulk-Out端点发送CBW命令包;
(2)设备接收拆分CBW包,解析SCSI命令;
(3)设备执行SCSI命令;
(4)设备通过Bulk-In端点,向主机返回命令状态包CSW;
(5)设备等待主机的下一个CBW命令包。
3.1.4SCSI命令解析
特定的海量存储设备可以过滤无意义的SCSI命令,当设备确认接收到是有效的SCSI命令后,它将根据命令类型和要求,做好数据的发送或接收的准备。
3.2USB海量存储设备接收和发送过程设计
传输由OUT、IN、SETUP等事务构成,传输分为同步传输、控制传输、中断传输和批量传输,批量转输和中断传输结构相同,同步传输结构简单,而控制传输结构复杂。
3.2.1USB海量存储设备的Bulk_Only传输类
批量传输是USB海量存储应用的一种[4],另外有巨量中断传输方式,还有其他的传输方式等。传输中存在三种类型的命令块数据包:第一种主机发送数据到设备,第二种是不带数据传输的命令块数据包,第三种是主机要从设备接收数据的命令。
(1)端点0配置。USB设备接入主机时,主机通过默认地址0与默认端口0进行通信。在此期间,主机发出相关描述符请求,并得获取所需的设备描述符,从而了解设备的情况,再通过SetAddress指令设置一个唯一的设备地址,然后,主机就通过该地址与设备通信,不再使用默认地址0,端点0的配置过程也是类似的。
(2)其他端点数据通信。在配置阶段,主机获取到设备端点的使用情况后,现在可以通过这些端点进行特定数据通信。海量存储设备有BULKONLY和CBI两种传输方式,使用BulkOnly较为常见,主要是使用特定的Bulk端点,由于Bulk端点的没有特定的数据格式,所以需要使用某种命令集来约定其传输格式,一般配备使用UFI或SCSI命令集。
3.2.2Bulk-Only传输协议
当设备插入到USB后,完成枚举过程,主机便可识别出为海量存储设备类型,随后USB接口与设备间通过Bulk-In和Bulk-Out进行数据传输。可传输的数据类型有:CBW、CSW和普通数据[5]。CBW是符合SCSI传输命令集格式的一种命包,由主机发送给设备。当USB设备解析出CBW包中的SCSI命令并执行后,还需要向主机返回命令执行状态包CSW,最后,主机根据命令状态包决定是否继续发送下一个CBW或数据。
3.3USB2.0海量存储设备接口的软件设计
3.3.1MCU方软件
USB模块化编程,主要包括初始化、主函数和中断处理函数三部分,主要是实现主机获取设备描述符,进行端点数据传输[6]。初始化函数主要包括UF32单片机和外围电路接口初始化;中断处理函数主要是进行各种中断的处理;主函数主要是完成设备特定要求的流程处理;
利用MCHS12UF32核中的USB端口5进行批量输入,端口4进行批量输出,函数框架如下:
函数框架
主函数根据MCHS12UF32核的USB设备上电或复位后,首先对所有内部变量初始化,现调用BulkOnly_Init()函数,打开中断检测控制端口0是否收到SETUP包,如果收到,则调用函数IsrProcess()。后续一直往复这个过程,直到枚举成功,即找到海量存储设备(MassStorageDevice),并安装好驱动程序,之后就是主机发CBW包,执行Bulk_Only传输协议,通过CBWProcessor()函数不断检测主机是否发来CBW包,并做相应处理。
3.3.2PC方软件
PC方软件包括USB的驱动程序和主机应用程序两部分。USB驱程序是一种标准的WDM驱动程序,支持即插即用,提供控制传输、中断传输和批传输等标准接口函数。主机应用程序是实现与操作系统的交互,操作系统监测到新设备时,自动调用相应的设备驱动程序。为了实现操作的方便性和可视性,利用VC++进行了UI界面设计,通过CreateFile获得USB句柄,用DeviceIoControl向设备驱动程序发送请求,完成基于MC9S12UF32单片机的USB2.0接口的批量数据传输。上位机的主要程序模块如下:
程序模块
(1)子函数名:IQUE_Module_Init(void),功能:IQUE模块初始化_使能IQUE模块;
(2)子函数名:USB_ModuleInit(void),功能:USB模块初始化-使能USB模块;
(3)子函数名:USB_InitBulkOnlyTransport(void),功能:USB批量传输初始化-配置1x64字节BULKin和1x64字节BULKout;
//数据接收与发送子函数
(1)子函数名:Data_Tx(muint16*pBuffer,muint8Len),功能:将长度为Len的数据移到pBuffer缓冲区;
(2)子函数名:Data_Rx(muint16*pBuffer),功能:将PC方发来的数据移到pBuffe缓冲区;
(3)子函数名:USB_Move2LocalBuffer(*FR_ptr,*TO_ptr,Len),功能:从指针FR_ptr所指向的位置移动长度为len数据到TO_ptr指针所指;
(4)子函数名:USB_Move2QUE3(FR_ptr,Len),功能:从指针FR_pt处移动长度为len数据到QUE1FIFO缓冲区;
(5)子函数名:SCSIList28(),功能:Read指令集处理PC方向设备方索取数据;
(6)子函数名:SCSIList2A(),功能:Write指令集处理,PC方向设备方发数据。
4、结语
本文对基于MC9S12UF32MCU的USB2.0接口的一般开发方法和技术特点、设备端软件和主机端软件的设计进行了讨论,并给出了海量存储设备的USB2.0接口设计方案和软件设计的过程和实现方式,重点对设计枚举过程和Bulk_Only传输进行了较详细的阐述和研究,希望能对UF32芯片的设计和开发者起到一定的借鉴和抛砖引玉的作用。
参考文献:
[1]邵贝贝.单片机嵌入式应用的在线开发方法[M].清华大学出版社,2004.
[2]闰波,田茂,李广军.一种基于层次模型的USB2.0接口芯片核固件的设计与实现[J].半导体技术,29(3).
[3]张宇,程秀玲.基于OpenVPX的高速集成处理器USB接口设计[J].无线互联科技,2020(04).
[4]陈玉辉,钟洪声,李廷军.基于CY7C68013a的USB2.0接口设计[J].大众科技,2010(10).
[5]孙瑜,张悦,陈劲操.基于USB接口的多路温度采集系统设计[J].电力与能源,2017(02).
[6]陈旭辉,杨红云.USB接口的虚拟多串口通信设备设计[J].单片机与嵌入式系统应用,2020(04).
徐建林,聂章龙.基于MC9S12UF32的USB接口设计[J].科技风,2021(01):91-93+96.
分享:
由于日益增长的环境问题和全球石油危机,太阳能已成为一种有吸引力的替代能源[1],光伏组件的需求也在快速增长,为保证产能及组件品质的可靠性,高精度、高速光伏电池片的全自动串焊机已成为光伏企业的首选。而传统机械夹具定位精度低、速度慢、自动化程度低[2],以及存在许多其他不足。为了实现光伏电池片的自动化生产,有必要对电池片进行更精确位置检测。
2023-09-05以灯杆为构建基础,通过现代化的智能管理技术,使灯杆变得智能化,此时灯杆即被称为智慧灯杆。本文设计一种集供电、网络和控制于一体的多功能城市智慧灯杆,以达到自由调节该城市智慧灯杆的高度的目的,适用于不同环境与场地使用,避免因地面高度不一造成该城市智慧灯杆的路灯本体照明亮度不一的问题。
2023-09-01电子信息工程是信息时代发展的产物,其核心包括电子、计算机、信息等技术,打造智能化电子模块,由此来体现电子信息技术的应用功能优势。计算机电子新技术发展中,计算机属于源头,对电子信息技术工程来讲至关重要。科学技术发展基础上,对计算机电子信息技术工程的管理与应用提出高标准,基于此,必须加大计算机电子信息技术工程研究力度。
2022-04-26为提高PNS机房管理系统运行效率,对现有软硬件环境进行改进是十分必要的。本文对现有机房环境进行分析,明确了存在的局域网带宽不足、组网方式不合理、备份机制不合理、备份空间占用过大的问题,并提出了一个通过网络设备更新、组网方式调整以及管理软件升级来解决问题的具体措施,大大提升了机房管理水平。
2022-03-12对于公路路面来讲,裂缝是需要重视的病害之一。目前,我国对路面裂缝检测需要专门的路面管理部门定期进行安全巡视和检查,然后进行养护与整修。但是,人工检测存在效率低、精度低、费时、费力等缺点,此方法已经不再适用于如今的路面养护。随着数字图像处理技术的不断发展,使其技术在道路养护领域中得到广泛应用。
2021-10-08为提高考试的管理效率,有效识别参加考试的考生身份数据采集,各大型考试均有各自的编排系统,缩短了各个考试单位的工作流程。但由于很多考试都在高校进行各类考试,都采用考务工作人员二次人工现场排考,并通过监考教师人工识别学生身份,不能完全避免替考、作弊等异常行为的发生,减少考试过程中带来不必要的问题。
2021-10-08本文说明了计算机组装与维护实验室承担的实验项目,并从计算机组件展示功能区、维修工具管理功能区、计算机拆装功能区、计算机硬件维护功能区、计算机软件维护功能区入手,对计算机组装与维护实验室功能区的划分进行阐述,同时提出了实验室的优化建设及管理路径,旨在促进计算机组装与维护实验室建设及管理工作的升级。
2021-07-29随着科学技术的不断发展,计算机语言的使用也已较为普遍,而这其中C语言编程则为科学技术的发展做出了巨大的贡献。通过对C语言这一编程语言进行运用可以有效地提高人们的工作效率,并为人们的工作生活带来便利。本文则将对计算机C语言编辑程序的意义以及学生C语言编辑程序的学习现状进行一定的分析。
2021-04-19大数据虽具有经济价值,但并不是所有数据都能够作为信息发挥其经济价值,在浩瀚如烟的数据中,如何高效精准地对数据进行甄别、统计以及转化为有序的信息是计算机信息处理技术的核心内容。除此,计算机信息处理技术还包括信息系统技术与检索技术。在信息时代的今天,信息的处理、有序储存以及有效地利用不仅是市场发展的基础。
2021-03-22PLC能够有效改善控制开关和通信技术等方面的问题,能够通过不断的发展创新,使PLC技术在机电一体化生产过程中广泛的应用。在将PLC技术除外后,同样的机电一体化生产系统和生产技术也被各个企业应用到目前的生产中,如此不仅有效地提高了企业的生产效率,而且也提高了生产质量。
2021-02-08人气:4096
人气:2114
人气:1377
人气:930
人气:637
我要评论
期刊名称:单片机与嵌入式系统应用
期刊人气:1284
主管单位:工业和信息化部
主办单位:北京航空航天大学
出版地方:北京
专业分类:科技
国际刊号:1009-623X
国内刊号:11-4530/V
邮发代号:2-765
创刊时间:2001年
发行周期:月刊
期刊开本:大16开
见刊时间:10-12个月
400-069-1609
您的论文已提交,我们会尽快联系您,请耐心等待!
你的密码已发送到您的邮箱,请查看!