USBHost总线解决设计方案文档格式.docx

上传人:b****8 文档编号:22025670 上传时间:2023-02-02 格式:DOCX 页数:22 大小:205.90KB
下载 相关 举报
USBHost总线解决设计方案文档格式.docx_第1页
第1页 / 共22页
USBHost总线解决设计方案文档格式.docx_第2页
第2页 / 共22页
USBHost总线解决设计方案文档格式.docx_第3页
第3页 / 共22页
USBHost总线解决设计方案文档格式.docx_第4页
第4页 / 共22页
USBHost总线解决设计方案文档格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

USBHost总线解决设计方案文档格式.docx

《USBHost总线解决设计方案文档格式.docx》由会员分享,可在线阅读,更多相关《USBHost总线解决设计方案文档格式.docx(22页珍藏版)》请在冰豆网上搜索。

USBHost总线解决设计方案文档格式.docx

4.2管脚定义

ARM读写U盘/移动硬盘模块——USBHost总线解决方案模块提供了与用户相关的三个接插接口,分别J1、J6和USB-B1。

(J7是为接JTAG仿真用,用户可以不用关心。

)实物图如图1和图2所示,分别说明如下。

图1ARM读写U盘/移动硬盘模块——USBHost总线解决方案实物图

图2转接王1型实物图

J1—与用户系统总线接口

用于通过访问双口RAM实现与用户系统交互的接口,如图3所示。

图3MasterJ1接口示意图

该接口5个管脚定义如表1所示。

管脚号

描述

1

INTR

13

AR11

25

DR4

2

BUSYR

14

AR10

26

DR5

3

AR1

15

AR13

27

DR2

4

AR0

16

AR12

28

DR3

5

AR3

17

AR15

29

DR0

6

AR2

18

AR14

30

DR1

7

AR5

19

SEMR

31

GND

8

AR4

20

CER

32

VCC+5V

9

AR7

21

RDR

33

10

AR6

22

WRR

34

11

AR9

23

DR6

12

AR8

24

DR7

表1MasterJ1接口定义

上表中,有关管脚定义如下:

1.AR0-AR15:

地址总线;

2.DR0-DR7:

数据总线;

3.INTR、BUSYR、SEMR、CER、RDR、WRR:

系统控制线;

●INTR为双端口RAM向用户MCU提供的外部中断;

●BUSYR用于双端口RAM忙指示(目前未使用);

●SEMR用于信号量同步,需要上拉到高电平;

●CER与SEMR用于实现片选;

●RDR与WRR分别用于读写操作。

4.31、32管脚未使用;

5.33与34分别为GND和VCC-5V。

有关连接方式见参考电路图[EvalSch.pdf]。

在本系统的实现中,目前使用到的管脚是:

INTR、CER、SEMR、RDR和WRR。

BUSYR目前未使用,可以不接。

特别地,建议用户将INTR连接到用户系统MCU的外部中断管脚,并使用外部中断。

注意,使用中需要将SEMR拉高(始终拉高即可)以确保读取操作正常。

J6-2.00mm间距的USB接口

J6的接口定义与USB-B1是完全相同的,设置J6只是针对用户无法使用板上USB母插座时,将USB线连接到用户板上,由用户在自己的板上决定USB母插座的位置(或者使用连接直接连接到固定在面板上的USB母插座上)。

USB-B1-标准USB接口

USB-B1为标准USB接口,用户焊接A类USB母插座。

用户可以根据需要(用户产品的外壳定义等)决定是否使用该插座。

如果不使用该插座可以将USB-B1悬空,通过J6将USB接口连接到用户板上。

4.3接口使用

ARM读写U盘/移动硬盘模块——USBHost总线解决方案通过双口端口RAM,直接通过总线与用户的单片机系统相连。

因此,就用户单片机系统而言,ARM读写U盘/移动硬盘模块——USBHost总线解决方案表现为一个外置的RAM,而该RAM中的部分区域不能使用、部分区域被用作协议命令和数据的交互,剩余的部分可以由用户自行控制使用。

有关双端口RAM中区域的划分如图所示:

其基地址为0x40000000.

图4ARM读写U盘/移动硬盘模块——USBHost总线解决方案上双口RAM内存区域分配软件开发

在双端口RAM中,区域分配如下:

●0x0000-0x0007共8字节用于存放系统命令/响应;

●0x0008-0xFFF7共65520字节用于存放数据部分;

●0xFFF8-0xFFFD共6字节保留;

●0xFFFE-0xFFFF区域的2个字节被用作系统协议交互指示,用户不可用于数据存放。

用户系统与ARM读写U盘/移动硬盘模块——USBHost总线解决方案系统的协议交互分为2种:

命令和响应。

命令由用户系统发往ARM读写U盘/移动硬盘模块——USBHost总线解决方案系统,而响应为相反方向,由ARM读写U盘/移动硬盘模块——USBHost总线解决方案发往用户系统。

命令和响应都有可能有数据部分(也可以没有数据部分,见《HostModule系统协议v2.0》)。

命令的数据部分存放于CommandData中。

5.工作指示灯说明

