⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch375.h

📁 use dsp to make FAT16 format disk.interface with FLASH Ic.
💻 H
字号:

#define	CMD_RESET_ALL		0x05			/* 执行硬件复位 */

/* ************************************************************************** */
/* 以下命令用于USB主机方式, 只有CH375支持 */


#define	CMD_DISK_INIT		0x51			/* 主机方式: 初始化USB存储器 */
/* 输出中断 */

#define	CMD_DISK_RESET		0x52			/* 主机方式: 复位USB存储器 */
/* 输出中断 */

#define	CMD_DISK_SIZE		0x53			/* 主机方式: 获取USB存储器的容量 */
/* 输出中断 */

#define	CMD_DISK_READ		0x54			/* 主机方式: 从USB存储器读数据块(以扇区512字节为单位) */
/* 输入: LBA扇区地址(总长度32位, 低字节在前), 扇区数(01H~FFH) */
/* 输出中断 */

#define	CMD_DISK_RD_GO		0x55			/* 主机方式: 继续执行USB存储器的读操作 */
/* 输出中断 */

#define	CMD_DISK_WRITE		0x56			/* 主机方式: 向USB存储器写数据块(以扇区512字节为单位) */
/* 输入: LBA扇区地址(总长度32位, 低字节在前), 扇区数(01H~FFH) */
/* 输出中断 */

#define	CMD_DISK_WR_GO		0x57			/* 主机方式: 继续执行USB存储器的写操作 */
/* 输出中断 */
#define	CMD_DISK_R_SENSE	0x5A			/* 主机方式: 检查USB存储器错误 */
/* 输出中断 */
#define	CMD_DISK_READY		0x59			/* 主机方式: 检查USB存储器就绪 */
/* 输出中断 */


/* ************************************************************************** */
/* 以下新增的V2.0命令码, 仅CH372A/CH375A支持 */

#define	CMD_GET_IC_VER		0x01			/* 获取芯片及固件版本 */
/* 输出: 版本号( 位7为1, 位6为0, 位5~位0为版本号 ) */
/*           CH375返回无效值为5FH, CH375A返回版本号的值为0A2H */

#define	CMD_SET_USB_MODE	0x15			/* 设置USB工作模式 */
/* 输入: 模式代码 */
/*       00H=未启用的设备方式, 01H=已启用的设备方式并且使用外部固件模式, 02H=已启用的设备方式并且使用内置固件模式, 03H=已启用的设备方式并且使用中断端点和内置固件模式 */
/*       04H=未启用的主机方式, 05H=已启用的主机方式, 06H=已启用的主机方式并且自动产生SOF包, 07H=已启用的主机方式并且复位USB总线 */
/* 输出: 操作状态( CMD_RET_SUCCESS或CMD_RET_ABORT, 其它值说明操作未完成 ) */

#define	CMD_GET_STATUS		0x22			/* 获取中断状态并取消中断请求 */
/* 输出: 中断状态 */

#define	CMD_RD_USB_DATA		0x28			/* 从当前USB中断的端点缓冲区读取数据块, 并释放缓冲区 */
/* 输出: 长度, 数据流 */

#define	CMD_WR_USB_DATA3	0x29			/* 设备方式: 向USB端点0的发送缓冲区写入数据块 */
/* 输入: 长度, 数据流 */

#define	CMD_WR_USB_DATA5	0x2A			/* 设备方式: 向USB端点1的发送缓冲区写入数据块 */
/* 输入: 长度, 数据流 */

#define	CMD_WR_USB_DATA7	0x2B			/* 向USB端点2的发送缓冲区写入数据块 */
/* 输入: 长度, 数据流 */




/* ************************************************************************** */

#define	USB_INT_SUCCESS		0x14			/* USB事务或者传输操作成功 */
#define	USB_INT_CONNECT		0x15			/* 检测到USB设备连接事件 */
#define	USB_INT_DISCONNECT	0x16			/* 检测到USB设备断开事件 */
#define	USB_INT_BUF_OVER	0x17			/* USB控制传输的数据太多, 缓冲区溢出 */
#define	USB_INT_DISK_READ	0x1D			/* USB存储器读数据块, 请求数据读出 */
#define	USB_INT_DISK_WRITE	0x1E			/* USB存储器写数据块, 请求数据写入 */
#define	USB_INT_DISK_ERR	0x1F			/* USB存储器操作失败 */

/* 操作状态 */

#define	CMD_RET_SUCCESS		0x51			/* 命令操作成功 */
#define	CMD_RET_ABORT		0x5F			/* 命令操作失败 */

#define CH375_BLOCK_SIZE	64				/* CH375 maximum data block size */
#define CH375_BLK_PER_SEC	8				/* CH375 block per sector, SECTOR_SIZE/CH375_BLOCK_SIZE */

//============================================================================
void DelayMs(Uint16  nFactor);
void WrCmdTo375( Uint16 cmd );
void WrDatTo375( Uint16 dat );
unsigned char RdDatFrom375( );
unsigned char mWaitInterrupt( );
unsigned char mCH375Init( );
unsigned char mInitDisk( );
unsigned char ReadCapacity(void);
unsigned long SwapINT32(unsigned long dData);
unsigned char SwapINT16(unsigned char dData);
unsigned char LSwapINT16(unsigned char dData1,unsigned char dData2);
unsigned long LSwapINT32(unsigned long dData1,unsigned long dData2,unsigned long  dData3,unsigned long dData4);
unsigned char SPC_RequestSense(void);
unsigned char SPC_TestUnit(void);
unsigned char SPC_LockMedia(void);
unsigned char RBC_Read(unsigned long  lba, unsigned char  len, unsigned char *pBuffer);
unsigned char RBC_Write(unsigned long lba, unsigned char  len, unsigned char *pBuffer);
   
unsigned long 	FirstSectorofCluster16(unsigned int n);
unsigned int 	ThisFatSecNum16(unsigned int clusterNum);
unsigned int 	ThisFatEntOffset16(unsigned int clusterNum);
unsigned int 	GetNextClusterNum16(unsigned int clusterNum);
unsigned int 	GetClusterNumFromSectorNum(unsigned long sectorNum);

unsigned char 	GoToPointer16(unsigned long pointer);
unsigned int 	GetFreeCusterNum16(void);
unsigned int 	CreateClusterLink16(unsigned int currentCluster);
unsigned char 	DeleteClusterLink16(unsigned int clusterNum);

unsigned char List16(void);
unsigned char OpenFile16(char *pBuffer);
unsigned char ReadFile16(unsigned long readLength,unsigned char *pBuffer);
unsigned char SetFilePointer16(unsigned long pointer);

unsigned char CreateFile16(char *str,unsigned char attr);
unsigned char WriteFile16(unsigned long writeLength,unsigned char *pBuffer);
unsigned char RemoveFile16(char *str);
unsigned long GetCapacity16(void);

unsigned char CreateDir16(char *str);
unsigned char DownDir16(char *pBuffer);
unsigned char UpDir16(void);
unsigned char UpRootDir16(void);

//========================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -