《基于-嵌入式系统U盘开发的设计》由会员分享,可在线阅读,更多相关《基于-嵌入式系统U盘开发的设计(19页珍藏版)》请在金锄头文库上搜索。
1、 某文理学院芙蓉学院课程设计报告课程名称:嵌入式系统课程设计 专业班级:通信工程1301班 学生某:王海波指导教师: 邵湘怡 完成时间:2016年 6月 22日 报告成绩:评阅意见: 评阅教师 日期 某文理学院制目录基于嵌入式系统u盘开发的设计1一、设计题目1二、设计内容及要求12.1设计内容12.2设计要求1三、设计作用与目的2四、系统设计方案24.1系统总体设计24.2简要阐述系统工作原理3五、系统硬件设计35.1硬件电路35.2基本程序结构45.2.1.USB 设备端的固件分以下几个层次:45.2.2.在调试的时候,从现象上来看,分成以下几个阶段性的步骤55.2.3.检查USB 器件工作
2、与否65.2.4.提供描述符65.3硬件设计6六、系统软件设计76.1USB协议76.2 BULK_ONLY和UFI协议86.3 FAT32116.4软件系统模块12七、仿真调试分析14八、嵌入式系统学习心得14九、参考文献15 / 基于嵌入式系统u盘开发的设计一、设计题目基于嵌入式系统u盘开发的设计二、设计内容及要求2.1设计内容随着USB技术和闪存技术的飞速发展,移动存储设备的速度和容量日新月异,但在工业控制的上位机和下位机之间,数据传输依然采用传统的串并口技术,特别对一些前端的便携式采集系统,需要采集后临时存储,再拿回来传给作为上位机的PC机进行数据处理,给人们带来很多不变,为此,本文提
3、出了一种方法-利用U盘的便捷特性开发一种基于嵌入式的USB读写器,方便地将采集数据以文件方式写入U盘,PC机不需要任何特殊驱动便可以完成对数据的处理回放。利用本方法可以彻底解决下位机与PC机之间的数据传输难的问题。2.2设计要求据U盘结构特点,设计了一种基于嵌入式系统U盘的系统结构,可以将U盘集成到无线数据卡上,或者手机上,以实现数据存储的功能。在进行USB 开发过程中,比较难的是对设备端的程序(称为固件,Firmware )进行调试。由于USB 协议有严格的时间要求,这就使得程序必须在有效时间内对某些请求或状态进行处理,否则,USB 将无法正常工作。因此,在调试过程中,较多借助LED1,LE
4、D2显示输出的一些信息来辅助调试,定位问题所在。比如,在某个函数中加入LED1,LED2显示语句,程序运行时看有否相应的LED1,LED2显示输出,借此来判断此函数是否得到了执行。调试工作基本分二步进行:首先对外部设备(单片机部分)借助PC 调试软件(从网上下载Bus Hound)将设备端的USB 协议(主要有描述符请求、端口配置、地址设置以及基本数据交换)调通。然后,用调试好的USB 设备接口来嵌入文件系统功能。三、设计作用与目的根据U 盘结构特点,设计了一种基于嵌入式系统U 盘的系统结构,可以将U 盘集成到无线数据卡上,或者手机上,以实现数据存储的功能四、系统设计方案4.1系统总体设计图1
5、 USB读写器结构图4.2简要阐述系统工作原理SB读写器结构框图如图1所示,主要由MSP430F149和SL811HS构成,MSP430支持串口输入和14位的并口输入,P2.7用作中断唤醒位,P2.6用作标准位区分数据和命令,通过P4口向SL811发送控制信号,P6用作普通的双向总线接口与SL811进行数据交换,P1.1支持中断唤醒接收SL811的中断请求。五、系统硬件设计5.1硬件电路下图分别为PDIUSBD12的引脚定义,其中,下列几个方面在制作电路板时应该注意。图2PDIUSBD12引脚图a)GND 接地,VDD 接正(3.3V 或5V ),如果芯片工作在3.3V ,则Vout3.3 与
6、VDD 都接3.3V ;如果芯片工作在5V ,则这时Vout3.3 会输出3.3V 的电压,用于提供给D 作参考电压,因为此参考电压必须为3.3V 。对于U 盘来说,由于USB 接供的是5V 电压,因此应该按后一种接法接。即GND 接USB 接口中的GND ,VDD 接USB 接口中的VDD ,D D分别接USB 接口中的对应位。b)XTAL1 和XTAL2 按传统接法。c)PDIUSBD12与MCU AT-89C55WD的连接方法见下表表1 PDIUSBD12与MCU AT-89C55WD的连接方法PDIUSBD12引脚MCU AT-89C55WD引脚DATA DATAP0.0P0.7(AD
7、0AD7)ALEALE/PROGCS_NP1.6RESET_NP1.7INT_NP3.2(INT0)SUSPENDP3.3WR_NP3.6(WR)RD_NP3.7(RD)A0接GNDd)DMARQ DMACK_N EOT_N GL_N CLKOUT引脚悬空,可作为扩充功能使用。e)MCU AT-89C55WD P1.2和P1.3接2个低电平有效显示灯LED1和LED2。5.2基本程序结构5.2.1.USB 设备端的固件分以下几个层次:表2固件层次固件模块功能Main.c进行各种初始化操作、寄存器设置、中断设置intr.c中断服务程序,负责将不同类型的中断转向不同的地方usb_op.cD12硬件
8、抽象层,所有的上层模块都必须通过此模块与USB芯片打交道usb_prtcl.c设备枚举需要的设备描述符,配置描述符,接口描述符,端口描述符都由此模块来执行提供endpoint2_bulk_only.C所有mass Storage 协议CBW,CSW,DATA的处理及FLASH的读写都由此模块来处理5.2.2.在调试的时候,从现象上来看,分成以下几个阶段性的步骤1、USB 芯片正常工作,可以实现软连接,此时PC 机上会出现“未知设备类型”的USB 设备;2、向主机提供普通USB 设备提供描述符,提供正确的VID 和PID 后,PC 能够识别设备,但要求提供设备的驱动程序;3、安装驱动程序后,使用
9、周立功单片机公司提供的UsbDebug.exe简单调试端点1和2,确保其均可传输数据,验证硬件及固件的正确性;4、按Mass Storage不得BulkOnly 模式提供描述符,PC 机上设备类型变成Mass Storage Device;5、响应了BulkOnly 的Inquiry 命令,可以出现盘符了,但尚无法访问磁盘;6、提供了其他所有的UFI命令(SCSI 子集),开始读取磁盘0 扇区(BPB 区)的内容按照FAT12 的格式7、在AT-89C55WD EEPROM虚拟一X软盘,可以正确读取信息,可以访问盘符,列目录为空;8、,软盘中放一个可执行的文件,可以正常运行这个可执行文件;8、
10、创建文件,向设备发出Write 命令,等等。下面从具体实际操作方面来描述调试各阶段的步骤5.2.3.检查USB 器件工作与否确定USB 芯片是否已经正常工作,是所有调试的基础,得到电路板之后,这是一个首先要解决的问题。判断USB 芯片是否已经工作,可以使用SoftConnect ,则在主程序中进行软连接后,如果PC 机上出现未知设备,则说明USB 进行软连接正常,也说明芯片已经工作了。另外就是使用Bus Hound ,观察USB 总线上的数据,从而判断主机与设备之间的通信已经进行到哪一步了。在主程序中,对USB 初始化过程为: 初始化MCU 的各种端口; 进行中断初始化,设置中断服务程序入口地
11、址,将MCU 的中断方式设置为低电平触发,因为D12 只要进入中断后INT_N 就一直为低。 断开SoftConnect ,延时1 秒后再次连接 进入主程序循环,等待中断的到来 由中断服务程序处理所有与USB有关的操作。5.2.4.提供描述符USB 设备的调试过程其实就是根据主机的请求,不断地向主机提供各种信息的过程。因此,了解主机按照什么样的顺序向设备发出请求,即Windows 对USB 设备的枚举顺序是非常有必要的:GetDeviceDescriptor 。主机主要对Length 域感兴趣,发送内容一定要正确,特别是第 2 字节type 一定为0x01 ,即Device ;否则,主机将不响
12、应,或 这时由于主机对Device 的描述符将有多长实际上都不知道,所以这个步骤只是试探性的,目的是得到真正长度,第三步中才正而巴经地读取DeviceDescriptor 。5.3硬件设计系统采用TI公司的MSP430F149作为MCU,Cypress公司的SL811HS作为USB设备控制器,充分发挥各自优势满足低功耗要求。MSP430TI公司的 MSP430系列单片机是一种超低功耗的混合信号控制器,针对不同的应用而由各种不同的模块组成,这些微控制器可用电池工作,且使用的时间很长,MSP430单片机具有16位RISC结构,CPU中的16个寄存器和常数发生器使其能达到最高的代码效率,灵活的时钟源
13、可以使器件的功率消耗最低,数字控制的振荡器(DCO)可使器件从低功耗模式迅速唤醒,在短于6s的时间内激活到活跃的工作方式,非常的内/外设和I/O端口资源,端口P1和P2支持中断唤醒。SL811HSCypress公司的SL811HS是一款超低功耗的USB主/从设备控制器,主设备或从设备模式由软件控制,USB主/从设备控制器支持全高速和低速数据传输,内部256字节的SRAM缓存,访问时地址自动加1,可大大缩短读写指令周期,具有标准的8位双向微处理器总线接口,其中从设备模式下支持DMA。六、系统软件设计为了使上位PC机能够直接读取该读写器写入U盘的数据,数据存储按照FAT32文件管理方式存储,其中涉
14、及USB和UFI协议以及FAT32文件存储格式。6.1USB协议USB(通用串行总线)用于将USB接口的外围设备(device)连接到主机(host),实现二者之间数据传输的外部总线结构,是一种快速、灵活的总线接口,USB的传输类型有控制(control)、批量(bulk)、中断(interrupt)和同步(synchronous)传输4种,它最大的特点是易于使用,即插即用,主要是用在中速和低速的外设。控制数据用于在USB接入总线时对其进行配置,其他的驱动软件可以根据具体的应用来选择使用控制传输,这种数据传输不会丢失数据。典型的批量数据包括象使用打印机或扫描仪时所出现的大数据量的数据,这种批量
15、数据是连续的,通过在硬件中实现差错检测功能,并且有选择地进行一定的应进重试操作,可以在硬件层次上保证数据的可靠交换。由设备自发产生的数据传输是中断数据传输,这类数据传输可以由USB设备在任意时刻发起,而且USB总线以不低于设备说明的速率进行传输。同步数据在产生、传送和处理过程中是连续的和实时的,在稳定的同步数据发送和接收速率中包含了相应的时钟信息,为了保持定时关系,同步数据必须按照接收的速率进行传输。6.2 BULK_ONLY和UFI协议USB设备分为5大类,即显示器、通信设备、音频设备、人机输入和海量存储。通常所用的U盘、移动硬盘均属于海量存储类。海量存储类的规X中包括4个独立的子规X,即CBI传输、Bulk-Only传输、ATA命令块、UFI命令规X。前两个协议定义了数据/命令/状态在USB总线上的传输方法,Bulk-Only传输协议仅仅使用Bulk端点传送数据/命令/状态,CBI传输协议则使用Control/bulk/