ARM读写U盘/移动硬盘模块——USBHost总线解决方案模块提供了6个LED:

D1—D6,来指示系统状态。

其中D6为电源指示,系统通电后,D6即点亮。

D5为系统调试用。

D1—D4联合指示系统状态。

目前只使用了D1与D2。

D3与D4尚未定义

●当系统加电时,首先是D6指示灯点亮,表明系统已经加上电了,紧跟着D1与D2灯同时被点亮,这时系统正在进行自检和初始化,完成后,D1与D2同时关闭。

该自检过程很快,应当在300ms以内完成,如果D1与D2同时点亮时间超过1s即说明Master板出现故障。

●当系统正常启动完成之后,再插上USB磁盘,如果磁盘被成功识别,则D1灯被点亮,并且保持点亮。

直到把USB磁盘拔出才关闭。

如果盘不能被识别,则D1灯不停的闪烁。

●当串口有命令成功发给ARM读写U盘/移动硬盘模块——USBHost总线解决方案模块时(ARM读写U盘/移动硬盘模块——USBHost总线解决方案成功接收并识别出命令),D2将被点亮,然后ARM读写U盘/移动硬盘模块——USBHost总线解决方案执行该命令,命令执行完成,发回响应后,D2关闭。

由于系统对不同的命令执行时间不同,D2点亮的时间长短也不定。

●系统正常启动后(上述自检完成后),插入USB磁盘,当系统检测到USB磁盘中存在合法的升级文件时,系统将不会点亮D1,而是点亮D2,并开始升级,待升级完成后,(如何升级见《Master使用指南》)关闭D2。

6.软件开发

6.1概述

ARM读写U盘/移动硬盘模块——USBHost总线解决方案系统是一个完整的单片机系统,该系统通过双端口RAM实现与用户单片机系统的命令和数据通信。

如下图所示:

ARM读写U盘/移动硬盘模块——USBHost总线解决方案系统

用户单片机体系统

双端口RAM

Data

Command

USB总线

传感器

图5ARM读写U盘/移动硬盘模块——USBHost总线解决方案与用户系统集成示意

ARM读写U盘/移动硬盘模块——USBHost总线解决方案系统工作于命令/响应方式下(在协议中响应也被称为命令),由用户系统发出命令,ARM读写U盘/移动硬盘模块——USBHost总线解决方案系统在根据该命令进行相应处理后,向用户系统返回相关的响应,该命令即完成。

一个命令必须在前一命令完成并返回响应后才能再发送给ARM读写U盘/移动硬盘模块——USBHost总线解决方案系统。

这一过程根据需要重复进行,以此实现整体系统的工作。

有关协议命令的定义参见《HostModule系统协议v2.0》。

集成后的系统工作方式如下:

●用户系统将命令写入双端口RAM的Command区域。

●如果有数据则将数据写入DataBuf区域。

●向ARM读写U盘/移动硬盘模块——USBHost总线解决方案端发送命令消息。

●ARM读写U盘/移动硬盘模块——USBHost总线解决方案收到命令消息后,即处理Command区域的命令。

●ARM读写U盘/移动硬盘模块——USBHost总线解决方案完成命令后,将响应写入Response域。

●向用户系统发送响应消息。

至此,一次命令执行完毕。

下面的实现就是基于上述过程来说明的。

系统命令/响应消息用于在用户系统或ARM读写U盘/移动硬盘模块——USBHost总线解决方案系统将要发出的命令或响应及相应数据准备好后,通过对方(Master或用户系统)命令或响应已经准备完毕,可以开始执行的消息。

该消息通过向双端口RAM的0xFFFE或0xFFFF地址写数据来完成。

该消息通过中断方式来实现,即:

对用户系统而言,当向0xFFFE写入数据时,即为通知ARM读写U盘/移动硬盘模块——USBHost总线解决方案有命令待执行(ARM读写U盘/移动硬盘模块——USBHost总线解决方案系统会产生一个中断)。

当ARM读写U盘/移动硬盘模块——USBHost总线解决方案系统完成命令后,准备好响应,然后会在0xFFFF处写一个字节,这时,会导致INTR拉低,由此产生一个外部中断,用户系统即可通过读取0xFFFF字节以清除该中断,并进一步读出响应,进行响应处理。

目前系统定义:

向0xFFFE写入和从0xFFFF读出的值都是0x02。

6.2功能实现

6.2.1数据结构

协议命令和响应的结构如下:

typedef__packedstruct

{

UINT8TypeCode;

/*类型码*/

UINT8CommandCode;

/*命令码*/

UINT8Data[6];

/*数据部分*/

}BM_Command;

说明:

1.结构体之间是相互连接紧密的,如上面的Data[6]是说明下面的数据部分,比如设置磁盘驱动格式化里面的整个的数据部分。

2.TypeCode是说明该信息是命令还是响应。

3.CommandCode是说明下面的结构体是中是执行什么命令码,比如读/写等。

UINT8Drive;

/*磁盘驱动器*/

UINT8Reserved[5];

/*保留*/

}BM_CmdSetDefaultDrive;

/*设置默认的磁盘驱动器*/

1.这是接上面的结构体而来,Drive是说明是磁盘驱动器,

