资源简介
目录
第一章 绪论 1
1.1 PC接口简介 1
1.2 USB 接口分析 1
1.3 USB 器件的选择 1
1.4 MASS STORAGE协议与FAT16文件系统 2
第二章 USB总线结构 3
2.1 总线拓扑结 3
2.2 USB设备 3
2.2.1 USB HUB 4
2.2.2 即插即用 5
2.2.3 设备电源 6
2.2.4 设备的挂起 6
2.3 USB主机 6
2.4 USB数据流 7
2.5 USB的端点 9
第三章 协议 12
3.1 MASS STORAGE 协议 12
3.2 BULK-ONLY传输协议 16
3.3 SCSI指令集 18
3.4 FAT16 文件系统 21
3.4.1 FAT 文件系统结构 21
3.4.2 Flash盘的FAT结构 26
第四章 程序实现与调试 29
4.1 固件程序的实现 29
4.1.1 主循环——MAINLOOP.C 29
4.1.2 中断服务程序——D12ISR.C 29
4.1.3 标准设备请求处理——D12SETUP.C 33
4.1.4 NAND FLASH操作程序——NFLASH32.C 38
4.2 固件调试 42
4.2.1 检查USB器件是否正常工作 42
4.2.2 设备枚举 43
4.2.3 BULK_ONLY传输协议命令处理 43
4.2.4 FLASH的读写 45
结论 46
致谢 47
参考文献 48
附录 49
附录 A USB接口芯片命令总汇 49
A1.初始化命令 50
A2.数据流命令 54
A3.数据流命令 59
附录 B U盘固件程序源码清单 60

