• 大小: 2.01MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-30
  • 语言: 其他
  • 标签: USB  通信  源码  

资源简介

目录 第一章 绪论 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个文件信息

评论

共有 条评论