2.Reserved[5]说明执行的命令是保留。

下面的各个结构体也是依次类推而来。

}BM_CmdFormatDrive;

/*格式化磁盘*/

}BM_CmdDriveSpaceInfo;

/*磁盘的剩余空间*/

}BM_CmdGetCurrentDir;

/*获取当前目录*/

UINT8Option;

/*参数选项,其选择为下面的宏定义*/

}BM_CmdOpenFile;

/*打开文件*/

#defineNORMAL_OPEN0x00/*以普通方式打开*/

#defineCREATE0x01/*以创建文件方式打开*/

#defineCREATE_TRUNCATE0x02/*以覆盖方式打开*/

UINT8Index;

/*指向文件的指针*/

UINT16DataLen;

/*数据的长度*/

UINT8Reserved[3];

}BM_CmdReadFile;

/*读文件*/

}BM_CmdWriteFile;

/*写文件*/

/*文件指针*/

/*文件从哪开始*/

UINT32Position;

/*指针移动偏移量*/

}BM_CmdSetFilePointer;

}BM_CmdCloseFile;

/*关闭文件*/

/*文件指针*/

/*指针移动偏移量*/

UINT8Reserved[1];

}BM_CmdTruncate;

UINT8Attributes;

/*文件的属性*/

}BM_CmdSetAttributes;

/*设置属性*/

UINT8Baudrate;

}BM_CmdSetBaudrate;

/*设置波特率*/

UINT8CRCEnable;

/*1是打开或2为关闭默认值为0*/

}BM_CmdSetCRC;

/*打开或关闭CRC校验*/

响应结构为:

UINT8Result;

/*返回*/

UINT8ErrCode;

/*如果出错,返回的错误码*/

UINT8Data[4];

}BM_Response;

UINT8Number;

/*发现的磁盘个数*/

}BM_RespDetectDisk;

/*响应发现了磁盘*/

1:

这跟上面的命令是一样的,可参看上面而得出。

/*磁盘号*/

}BM_RespOpenDisk;

}BM_RespGetDefaultDrive;

UINT16BytesPerSector;

UINT8SectorsPerCluster;

UINT32TotalClusters;

UINT32FreeClusters;

}BM_RespDriveSpaceInfoData;

1.由于数据比较大,考虑到4字节装不下,就把其放到Databuff里面。

然后用时直接从Databuff里面直接调出来用。

}BM_RespOpenFile;

UINT8Reserved[2];

}BM_RespReadFile;

1.DataLen说明读的数据的长度,现在定义的最大读数据长度为32768Byte。

}BM_RespWriteFile;

说明;

1.DataLen说明写的数据的长度,现在定义的最大写数据长度为32768Byte。

}BM_RespGetAttributes;

}BM_RespSysTime;

6.2.2代码的实现

6.2.2.1系统命令/响应消息

系统命令/响应消息用于在用户系统或ARM读写U盘/移动硬盘模块——USBHost总线解决方案系统将要发出的命令或响应及相应数据准备好后,通过对方(ARM读写U盘/移动硬盘模块——USBHost总线解决方案或用户系统)命令或响应已经准备完毕,可以开始执行的消息。

该消息通过中断方式来实现,通过向双端口RAM的0xFFFE或0xFFFF地址写数据来完成。

即:

(其中的命令/响应格式参看《HostModule系统协议v2.0》)

INTR中断为低有效。

参考代码如下:

#defineDPRAMRInt((char*)0xFFFFL)

#defineDPRAMLInt((char*)0xFFFCL)

#defineSEND_SYSCMD*DPRAMLInt=0x02/*用户系统向ARM读写U盘/移动硬盘模块——USBHost总线解决方案

发送命令消息的宏*/

bRecvCmd=*DPRAMRInt;

/*用户系统读取响应消息的

操作,用于用户系统被INTR触发的外部中断服务程序中*/

1.上述代码适用于FranklinC51和KeilC51系统。

(下同)

6.2.2.2系统命令/响应及其数据部分

如前所述,系统的协议是通过在双端口RAM的指定区域写入协议规定的命令来实现的。

系统命令在双端口RAM中指定的区域为:

#defineCommand0x40000000

#defineResponse0x40000000

#defineCommandData0x40000008

#defineResponseData0x4000008

1.上述定义的含义是:

a)Command被用于存放从用户系统发往ARM读写U盘/移动硬盘模块——USBHost总线解决方案的命令,包括BM_CmdSetDefaultDrive、BM_CmdFormatDrive、BM_CmdDriveSpaceInfo、BM_CmdGetCurrentDir、BM_CmdOpenFile、BM_CmdReadFile、BM_CmdWriteFile、BM_CmdSetFilePointer、BM_CmdCloseFile、BM_CmdTruncate、BM_CmdSetAttributes、BM_CmdSetBaudrate、BM_CmdSetCRC。

该存储区被指定于双端口RAM的0x0000地址,使用0x08(8字节)字节。

b)Response被用于存放从ARM读写U盘/移动硬盘模块——USBHost总线解决方案发往用户系统的响应,包括BM_RespDe

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 可爱清新

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1