代码片段和文件信息
/*++
Module Name:
D12ISR.c
Abstract:
Header file related to D12 module
Environment:
ICCAVR 6.29
Revision History:
04/23/2004 chenchi created
--*/
/******************************************************************/
#include “io8515v.h“
#include “d12.h“
/************************************************************
**工程名称:U盘固件程序开发
**编译器类型及版本:ICCAVR 6.29
**日期:2004.4.30
**创建人:陈驰
**所属单位:湖南大学计算机与通信学院
**芯片类型:AT90S8515PDIUSUD12K9F5608U0A-YCB0
**时钟频率:8MHZ
**函数功能:中断服务处理
**函数输入参数及说明:无
**函数返回值:无
**在本函数以外定义的变量:D12_COMMANDD12_DATA
**调用的函数说明:
Setup_control():枚举控制函数
USB_submit():控制端点提交函数
Bulk_Out_Pack(j):处理PC发送的批量传输包
Bulk_In_Packet():回应批量传输包
void bus_reset(void):总线重置
void dma_eot(void):Dma 操作结束
**修改人:陈驰
**修改日期:2004.4.30
**修改说明:创建
*************************************************************/
void D12_ISR(void)
{
unsigned char ij;
D12_COMMAND = 0xf4;// 读中断寄存器
cwait1;
i=D12_DATA;//读取数据赋值给局部变量i
csram;
if(i & 0x01)//处理控制输出端点
{
D12_COMMAND = 0x40;//读最后状态
cwait1;
i= D12_DATA;//从端点缓冲区读取数据
csram;
if (i & 0x20) //收到SETUP包
{
Setup_control();//枚举控制函数
}
}else if(i & 0x02)//处理控制输入端点
{
D12_COMMAND = 0x41;//读最后状态
cwait1;
i = D12_DATA;//从端点缓冲区读取数据
csram;
USB_submit();//控制端点提交函数
}else if(i & 0x04)//处理端点1输出
{
}else if(i & 0x08)//处理端点1输入
{
}else if(i & 0x10)//处理批量输出端点
{
D12_COMMAND = 0x44;//读最后状态
cwait;
i = D12_DATA;
csram;
D12_COMMAND = 0x04;//选择端点(指针指向0位置)
cwait;
D12_COMMAND = 0xf0;//读缓冲区
/****************************
缓冲区数据结构:
字节1:保留可为任意值
字节2:数据字节的数目/长度
字节3:数据字节1
字节4:数据字节2
*****************************/
cwait1;
j=D12_DATA;//字节1
cwait1;
j=D12_DATA;//字节2
csram;
Bulk_Out_Packet(j);//处理PC发送的批量传输包
}
else if(i & 0x20)//处理批量输入端点
{
D12_COMMAND = 0x45;//读 in 最后状态
cwait1;
i = D12_DATA;
cwait1;
csram;
Bulk_In_Packet();//回应批量传输包
}else if(i & 0x80)//D12_INT_SUSPENDCHANGE D12挂起
{
}else if(i & 0x40)//D12_INT_BUSRESET总线复位
{
bus_reset();//总线重置
}else
{
i=D12_DATA; //D12_INT_EOT DMA操作已结束
if(i & 0x01)
{
dma_eot();//Dma 操作结束
}
}
}
void bus_reset(void)//总线重置函数
{
}
void dma_eot(void)//Dma 操作结束函数
{
}
/************************************************************
**工程名称:U盘固件程序开发
**编译器类型及版本:ICCAVR 6.29
**日期:2004.4.30
**创建人:陈驰
**所属单位:湖南大学计算机与通信学院
**芯片类型:AT90S8515PDIUSUD12K9F5608U0A-YCB0
**时钟频率:8MHZ
**函数功能:控制端点传输提交
**函数输入参数及说明:无
**函数返回值:无
**在本函数以外定义的变量:传输结构体
**调用的函数说明:无
**修改人:陈驰
**修改日期:2004.4.30
**修改说明:创建
*************************************************************/
void USB_submit(void)
{
unsigned char ijk;
/*********说明******************
D12芯片数据手册上说明控制端点
缓冲区大小为16BYTES使用时试用
64BYTES可以完成传输这里故用64
来处理
*******************************/
if(64 > XmtBuff.wrLength)
{
j = XmtBuff.wrLength;
}else
{
j = 64;
}
D12_CO
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4096 2004-05-08 17:11 USB通信程序开发\源代码\Avr_Usb_Disk.IMB
文件 368 2004-05-08 17:11 USB通信程序开发\源代码\Avr_Usb_Disk.IMD
文件 4096 2004-05-08 17:11 USB通信程序开发\源代码\Avr_Usb_Disk.IAB
文件 368 2004-05-08 17:11 USB通信程序开发\源代码\Avr_Usb_Disk.IAD
文件 3632 2004-05-17 21:31 USB通信程序开发\源代码\Avr_Usb_Disk.PR
文件 27860 2004-06-17 15:28 USB通信程序开发\源代码\Avr_Usb_Disk.PS
文件 40 2004-06-14 14:33 USB通信程序开发\源代码\Avr_Usb_Disk.PFI
文件 776 2004-06-14 14:33 USB通信程序开发\源代码\Avr_Usb_Disk.PO
文件 1607 2004-05-18 21:01 USB通信程序开发\源代码\Scsi.h.bak
文件 5562 2004-06-01 03:07 USB通信程序开发\源代码\D12ISR.c
文件 20752 2004-05-17 21:31 USB通信程序开发\源代码\Avr_Usb_Disk.PRI
文件 5560 2004-05-18 11:59 USB通信程序开发\源代码\D12ISR.c.bak
文件 3101 2004-05-18 20:10 USB通信程序开发\源代码\D12Setup.h.bak
文件 5561 2004-05-19 16:44 USB通信程序开发\源代码\D12ISR._c
文件 868 2004-05-19 16:44 USB通信程序开发\源代码\Avr_Usb_Disk.prj
文件 139 2004-05-18 09:57 USB通信程序开发\源代码\AVR_USB_DISK.SRC
文件 1090 2004-05-19 16:44 USB通信程序开发\源代码\Avr_Usb_Disk.mak
文件 51 2004-05-19 16:44 USB通信程序开发\源代码\Avr_Usb_Disk.lk
文件 73 2004-05-19 16:40 USB通信程序开发\源代码\MainLoop.dp2
文件 33493 2004-05-19 16:01 USB通信程序开发\源代码\Scsi.s
文件 47 2004-05-19 16:44 USB通信程序开发\源代码\D12ISR.dp2
文件 3024 2004-05-19 16:39 USB通信程序开发\源代码\D12Setup.h
文件 8665 2003-08-20 18:01 USB通信程序开发\源代码\io8515v.h
文件 70 2004-05-19 16:01 USB通信程序开发\源代码\D12Setup.dp2
文件 109 2004-05-19 16:01 USB通信程序开发\源代码\Scsi.dp2
文件 6736 2004-05-19 16:44 USB通信程序开发\源代码\D12ISR.o
文件 3110 2004-05-19 16:40 USB通信程序开发\源代码\MainLoop.s
文件 11666 2004-06-02 09:33 USB通信程序开发\源代码\D12Setup.c
文件 7416 2004-05-19 16:40 USB通信程序开发\源代码\MainLoop.lis
文件 12719 2004-05-19 16:44 USB通信程序开发\源代码\D12ISR.s
............此处省略40个文件信息
- 上一篇:活动演出演唱会票务网页模板
- 下一篇:飞机大战图片
相关资源
- Scratch源码
- E4A无障碍跨程序操作类库(带源码、
- 设备管理系统源码
- 安卓wifi直连app源码
- 易语言OTG串口通信
- STM32 2.4G通信例程
- 我的世界源码(易语言版)
- labview编程软件滤波器以及编写程序设
- 我的界面(visual foxpro)源码
- Visio图标-最新最全的网络通信图标库
- 易语言:一键cf基址源码
- The Secret Path 3D 3D魔方迷宫[源码][scra
- scratch垃圾分类源码(最终版本).sb
- usb hid调试工具
- HID调试助手
- 基于蓝牙4.0的设备通信方案设计与实
- USB.Over.Network.Server 注册机
- 安卓QQ6.71协议源码易语言,qq协议源码
- 编译原理实验工具及参考源码(lex&
- E盾偷后台工具源码
- WPF USB 网络 串口 通信软件
- UNIX/LINUX编程实践教程的源码
- 使用选择性重传协议实现UDP可靠通信
- DELPHI与西门子200PLC的串口通信实例
- 十以内加减法练习 powerbuilder源码
- Labview与CH372CH375的通信测试
- 通信软件的具体实例──基于Socket的
- USB转串口驱动,FT232R驱动程序,最新
- 农场开发项目
- OCR源码
评论
共有 条评论