/* ********************************************************************************************************************* */
|
#ifndef __CH376INC_H__
|
#define __CH376INC_H__
|
/* ********************************************************************************************************************* */
|
/* ********************************************************************************************************************* */
|
/* ********************************************************************************************************************* */
|
/* ********************************************************************************************************************* */
|
/* ³£ÓÃÀàÐͺͳ£Á¿¶¨Òå */
|
|
#ifndef TRUE
|
#define TRUE 1
|
#define FALSE 0
|
#endif
|
#ifndef NULL
|
#define NULL 0
|
#endif
|
|
#ifndef UINT8
|
typedef unsigned char UINT8;
|
#endif
|
#ifndef UINT16
|
typedef unsigned int UINT16;
|
#endif
|
#ifndef UINT32
|
typedef unsigned long UINT32;
|
#endif
|
#ifndef PUINT8
|
typedef unsigned char *PUINT8;
|
#endif
|
#ifndef PINT8
|
typedef char *PINT8;
|
#endif
|
#ifndef PUINT16
|
typedef unsigned int *PUINT16;
|
#endif
|
#ifndef PUINT32
|
typedef unsigned long *PUINT32;
|
#endif
|
#ifndef UINT8V
|
typedef unsigned char UINT8V;
|
#endif
|
#ifndef PUINT8V
|
typedef unsigned char *PUINT8V;
|
#endif
|
|
/* ********************************************************************************************************************* */
|
/* Ó²¼þÌØÐÔ */
|
|
#define CH376_DAT_BLOCK_LEN 0x40 /* USBµ¥¸öÊý¾Ý°ü, Êý¾Ý¿éµÄ×î´ó³¤¶È, ĬÈÏ»º³åÇøµÄ³¤¶È */
|
|
/* ********************************************************************************************************************* */
|
/* ÃüÁî´úÂë */
|
/* ²¿·ÖÃüÁî¼æÈÝCH375оƬ, µ«ÊÇÊäÈëÊý¾Ý»òÕßÊä³öÊý¾ÝµÄ¿ÉÄֲܾ¿²»Í¬) */
|
/* Ò»¸öÃüÁî²Ù×÷˳Ðò°üº¬:
|
Ò»¸öÃüÁîÂë(¶ÔÓÚ´®¿Ú·½Ê½,ÃüÁîÂë֮ǰ»¹ÐèÒªÁ½¸öͬ²½Âë),
|
Èô¸É¸öÊäÈëÊý¾Ý(¿ÉÒÔÊÇ0¸ö),
|
²úÉúÖжÏ֪ͨ »òÕß Èô¸É¸öÊä³öÊý¾Ý(¿ÉÒÔÊÇ0¸ö), ¶þѡһ, ÓÐÖжÏ֪ͨÔòÒ»¶¨Ã»ÓÐÊä³öÊý¾Ý, ÓÐÊä³öÊý¾ÝÔòÒ»¶¨²»²úÉúÖжÏ
|
½öCMD01_WR_REQ_DATAÃüÁîÀýÍâ, ˳Ðò°üº¬: Ò»¸öÃüÁîÂë, Ò»¸öÊä³öÊý¾Ý, Èô¸É¸öÊäÈëÊý¾Ý
|
ÃüÁîÂëÆðÃû¹æÔò: CMDxy_NAME
|
ÆäÖеÄxºÍy¶¼ÊÇÊý×Ö, x˵Ã÷×îÉÙÊäÈëÊý¾Ý¸öÊý(×Ö½ÚÊý), y˵Ã÷×îÉÙÊä³öÊý¾Ý¸öÊý(×Ö½ÚÊý), yÈç¹ûÊÇHÔò˵Ã÷²úÉúÖжÏ֪ͨ,
|
ÓÐЩÃüÁîÄܹ»ÊµÏÖ0µ½¶à¸ö×Ö½ÚµÄÊý¾Ý¿é¶Áд, Êý¾Ý¿é±¾ÉíµÄ×Ö½ÚÊýδ°üº¬ÔÚÉÏÊöx»òyÖ®ÄÚ */
|
/* ±¾ÎļþĬÈÏ»áͬʱÌṩÓëCH375оƬÃüÁîÂë¼æÈݵÄÃüÁîÂë¸ñʽ£¨¼´È¥µôxºÍyÖ®ºó), Èç¹û²»ÐèÒª, ÄÇô¿ÉÒÔ¶¨Òå_NO_CH375_COMPATIBLE_½ûÖ¹ */
|
|
/* ********************************************************************************************************************* */
|
/* Ö÷ÒªÃüÁî(ÊÖ²áÒ»), ³£Óà */
|
|
#define CMD01_GET_IC_VER 0x01 /* »ñȡоƬ¼°¹Ì¼þ°æ±¾ */
|
/* Êä³ö: °æ±¾ºÅ( λ7Ϊ0, λ6Ϊ1, λ5~λ0Ϊ°æ±¾ºÅ ) */
|
/* CH376·µ»Ø°æ±¾ºÅµÄֵΪ041H¼´°æ±¾ºÅΪ01H */
|
|
#define CMD21_SET_BAUDRATE 0x02 /* ´®¿Ú·½Ê½: ÉèÖô®¿ÚͨѶ²¨ÌØÂÊ(Éϵç»òÕ߸´Î»ºóµÄĬÈϲ¨ÌØÂÊΪ9600bps,ÓÉD4/D5/D6Òý½ÅÑ¡Ôñ) */
|
/* ÊäÈë: ²¨ÌØÂÊ·ÖÆµÏµÊý, ²¨ÌØÂÊ·ÖÆµ³£Êý */
|
/* Êä³ö: ²Ù×÷״̬( CMD_RET_SUCCESS»òCMD_RET_ABORT, ÆäËüֵ˵Ã÷²Ù×÷δÍê³É ) */
|
|
#define CMD00_ENTER_SLEEP 0x03 /* ½øÈë˯Ãß״̬ */
|
|
#define CMD00_RESET_ALL 0x05 /* Ö´ÐÐÓ²¼þ¸´Î» */
|
|
#define CMD11_CHECK_EXIST 0x06 /* ²âÊÔͨѶ½Ó¿ÚºÍ¹¤×÷״̬ */
|
/* ÊäÈë: ÈÎÒâÊý¾Ý */
|
/* Êä³ö: ÊäÈëÊý¾ÝµÄ°´Î»È¡·´ */
|
|
#define CMD20_CHK_SUSPEND 0x0B /* É豸·½Ê½: ÉèÖüì²éUSB×ÜÏß¹ÒÆð״̬µÄ·½Ê½ */
|
/* ÊäÈë: Êý¾Ý10H, ¼ì²é·½Ê½ */
|
/* 00H=²»¼ì²éUSB¹ÒÆð, 04H=ÒÔ50mSΪ¼ä¸ô¼ì²éUSB¹ÒÆð, 05H=ÒÔ10mSΪ¼ä¸ô¼ì²éUSB¹ÒÆð */
|
|
#define CMD20_SET_SDO_INT 0x0B /* SPI½Ó¿Ú·½Ê½: ÉèÖÃSPIµÄSDOÒý½ÅµÄÖжϷ½Ê½ */
|
/* ÊäÈë: Êý¾Ý16H, ÖжϷ½Ê½ */
|
/* 10H=½ûÖ¹SDOÒý½ÅÓÃÓÚÖжÏÊä³ö,ÔÚSCSƬѡÎÞЧʱÈý̬Êä³ö½ûÖ¹, 90H=SDOÒý½ÅÔÚSCSƬѡÎÞЧʱ¼æ×öÖжÏÇëÇóÊä³ö */
|
|
#define CMD14_GET_FILE_SIZE 0x0C /* Ö÷»úÎļþģʽ: »ñÈ¡µ±Ç°Îļþ³¤¶È */
|
/* ÊäÈë: Êý¾Ý68H */
|
/* Êä³ö: µ±Ç°Îļþ³¤¶È(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
|
#define CMD50_SET_FILE_SIZE 0x0D /* Ö÷»úÎļþģʽ: ÉèÖõ±Ç°Îļþ³¤¶È */
|
/* ÊäÈë: Êý¾Ý68H, µ±Ç°Îļþ³¤¶È(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
|
#define CMD11_SET_USB_MODE 0x15 /* ÉèÖÃUSB¹¤×÷ģʽ */
|
/* ÊäÈë: ģʽ´úÂë */
|
/* 00H=δÆôÓõÄÉ豸·½Ê½, 01H=ÒÑÆôÓõÄÉ豸·½Ê½²¢ÇÒʹÓÃÍⲿ¹Ì¼þģʽ(´®¿Ú²»Ö§³Ö), 02H=ÒÑÆôÓõÄÉ豸·½Ê½²¢ÇÒʹÓÃÄÚÖù̼þģʽ */
|
/* 03H=SD¿¨Ö÷»úģʽ/δÆôÓõÄÖ÷»úģʽ,ÓÃÓÚ¹ÜÀíºÍ´æÈ¡SD¿¨ÖеÄÎļþ */
|
/* 04H=δÆôÓõÄÖ÷»ú·½Ê½, 05H=ÒÑÆôÓõÄÖ÷»ú·½Ê½, 06H=ÒÑÆôÓõÄÖ÷»ú·½Ê½²¢ÇÒ×Ô¶¯²úÉúSOF°ü, 07H=ÒÑÆôÓõÄÖ÷»ú·½Ê½²¢ÇÒ¸´Î»USB×ÜÏß */
|
/* Êä³ö: ²Ù×÷״̬( CMD_RET_SUCCESS»òCMD_RET_ABORT, ÆäËüֵ˵Ã÷²Ù×÷δÍê³É ) */
|
|
#define CMD01_GET_STATUS 0x22 /* »ñÈ¡ÖжÏ״̬²¢È¡ÏûÖжÏÇëÇó */
|
/* Êä³ö: ÖжÏ״̬ */
|
|
#define CMD00_UNLOCK_USB 0x23 /* É豸·½Ê½: Êͷŵ±Ç°USB»º³åÇø */
|
|
#define CMD01_RD_USB_DATA0 0x27 /* ´Óµ±Ç°USBÖжϵĶ˵㻺³åÇø»òÕßÖ÷»ú¶ËµãµÄ½ÓÊÕ»º³åÇø¶ÁÈ¡Êý¾Ý¿é */
|
/* Êä³ö: ³¤¶È, Êý¾ÝÁ÷ */
|
|
#define CMD01_RD_USB_DATA 0x28 /* É豸·½Ê½: ´Óµ±Ç°USBÖжϵĶ˵㻺³åÇø¶ÁÈ¡Êý¾Ý¿é, ²¢ÊÍ·Å»º³åÇø, Ï൱ÓÚ CMD01_RD_USB_DATA0 + CMD00_UNLOCK_USB */
|
/* Êä³ö: ³¤¶È, Êý¾ÝÁ÷ */
|
|
#define CMD10_WR_USB_DATA7 0x2B /* É豸·½Ê½: ÏòUSB¶Ëµã2µÄ·¢ËÍ»º³åÇøÐ´ÈëÊý¾Ý¿é */
|
/* ÊäÈë: ³¤¶È, Êý¾ÝÁ÷ */
|
|
#define CMD10_WR_HOST_DATA 0x2C /* ÏòUSBÖ÷»ú¶ËµãµÄ·¢ËÍ»º³åÇøÐ´ÈëÊý¾Ý¿é */
|
/* ÊäÈë: ³¤¶È, Êý¾ÝÁ÷ */
|
|
#define CMD01_WR_REQ_DATA 0x2D /* ÏòÄÚ²¿Ö¸¶¨»º³åÇøÐ´ÈëÇëÇóµÄÊý¾Ý¿é */
|
/* Êä³ö: ³¤¶È */
|
/* ÊäÈë: Êý¾ÝÁ÷ */
|
|
#define CMD20_WR_OFS_DATA 0x2E /* ÏòÄÚ²¿»º³åÇøÖ¸¶¨Æ«ÒƵØÖ·Ð´ÈëÊý¾Ý¿é */
|
/* ÊäÈë: Æ«ÒÆ, ³¤¶È, Êý¾ÝÁ÷ */
|
|
#define CMD10_SET_FILE_NAME 0x2F /* Ö÷»úÎļþģʽ: ÉèÖý«Òª²Ù×÷µÄÎļþµÄÎļþÃû */
|
/* ÊäÈë: ÒÔ0½áÊøµÄ×Ö·û´®(º¬½áÊø·û0ÔÚÄÚ³¤¶È²»³¬¹ý14¸ö×Ö·û) */
|
|
/* ********************************************************************************************************************* */
|
/* Ö÷ÒªÃüÁî(ÊÖ²áÒ»), ³£ÓÃ, ÒÔÏÂÃüÁî×ÜÊÇÔÚ²Ù×÷½áÊøÊ±²úÉúÖжÏ֪ͨ, ²¢ÇÒ×ÜÊÇûÓÐÊä³öÊý¾Ý */
|
|
#define CMD0H_DISK_CONNECT 0x30 /* Ö÷»úÎļþģʽ/²»Ö§³ÖSD¿¨: ¼ì²é´ÅÅÌÊÇ·ñÁ¬½Ó */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_DISK_MOUNT 0x31 /* Ö÷»úÎļþģʽ: ³õʼ»¯´ÅÅ̲¢²âÊÔ´ÅÅÌÊÇ·ñ¾ÍÐ÷ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_FILE_OPEN 0x32 /* Ö÷»úÎļþģʽ: ´ò¿ªÎļþ»òÕßĿ¼(Îļþ¼Ð),»òÕßö¾ÙÎļþºÍĿ¼(Îļþ¼Ð) */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_FILE_ENUM_GO 0x33 /* Ö÷»úÎļþģʽ: ¼ÌÐøÃ¶¾ÙÎļþºÍĿ¼(Îļþ¼Ð) */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_FILE_CREATE 0x34 /* Ö÷»úÎļþģʽ: н¨Îļþ,Èç¹ûÎļþÒѾ´æÔÚÄÇôÏÈɾ³ý */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_FILE_ERASE 0x35 /* Ö÷»úÎļþģʽ: ɾ³ýÎļþ,Èç¹ûÒѾ´ò¿ªÔòÖ±½Óɾ³ý,·ñÔò¶ÔÓÚÎļþ»áÏÈ´ò¿ªÔÙɾ³ý,×ÓĿ¼±ØÐëÏÈ´ò¿ª */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD1H_FILE_CLOSE 0x36 /* Ö÷»úÎļþģʽ: ¹Ø±Õµ±Ç°ÒѾ´ò¿ªµÄÎļþ»òÕßĿ¼(Îļþ¼Ð) */
|
/* ÊäÈë: ÊÇ·ñÔÊÐí¸üÐÂÎļþ³¤¶È */
|
/* 00H=½ûÖ¹¸ü㤶È, 01H=ÔÊÐí¸üг¤¶È */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD1H_DIR_INFO_READ 0x37 /* Ö÷»úÎļþģʽ: ¶ÁÈ¡ÎļþµÄĿ¼ÐÅÏ¢ */
|
/* ÊäÈë: Ö¸¶¨ÐèÒª¶ÁÈ¡µÄĿ¼ÐÅÏ¢½á¹¹ÔÚÉÈÇøÄÚµÄË÷ÒýºÅ */
|
/* Ë÷ÒýºÅ·¶Î§Îª00H~0FH, Ë÷ÒýºÅ0FFHÔòΪµ±Ç°ÒѾ´ò¿ªµÄÎļþ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_DIR_INFO_SAVE 0x38 /* Ö÷»úÎļþģʽ: ±£´æÎļþµÄĿ¼ÐÅÏ¢ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD4H_BYTE_LOCATE 0x39 /* Ö÷»úÎļþģʽ: ÒÔ×Ö½ÚΪµ¥Î»Òƶ¯µ±Ç°ÎļþÖ¸Õë */
|
/* ÊäÈë: Æ«ÒÆ×Ö½ÚÊý(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD2H_BYTE_READ 0x3A /* Ö÷»úÎļþģʽ: ÒÔ×Ö½ÚΪµ¥Î»´Óµ±Ç°Î»ÖöÁÈ¡Êý¾Ý¿é */
|
/* ÊäÈë: ÇëÇó¶ÁÈ¡µÄ×Ö½ÚÊý(×ܳ¤¶È16λ,µÍ×Ö½ÚÔÚǰ) */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_BYTE_RD_GO 0x3B /* Ö÷»úÎļþģʽ: ¼ÌÐø×Ö½Ú¶Á */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD2H_BYTE_WRITE 0x3C /* Ö÷»úÎļþģʽ: ÒÔ×Ö½ÚΪµ¥Î»Ïòµ±Ç°Î»ÖÃдÈëÊý¾Ý¿é */
|
/* ÊäÈë: ÇëÇóдÈëµÄ×Ö½ÚÊý(×ܳ¤¶È16λ,µÍ×Ö½ÚÔÚǰ) */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_BYTE_WR_GO 0x3D /* Ö÷»úÎļþģʽ: ¼ÌÐø×Ö½Úд */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_DISK_CAPACITY 0x3E /* Ö÷»úÎļþģʽ: ²éѯ´ÅÅÌÎïÀíÈÝÁ¿ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_DISK_QUERY 0x3F /* Ö÷»úÎļþģʽ: ²éѯ´ÅÅ̿ռäÐÅÏ¢ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_DIR_CREATE 0x40 /* Ö÷»úÎļþģʽ: н¨Ä¿Â¼(Îļþ¼Ð)²¢´ò¿ª,Èç¹ûĿ¼ÒѾ´æÔÚÄÇôֱ½Ó´ò¿ª */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD4H_SEC_LOCATE 0x4A /* Ö÷»úÎļþģʽ: ÒÔÉÈÇøÎªµ¥Î»Òƶ¯µ±Ç°ÎļþÖ¸Õë */
|
/* ÊäÈë: Æ«ÒÆÉÈÇøÊý(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD1H_SEC_READ 0x4B /* Ö÷»úÎļþģʽ/²»Ö§³ÖSD¿¨: ÒÔÉÈÇøÎªµ¥Î»´Óµ±Ç°Î»ÖöÁÈ¡Êý¾Ý¿é */
|
/* ÊäÈë: ÇëÇó¶ÁÈ¡µÄÉÈÇøÊý */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD1H_SEC_WRITE 0x4C /* Ö÷»úÎļþģʽ/²»Ö§³ÖSD¿¨: ÒÔÉÈÇøÎªµ¥Î»ÔÚµ±Ç°Î»ÖÃдÈëÊý¾Ý¿é */
|
/* ÊäÈë: ÇëÇóдÈëµÄÉÈÇøÊý */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_DISK_BOC_CMD 0x50 /* Ö÷»ú·½Ê½/²»Ö§³ÖSD¿¨: ¶ÔUSB´æ´¢Æ÷Ö´ÐÐBulkOnly´«ÊäÐÒéµÄÃüÁî */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD5H_DISK_READ 0x54 /* Ö÷»ú·½Ê½/²»Ö§³ÖSD¿¨: ´ÓUSB´æ´¢Æ÷¶ÁÎïÀíÉÈÇø */
|
/* ÊäÈë: LBAÎïÀíÉÈÇøµØÖ·(×ܳ¤¶È32λ, µÍ×Ö½ÚÔÚǰ), ÉÈÇøÊý(01H~FFH) */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_DISK_RD_GO 0x55 /* Ö÷»ú·½Ê½/²»Ö§³ÖSD¿¨: ¼ÌÐøÖ´ÐÐUSB´æ´¢Æ÷µÄÎïÀíÉÈÇø¶Á²Ù×÷ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD5H_DISK_WRITE 0x56 /* Ö÷»ú·½Ê½/²»Ö§³ÖSD¿¨: ÏòUSB´æ´¢Æ÷дÎïÀíÉÈÇø */
|
/* ÊäÈë: LBAÎïÀíÉÈÇøµØÖ·(×ܳ¤¶È32λ, µÍ×Ö½ÚÔÚǰ), ÉÈÇøÊý(01H~FFH) */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_DISK_WR_GO 0x57 /* Ö÷»ú·½Ê½/²»Ö§³ÖSD¿¨: ¼ÌÐøÖ´ÐÐUSB´æ´¢Æ÷µÄÎïÀíÉÈÇøÐ´²Ù×÷ */
|
/* Êä³öÖÐ¶Ï */
|
|
/* ********************************************************************************************************************* */
|
/* ¸¨ÖúÃüÁî(ÊÖ²á¶þ), ²»Ì«³£ÓûòÕßÊÇΪÁËÓëCH375ºÍCH372¼æÈÝ */
|
|
#define CMD10_SET_USB_SPEED 0x04 /* ÉèÖÃUSB×ÜÏßËÙ¶È, ÔÚÿ´ÎCMD11_SET_USB_MODEÉèÖÃUSB¹¤×÷ģʽʱ»á×Ô¶¯»Ö¸´µ½12MbpsÈ«ËÙ */
|
/* ÊäÈë: ×ÜÏßËÙ¶È´úÂë */
|
/* 00H=12MbpsÈ«ËÙFullSpeed£¨Ä¬ÈÏÖµ£©, 01H=1.5Mbps£¨½öÐÞ¸ÄÆµÂÊ£©, 02H=1.5MbpsµÍËÙLowSpeed */
|
|
#define CMD11_GET_DEV_RATE 0x0A /* Ö÷»ú·½Ê½: »ñÈ¡µ±Ç°Á¬½ÓµÄUSBÉ豸µÄÊý¾ÝËÙÂÊÀàÐÍ */
|
/* ÊäÈë: Êý¾Ý07H */
|
/* Êä³ö: Êý¾ÝËÙÂÊÀàÐÍ */
|
/* λ4Ϊ1ÔòÊÇ1.5MbpsµÍËÙUSBÉ豸, ·ñÔòÊÇ12MbpsÈ«ËÙUSBÉ豸 */
|
|
#define CMD11_GET_TOGGLE 0x0A /* »ñÈ¡OUTÊÂÎñµÄͬ²½×´Ì¬ */
|
/* ÊäÈë: Êý¾Ý1AH */
|
/* Êä³ö: ͬ²½×´Ì¬ */
|
/* λ4Ϊ1ÔòOUTÊÂÎñͬ²½, ·ñÔòOUTÊÂÎñ²»Í¬²½ */
|
|
#define CMD11_READ_VAR8 0x0A /* ¶Áȡָ¶¨µÄ8λÎļþϵͳ±äÁ¿ */
|
/* ÊäÈë: ±äÁ¿µØÖ· */
|
/* Êä³ö: Êý¾Ý */
|
|
/*#define CMD11_GET_MAX_LUN = CMD11_READ_VAR8( VAR_UDISK_LUN )*/ /* Ö÷»ú·½Ê½: »ñÈ¡USB´æ´¢Æ÷×î´óºÍµ±Ç°Âß¼µ¥ÔªºÅ */
|
|
#define CMD20_SET_RETRY 0x0B /* Ö÷»ú·½Ê½: ÉèÖÃUSBÊÂÎñ²Ù×÷µÄÖØÊÔ´ÎÊý */
|
/* ÊäÈë: Êý¾Ý25H, ÖØÊÔ´ÎÊý */
|
/* λ7Ϊ0ÔòÊÕµ½NAKʱ²»ÖØÊÔ, λ7Ϊ1λ6Ϊ0ÔòÊÕµ½NAKʱÎÞÏÞÖØÊÔ, λ7Ϊ1λ6Ϊ1ÔòÊÕµ½NAKʱ×î¶àÖØÊÔ3Ãë, λ5~λ0Ϊ³¬Ê±ºóµÄÖØÊÔ´ÎÊý */
|
|
#define CMD20_WRITE_VAR8 0x0B /* ÉèÖÃÖ¸¶¨µÄ8λÎļþϵͳ±äÁ¿ */
|
/* ÊäÈë: ±äÁ¿µØÖ·, Êý¾Ý */
|
|
/*#define CMD20_SET_DISK_LUN = CMD20_WRITE_VAR8( VAR_UDISK_LUN )*/ /* Ö÷»ú·½Ê½: ÉèÖÃUSB´æ´¢Æ÷µÄµ±Ç°Âß¼µ¥ÔªºÅ */
|
|
#define CMD14_READ_VAR32 0x0C /* ¶Áȡָ¶¨µÄ32λÎļþϵͳ±äÁ¿ */
|
/* ÊäÈë: ±äÁ¿µØÖ· */
|
/* Êä³ö: Êý¾Ý(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
|
#define CMD50_WRITE_VAR32 0x0D /* ÉèÖÃÖ¸¶¨µÄ32λÎļþϵͳ±äÁ¿ */
|
/* ÊäÈë: ±äÁ¿µØÖ·, Êý¾Ý(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
|
#define CMD01_DELAY_100US 0x0F /* ÑÓʱ100uS(´®¿Ú²»Ö§³Ö) */
|
/* Êä³ö: ÑÓʱÆÚ¼äÊä³ö0,ÑÓʱ½áÊøÊä³ö·Ç0 */
|
|
#define CMD40_SET_USB_ID 0x12 /* É豸·½Ê½: ÉèÖÃUSB³§ÉÌVIDºÍ²úÆ·PID */
|
/* ÊäÈë: ³§ÉÌIDµÍ×Ö½Ú, ³§ÉÌID¸ß×Ö½Ú, ²úÆ·IDµÍ×Ö½Ú, ²úÆ·ID¸ß×Ö½Ú */
|
|
#define CMD10_SET_USB_ADDR 0x13 /* ÉèÖÃUSBµØÖ· */
|
/* ÊäÈë: µØÖ·Öµ */
|
|
#define CMD01_TEST_CONNECT 0x16 /* Ö÷»ú·½Ê½/²»Ö§³ÖSD¿¨: ¼ì²éUSBÉ豸Á¬½Ó״̬ */
|
/* Êä³ö: ״̬( USB_INT_CONNECT»òUSB_INT_DISCONNECT»òUSB_INT_USB_READY, ÆäËüֵ˵Ã÷²Ù×÷δÍê³É ) */
|
|
#define CMD00_ABORT_NAK 0x17 /* Ö÷»ú·½Ê½: ·ÅÆúµ±Ç°NAKµÄÖØÊÔ */
|
|
#define CMD10_SET_ENDP2 0x18 /* É豸·½Ê½(´®¿Ú²»Ö§³Ö): ÉèÖÃUSB¶Ëµã0µÄ½ÓÊÕÆ÷ */
|
/* ÊäÈë: ¹¤×÷·½Ê½ */
|
/* λ7Ϊ1Ôòλ6Ϊͬ²½´¥·¢Î», ·ñÔòͬ²½´¥·¢Î»²»±ä */
|
/* λ3~λ0ΪÊÂÎñÏìÓ¦·½Ê½: 0000-¾ÍÐ÷ACK, 1110-ÕýæNAK, 1111-´íÎóSTALL */
|
|
#define CMD10_SET_ENDP3 0x19 /* É豸·½Ê½(´®¿Ú²»Ö§³Ö): ÉèÖÃUSB¶Ëµã0µÄ·¢ËÍÆ÷ */
|
/* ÊäÈë: ¹¤×÷·½Ê½ */
|
/* λ7Ϊ1Ôòλ6Ϊͬ²½´¥·¢Î», ·ñÔòͬ²½´¥·¢Î»²»±ä */
|
/* λ3~λ0ΪÊÂÎñÏìÓ¦·½Ê½: 0000~1000-¾ÍÐ÷ACK, 1110-ÕýæNAK, 1111-´íÎóSTALL */
|
|
#define CMD10_SET_ENDP4 0x1A /* É豸·½Ê½(´®¿Ú²»Ö§³Ö): ÉèÖÃUSB¶Ëµã1µÄ½ÓÊÕÆ÷ */
|
/* ÊäÈë: ¹¤×÷·½Ê½ */
|
/* λ7Ϊ1Ôòλ6Ϊͬ²½´¥·¢Î», ·ñÔòͬ²½´¥·¢Î»²»±ä */
|
/* λ3~λ0ΪÊÂÎñÏìÓ¦·½Ê½: 0000-¾ÍÐ÷ACK, 1110-ÕýæNAK, 1111-´íÎóSTALL */
|
|
#define CMD10_SET_ENDP5 0x1B /* É豸·½Ê½(´®¿Ú²»Ö§³Ö): ÉèÖÃUSB¶Ëµã1µÄ·¢ËÍÆ÷ */
|
/* ÊäÈë: ¹¤×÷·½Ê½ */
|
/* λ7Ϊ1Ôòλ6Ϊͬ²½´¥·¢Î», ·ñÔòͬ²½´¥·¢Î»²»±ä */
|
/* λ3~λ0ΪÊÂÎñÏìÓ¦·½Ê½: 0000~1000-¾ÍÐ÷ACK, 1110-ÕýæNAK, 1111-´íÎóSTALL */
|
|
#define CMD10_SET_ENDP6 0x1C /* ÉèÖÃUSB¶Ëµã2/Ö÷»ú¶ËµãµÄ½ÓÊÕÆ÷ */
|
/* ÊäÈë: ¹¤×÷·½Ê½ */
|
/* λ7Ϊ1Ôòλ6Ϊͬ²½´¥·¢Î», ·ñÔòͬ²½´¥·¢Î»²»±ä */
|
/* λ3~λ0ΪÊÂÎñÏìÓ¦·½Ê½: 0000-¾ÍÐ÷ACK, 1101-¾ÍÐ÷µ«²»·µ»ØACK, 1110-ÕýæNAK, 1111-´íÎóSTALL */
|
|
#define CMD10_SET_ENDP7 0x1D /* ÉèÖÃUSB¶Ëµã2/Ö÷»ú¶ËµãµÄ·¢ËÍÆ÷ */
|
/* ÊäÈë: ¹¤×÷·½Ê½ */
|
/* λ7Ϊ1Ôòλ6Ϊͬ²½´¥·¢Î», ·ñÔòͬ²½´¥·¢Î»²»±ä */
|
/* λ3~λ0ΪÊÂÎñÏìÓ¦·½Ê½: 0000-¾ÍÐ÷ACK, 1101-¾ÍÐ÷µ«ÎÞÐëÓ¦´ð, 1110-ÕýæNAK, 1111-´íÎóSTALL */
|
|
#define CMD00_DIRTY_BUFFER 0x25 /* Ö÷»úÎļþģʽ: Çå³ýÄÚ²¿µÄ´ÅÅ̺ÍÎļþ»º³åÇø */
|
|
#define CMD10_WR_USB_DATA3 0x29 /* É豸·½Ê½(´®¿Ú²»Ö§³Ö): ÏòUSB¶Ëµã0µÄ·¢ËÍ»º³åÇøÐ´ÈëÊý¾Ý¿é */
|
/* ÊäÈë: ³¤¶È, Êý¾ÝÁ÷ */
|
|
#define CMD10_WR_USB_DATA5 0x2A /* É豸·½Ê½(´®¿Ú²»Ö§³Ö): ÏòUSB¶Ëµã1µÄ·¢ËÍ»º³åÇøÐ´ÈëÊý¾Ý¿é */
|
/* ÊäÈë: ³¤¶È, Êý¾ÝÁ÷ */
|
|
/* ********************************************************************************************************************* */
|
/* ¸¨ÖúÃüÁî(ÊÖ²á¶þ), ²»Ì«³£ÓûòÕßÊÇΪÁËÓëCH375ºÍCH372¼æÈÝ, ÒÔÏÂÃüÁî×ÜÊÇÔÚ²Ù×÷½áÊøÊ±²úÉúÖжÏ֪ͨ, ²¢ÇÒ×ÜÊÇûÓÐÊä³öÊý¾Ý */
|
|
#define CMD1H_CLR_STALL 0x41 /* Ö÷»ú·½Ê½: ¿ØÖÆ´«Êä-Çå³ý¶Ëµã´íÎó */
|
/* ÊäÈë: ¶ËµãºÅ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD1H_SET_ADDRESS 0x45 /* Ö÷»ú·½Ê½: ¿ØÖÆ´«Êä-ÉèÖÃUSBµØÖ· */
|
/* ÊäÈë: µØÖ·Öµ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD1H_GET_DESCR 0x46 /* Ö÷»ú·½Ê½: ¿ØÖÆ´«Êä-»ñÈ¡ÃèÊö·û */
|
/* ÊäÈë: ÃèÊö·ûÀàÐÍ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD1H_SET_CONFIG 0x49 /* Ö÷»ú·½Ê½: ¿ØÖÆ´«Êä-ÉèÖÃUSBÅäÖà */
|
/* ÊäÈë: ÅäÖÃÖµ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_AUTO_SETUP 0x4D /* Ö÷»ú·½Ê½/²»Ö§³ÖSD¿¨: ×Ô¶¯ÅäÖÃUSBÉ豸 */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD2H_ISSUE_TKN_X 0x4E /* Ö÷»ú·½Ê½: ·¢³öͬ²½ÁîÅÆ, Ö´ÐÐÊÂÎñ, ¸ÃÃüÁî¿É´úÌæ CMD10_SET_ENDP6/CMD10_SET_ENDP7 + CMD1H_ISSUE_TOKEN */
|
/* ÊäÈë: ͬ²½±êÖ¾, ÊÂÎñÊôÐÔ */
|
/* ͬ²½±êÖ¾µÄλ7ΪÖ÷»ú¶ËµãINµÄͬ²½´¥·¢Î», λ6ΪÖ÷»ú¶ËµãOUTµÄͬ²½´¥·¢Î», λ5~λ0±ØÐëΪ0 */
|
/* ÊÂÎñÊôÐԵĵÍ4λÊÇÁîÅÆ, ¸ß4λÊǶ˵ãºÅ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD1H_ISSUE_TOKEN 0x4F /* Ö÷»ú·½Ê½: ·¢³öÁîÅÆ, Ö´ÐÐÊÂÎñ, ½¨ÒéÓÃCMD2H_ISSUE_TKN_XÃüÁî */
|
/* ÊäÈë: ÊÂÎñÊôÐÔ */
|
/* µÍ4λÊÇÁîÅÆ, ¸ß4λÊǶ˵ãºÅ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_DISK_INIT 0x51 /* Ö÷»ú·½Ê½/²»Ö§³ÖSD¿¨: ³õʼ»¯USB´æ´¢Æ÷ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_DISK_RESET 0x52 /* Ö÷»ú·½Ê½/²»Ö§³ÖSD¿¨: ¿ØÖÆ´«Êä-¸´Î»USB´æ´¢Æ÷ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_DISK_SIZE 0x53 /* Ö÷»ú·½Ê½/²»Ö§³ÖSD¿¨: »ñÈ¡USB´æ´¢Æ÷µÄÈÝÁ¿ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_DISK_INQUIRY 0x58 /* Ö÷»ú·½Ê½/²»Ö§³ÖSD¿¨: ²éѯUSB´æ´¢Æ÷ÌØÐÔ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_DISK_READY 0x59 /* Ö÷»ú·½Ê½/²»Ö§³ÖSD¿¨: ¼ì²éUSB´æ´¢Æ÷¾ÍÐ÷ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_DISK_R_SENSE 0x5A /* Ö÷»ú·½Ê½/²»Ö§³ÖSD¿¨: ¼ì²éUSB´æ´¢Æ÷´íÎó */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_RD_DISK_SEC 0x5B /* Ö÷»úÎļþģʽ: ´Ó´ÅÅ̶Áȡһ¸öÉÈÇøµÄÊý¾Ýµ½ÄÚ²¿»º³åÇø */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_WR_DISK_SEC 0x5C /* Ö÷»úÎļþģʽ: ½«ÄÚ²¿»º³åÇøµÄÒ»¸öÉÈÇøµÄÊý¾ÝдÈë´ÅÅÌ */
|
/* Êä³öÖÐ¶Ï */
|
|
#define CMD0H_DISK_MAX_LUN 0x5D /* Ö÷»ú·½Ê½: ¿ØÖÆ´«Êä-»ñÈ¡USB´æ´¢Æ÷×î´óÂß¼µ¥ÔªºÅ */
|
/* Êä³öÖÐ¶Ï */
|
|
/* ********************************************************************************************************************* */
|
/* ÒÔ϶¨ÒåÖ»ÊÇΪÁ˼æÈÝCH375µÄINCLUDEÎļþÖеÄÃüÁîÃû³Æ¸ñʽ */
|
|
#ifndef _NO_CH375_COMPATIBLE_
|
#define CMD_GET_IC_VER CMD01_GET_IC_VER
|
#define CMD_SET_BAUDRATE CMD21_SET_BAUDRATE
|
#define CMD_ENTER_SLEEP CMD00_ENTER_SLEEP
|
#define CMD_RESET_ALL CMD00_RESET_ALL
|
#define CMD_CHECK_EXIST CMD11_CHECK_EXIST
|
#define CMD_CHK_SUSPEND CMD20_CHK_SUSPEND
|
#define CMD_SET_SDO_INT CMD20_SET_SDO_INT
|
#define CMD_GET_FILE_SIZE CMD14_GET_FILE_SIZE
|
#define CMD_SET_FILE_SIZE CMD50_SET_FILE_SIZE
|
#define CMD_SET_USB_MODE CMD11_SET_USB_MODE
|
#define CMD_GET_STATUS CMD01_GET_STATUS
|
#define CMD_UNLOCK_USB CMD00_UNLOCK_USB
|
#define CMD_RD_USB_DATA0 CMD01_RD_USB_DATA0
|
#define CMD_RD_USB_DATA CMD01_RD_USB_DATA
|
#define CMD_WR_USB_DATA7 CMD10_WR_USB_DATA7
|
#define CMD_WR_HOST_DATA CMD10_WR_HOST_DATA
|
#define CMD_WR_REQ_DATA CMD01_WR_REQ_DATA
|
#define CMD_WR_OFS_DATA CMD20_WR_OFS_DATA
|
#define CMD_SET_FILE_NAME CMD10_SET_FILE_NAME
|
#define CMD_DISK_CONNECT CMD0H_DISK_CONNECT
|
#define CMD_DISK_MOUNT CMD0H_DISK_MOUNT
|
#define CMD_FILE_OPEN CMD0H_FILE_OPEN
|
#define CMD_FILE_ENUM_GO CMD0H_FILE_ENUM_GO
|
#define CMD_FILE_CREATE CMD0H_FILE_CREATE
|
#define CMD_FILE_ERASE CMD0H_FILE_ERASE
|
#define CMD_FILE_CLOSE CMD1H_FILE_CLOSE
|
#define CMD_DIR_INFO_READ CMD1H_DIR_INFO_READ
|
#define CMD_DIR_INFO_SAVE CMD0H_DIR_INFO_SAVE
|
#define CMD_BYTE_LOCATE CMD4H_BYTE_LOCATE
|
#define CMD_BYTE_READ CMD2H_BYTE_READ
|
#define CMD_BYTE_RD_GO CMD0H_BYTE_RD_GO
|
#define CMD_BYTE_WRITE CMD2H_BYTE_WRITE
|
#define CMD_BYTE_WR_GO CMD0H_BYTE_WR_GO
|
#define CMD_DISK_CAPACITY CMD0H_DISK_CAPACITY
|
#define CMD_DISK_QUERY CMD0H_DISK_QUERY
|
#define CMD_DIR_CREATE CMD0H_DIR_CREATE
|
#define CMD_SEC_LOCATE CMD4H_SEC_LOCATE
|
#define CMD_SEC_READ CMD1H_SEC_READ
|
#define CMD_SEC_WRITE CMD1H_SEC_WRITE
|
#define CMD_DISK_BOC_CMD CMD0H_DISK_BOC_CMD
|
#define CMD_DISK_READ CMD5H_DISK_READ
|
#define CMD_DISK_RD_GO CMD0H_DISK_RD_GO
|
#define CMD_DISK_WRITE CMD5H_DISK_WRITE
|
#define CMD_DISK_WR_GO CMD0H_DISK_WR_GO
|
#define CMD_SET_USB_SPEED CMD10_SET_USB_SPEED
|
#define CMD_GET_DEV_RATE CMD11_GET_DEV_RATE
|
#define CMD_GET_TOGGLE CMD11_GET_TOGGLE
|
#define CMD_READ_VAR8 CMD11_READ_VAR8
|
#define CMD_SET_RETRY CMD20_SET_RETRY
|
#define CMD_WRITE_VAR8 CMD20_WRITE_VAR8
|
#define CMD_READ_VAR32 CMD14_READ_VAR32
|
#define CMD_WRITE_VAR32 CMD50_WRITE_VAR32
|
#define CMD_DELAY_100US CMD01_DELAY_100US
|
#define CMD_SET_USB_ID CMD40_SET_USB_ID
|
#define CMD_SET_USB_ADDR CMD10_SET_USB_ADDR
|
#define CMD_TEST_CONNECT CMD01_TEST_CONNECT
|
#define CMD_ABORT_NAK CMD00_ABORT_NAK
|
#define CMD_SET_ENDP2 CMD10_SET_ENDP2
|
#define CMD_SET_ENDP3 CMD10_SET_ENDP3
|
#define CMD_SET_ENDP4 CMD10_SET_ENDP4
|
#define CMD_SET_ENDP5 CMD10_SET_ENDP5
|
#define CMD_SET_ENDP6 CMD10_SET_ENDP6
|
#define CMD_SET_ENDP7 CMD10_SET_ENDP7
|
#define CMD_DIRTY_BUFFER CMD00_DIRTY_BUFFER
|
#define CMD_WR_USB_DATA3 CMD10_WR_USB_DATA3
|
#define CMD_WR_USB_DATA5 CMD10_WR_USB_DATA5
|
#define CMD_CLR_STALL CMD1H_CLR_STALL
|
#define CMD_SET_ADDRESS CMD1H_SET_ADDRESS
|
#define CMD_GET_DESCR CMD1H_GET_DESCR
|
#define CMD_SET_CONFIG CMD1H_SET_CONFIG
|
#define CMD_AUTO_SETUP CMD0H_AUTO_SETUP
|
#define CMD_ISSUE_TKN_X CMD2H_ISSUE_TKN_X
|
#define CMD_ISSUE_TOKEN CMD1H_ISSUE_TOKEN
|
#define CMD_DISK_INIT CMD0H_DISK_INIT
|
#define CMD_DISK_RESET CMD0H_DISK_RESET
|
#define CMD_DISK_SIZE CMD0H_DISK_SIZE
|
#define CMD_DISK_INQUIRY CMD0H_DISK_INQUIRY
|
#define CMD_DISK_READY CMD0H_DISK_READY
|
#define CMD_DISK_R_SENSE CMD0H_DISK_R_SENSE
|
#define CMD_RD_DISK_SEC CMD0H_RD_DISK_SEC
|
#define CMD_WR_DISK_SEC CMD0H_WR_DISK_SEC
|
#define CMD_DISK_MAX_LUN CMD0H_DISK_MAX_LUN
|
#endif
|
|
/* ********************************************************************************************************************* */
|
/* ²¢¿Ú·½Ê½, ״̬¶Ë¿Ú(¶ÁÃüÁî¶Ë¿Ú)µÄ붨Òå */
|
#ifndef PARA_STATE_INTB
|
#define PARA_STATE_INTB 0x80 /* ²¢¿Ú·½Ê½×´Ì¬¶Ë¿ÚµÄλ7: ÖжϱêÖ¾,µÍÓÐЧ */
|
#define PARA_STATE_BUSY 0x10 /* ²¢¿Ú·½Ê½×´Ì¬¶Ë¿ÚµÄλ4: æ±êÖ¾,¸ßÓÐЧ */
|
#endif
|
|
/* ********************************************************************************************************************* */
|
/* ´®¿Ú·½Ê½, ²Ù×÷ÃüÁîǰµÄÒýµ¼Í¬²½Âë */
|
#ifndef SER_CMD_TIMEOUT
|
#define SER_CMD_TIMEOUT 32 /* ´®¿ÚÃüÁʱʱ¼ä, µ¥Î»ÎªmS, ͬ²½ÂëÖ®¼ä¼°Í¬²½ÂëÓëÃüÁîÂëÖ®¼äµÄ¼ä¸ôÓ¦¸Ã¾¡Á¿¶Ì, ³¬Ê±ºóµÄ´¦Àí·½Ê½Îª¶ªÆú */
|
#define SER_SYNC_CODE1 0x57 /* Æô¶¯²Ù×÷µÄµÚ1¸ö´®¿Úͬ²½Âë */
|
#define SER_SYNC_CODE2 0xAB /* Æô¶¯²Ù×÷µÄµÚ2¸ö´®¿Úͬ²½Âë */
|
#endif
|
|
/* ********************************************************************************************************************* */
|
/* ²Ù×÷״̬ */
|
|
#ifndef CMD_RET_SUCCESS
|
#define CMD_RET_SUCCESS 0x51 /* ÃüÁî²Ù×÷³É¹¦ */
|
#define CMD_RET_ABORT 0x5F /* ÃüÁî²Ù×÷ʧ°Ü */
|
#endif
|
|
/* ********************************************************************************************************************* */
|
/* USBÖжÏ״̬ */
|
|
#ifndef USB_INT_EP0_SETUP
|
|
/* ÒÔÏÂ״̬´úÂëÎªÌØÊâʼþÖжÏ, Èç¹ûͨ¹ýCMD20_CHK_SUSPENDÆôÓÃUSB×ÜÏß¹ÒÆð¼ì²é, ÄÇô±ØÐë´¦ÀíUSB×ÜÏß¹ÒÆðºÍ˯Ãß»½ÐѵÄÖжÏ״̬ */
|
#define USB_INT_USB_SUSPEND 0x05 /* USB×ÜÏß¹ÒÆðʼþ */
|
#define USB_INT_WAKE_UP 0x06 /* ´Ó˯ÃßÖб»»½ÐÑʼþ */
|
|
/* ÒÔÏÂ״̬´úÂë0XHÓÃÓÚUSBÉ豸·½Ê½ */
|
/* ÄÚÖù̼þģʽÏÂÖ»ÐèÒª´¦Àí: USB_INT_EP1_OUT, USB_INT_EP1_IN, USB_INT_EP2_OUT, USB_INT_EP2_IN */
|
/* λ7-λ4Ϊ0000 */
|
/* λ3-λ2ָʾµ±Ç°ÊÂÎñ, 00=OUT, 10=IN, 11=SETUP */
|
/* λ1-λ0ָʾµ±Ç°¶Ëµã, 00=¶Ëµã0, 01=¶Ëµã1, 10=¶Ëµã2, 11=USB×ÜÏ߸´Î» */
|
#define USB_INT_EP0_SETUP 0x0C /* USB¶Ëµã0µÄSETUP */
|
#define USB_INT_EP0_OUT 0x00 /* USB¶Ëµã0µÄOUT */
|
#define USB_INT_EP0_IN 0x08 /* USB¶Ëµã0µÄIN */
|
#define USB_INT_EP1_OUT 0x01 /* USB¶Ëµã1µÄOUT */
|
#define USB_INT_EP1_IN 0x09 /* USB¶Ëµã1µÄIN */
|
#define USB_INT_EP2_OUT 0x02 /* USB¶Ëµã2µÄOUT */
|
#define USB_INT_EP2_IN 0x0A /* USB¶Ëµã2µÄIN */
|
/* USB_INT_BUS_RESET 0x0000XX11B */ /* USB×ÜÏ߸´Î» */
|
#define USB_INT_BUS_RESET1 0x03 /* USB×ÜÏ߸´Î» */
|
#define USB_INT_BUS_RESET2 0x07 /* USB×ÜÏ߸´Î» */
|
#define USB_INT_BUS_RESET3 0x0B /* USB×ÜÏ߸´Î» */
|
#define USB_INT_BUS_RESET4 0x0F /* USB×ÜÏ߸´Î» */
|
|
#endif
|
|
/* ÒÔÏÂ״̬´úÂë2XH-3XHÓÃÓÚUSBÖ÷»ú·½Ê½µÄͨѶʧ°Ü´úÂë */
|
/* λ7-λ6Ϊ00 */
|
/* λ5Ϊ1 */
|
/* λ4ָʾµ±Ç°½ÓÊÕµÄÊý¾Ý°üÊÇ·ñͬ²½ */
|
/* λ3-λ0ָʾµ¼ÖÂͨѶʧ°ÜʱUSBÉ豸µÄÓ¦´ð: 0010=ACK, 1010=NAK, 1110=STALL, 0011=DATA0, 1011=DATA1, XX00=³¬Ê± */
|
/* USB_INT_RET_ACK 0x001X0010B */ /* ´íÎó:¶ÔÓÚINÊÂÎñ·µ»ØACK */
|
/* USB_INT_RET_NAK 0x001X1010B */ /* ´íÎó:·µ»ØNAK */
|
/* USB_INT_RET_STALL 0x001X1110B */ /* ´íÎó:·µ»ØSTALL */
|
/* USB_INT_RET_DATA0 0x001X0011B */ /* ´íÎó:¶ÔÓÚOUT/SETUPÊÂÎñ·µ»ØDATA0 */
|
/* USB_INT_RET_DATA1 0x001X1011B */ /* ´íÎó:¶ÔÓÚOUT/SETUPÊÂÎñ·µ»ØDATA1 */
|
/* USB_INT_RET_TOUT 0x001XXX00B */ /* ´íÎó:·µ»Ø³¬Ê± */
|
/* USB_INT_RET_TOGX 0x0010X011B */ /* ´íÎó:¶ÔÓÚINÊÂÎñ·µ»ØÊý¾Ý²»Í¬²½ */
|
/* USB_INT_RET_PID 0x001XXXXXB */ /* ´íÎó:䶨Òå */
|
|
/* ÒÔÏÂ״̬´úÂë1XHÓÃÓÚUSBÖ÷»ú·½Ê½µÄ²Ù×÷״̬´úÂë */
|
#ifndef USB_INT_SUCCESS
|
#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_USB_READY 0x18 /* USBÉ豸ÒѾ±»³õʼ»¯(ÒѾ·ÖÅäUSBµØÖ·) */
|
#define USB_INT_DISK_READ 0x1D /* USB´æ´¢Æ÷ÇëÇóÊý¾Ý¶Á³ö */
|
#define USB_INT_DISK_WRITE 0x1E /* USB´æ´¢Æ÷ÇëÇóÊý¾ÝдÈë */
|
#define USB_INT_DISK_ERR 0x1F /* USB´æ´¢Æ÷²Ù×÷ʧ°Ü */
|
#endif
|
|
/* ÒÔÏÂ״̬´úÂëÓÃÓÚÖ÷»úÎļþģʽϵÄÎļþϵͳ´íÎóÂë */
|
#ifndef ERR_DISK_DISCON
|
#define ERR_DISK_DISCON 0x82 /* ´ÅÅÌÉÐδÁ¬½Ó,¿ÉÄÜ´ÅÅÌÒѾ¶Ï¿ª */
|
#define ERR_LARGE_SECTOR 0x84 /* ´ÅÅ̵ÄÉÈÇøÌ«´ó,Ö»Ö§³ÖÿÉÈÇø512×Ö½Ú */
|
#define ERR_TYPE_ERROR 0x92 /* ´ÅÅÌ·ÖÇøÀàÐͲ»Ö§³Ö,Ö»Ö§³ÖFAT12/FAT16/BigDOS/FAT32,ÐèÒªÓÉ´ÅÅ̹ÜÀí¹¤¾ßÖØÐ·ÖÇø */
|
#define ERR_BPB_ERROR 0xA1 /* ´ÅÅÌÉÐδ¸ñʽ»¯,»òÕß²ÎÊý´íÎó,ÐèÒªÓÉWINDOWS²ÉÓÃĬÈϲÎÊýÖØÐ¸ñʽ»¯ */
|
#define ERR_DISK_FULL 0xB1 /* ´ÅÅÌÎļþÌ«Âú,Ê£Óà¿Õ¼äÌ«ÉÙ»òÕßÒѾûÓÐ,ÐèÒª´ÅÅÌÕûÀí */
|
#define ERR_FDT_OVER 0xB2 /* Ŀ¼(Îļþ¼Ð)ÄÚÎļþÌ«¶à,ûÓпÕÏеÄĿ¼Ïî,FAT12/FAT16¸ùĿ¼ÏµÄÎļþÊýÓ¦¸ÃÉÙÓÚ512¸ö,ÐèÒª´ÅÅÌÕûÀí */
|
#define ERR_FILE_CLOSE 0xB4 /* ÎļþÒѾ¹Ø±Õ,Èç¹ûÐèҪʹÓÃ,Ó¦¸ÃÖØÐ´ò¿ªÎļþ */
|
#define ERR_OPEN_DIR 0x41 /* Ö¸¶¨Â·¾¶µÄĿ¼(Îļþ¼Ð)±»´ò¿ª */
|
#define ERR_MISS_FILE 0x42 /* Ö¸¶¨Â·¾¶µÄÎļþûÓÐÕÒµ½,¿ÉÄÜÊÇÎļþÃû³Æ´íÎó */
|
#define ERR_FOUND_NAME 0x43 /* ËÑË÷µ½ÏàÆ¥ÅäµÄÎļþÃû,»òÕßÊÇÒªÇó´ò¿ªÄ¿Â¼(Îļþ¼Ð)¶øÊµ¼Ê½á¹ûÈ´´ò¿ªÁËÎļþ */
|
/* ÒÔÏÂÎļþϵͳ´íÎóÂëÓÃÓÚÎļþϵͳ×Ó³ÌÐò */
|
#define ERR_MISS_DIR 0xB3 /* Ö¸¶¨Â·¾¶µÄij¸ö×ÓĿ¼(Îļþ¼Ð)ûÓÐÕÒµ½,¿ÉÄÜÊÇĿ¼Ãû³Æ´íÎó */
|
#define ERR_LONG_BUF_OVER 0x48 /* ³¤Îļþ»º³åÇøÒç³ö */
|
#define ERR_LONG_NAME_ERR 0x49 /* ¶ÌÎļþÃûûÓжÔÓ¦µÄ³¤ÎļþÃû»òÕß³¤ÎļþÃû´íÎó */
|
#define ERR_NAME_EXIST 0x4A /* ͬÃûµÄ¶ÌÎļþÒѾ´æÔÚ,½¨ÒéÖØÐÂÉú³ÉÁíÍâÒ»¸ö¶ÌÎļþÃû */
|
#endif
|
|
/* ********************************************************************************************************************* */
|
/* ÒÔÏÂ״̬´úÂëÓÃÓÚÖ÷»úÎļþģʽϵĴÅÅ̼°Îļþ״̬, VAR_DISK_STATUS */
|
#ifndef DEF_DISK_UNKNOWN
|
#define DEF_DISK_UNKNOWN 0x00 /* ÉÐδ³õʼ»¯,δ֪״̬ */
|
#define DEF_DISK_DISCONN 0x01 /* ´ÅÅÌûÓÐÁ¬½Ó»òÕßÒѾ¶Ï¿ª */
|
#define DEF_DISK_CONNECT 0x02 /* ´ÅÅÌÒѾÁ¬½Ó,µ«ÊÇÉÐδ³õʼ»¯»òÕßÎÞ·¨Ê¶±ð¸Ã´ÅÅÌ */
|
#define DEF_DISK_MOUNTED 0x03 /* ´ÅÅÌÒѾ³õʼ»¯³É¹¦,µ«ÊÇÉÐδ·ÖÎöÎļþϵͳ»òÕßÎļþϵͳ²»Ö§³Ö */
|
#define DEF_DISK_READY 0x10 /* ÒѾ·ÖÎö´ÅÅ̵ÄÎļþϵͳ²¢ÇÒÄܹ»Ö§³Ö */
|
#define DEF_DISK_OPEN_ROOT 0x12 /* ÒѾ´ò¿ª¸ùĿ¼,ʹÓúó±ØÐë¹Ø±Õ,×¢ÒâFAT12/FAT16¸ùĿ¼Êǹ̶¨³¤¶È */
|
#define DEF_DISK_OPEN_DIR 0x13 /* ÒѾ´ò¿ª×ÓĿ¼(Îļþ¼Ð) */
|
#define DEF_DISK_OPEN_FILE 0x14 /* ÒѾ´ò¿ªÎļþ */
|
#endif
|
|
/* ********************************************************************************************************************* */
|
/* Îļþϵͳ³£Óö¨Òå */
|
|
#ifndef DEF_SECTOR_SIZE
|
#define DEF_SECTOR_SIZE 512 /* UÅÌ»òÕßSD¿¨Ä¬ÈϵÄÎïÀíÉÈÇøµÄ´óС */
|
#endif
|
|
#ifndef DEF_WILDCARD_CHAR
|
#define DEF_WILDCARD_CHAR 0x2A /* ·¾¶ÃûµÄͨÅä·û '*' */
|
#define DEF_SEPAR_CHAR1 0x5C /* ·¾¶ÃûµÄ·Ö¸ô·û '\' */
|
#define DEF_SEPAR_CHAR2 0x2F /* ·¾¶ÃûµÄ·Ö¸ô·û '/' */
|
#define DEF_FILE_YEAR 2004 /* ĬÈÏÎļþÈÕÆÚ: 2004Äê */
|
#define DEF_FILE_MONTH 1 /* ĬÈÏÎļþÈÕÆÚ: 1Ô */
|
#define DEF_FILE_DATE 1 /* ĬÈÏÎļþÈÕÆÚ: 1ÈÕ */
|
#endif
|
|
#ifndef ATTR_DIRECTORY
|
|
/* FATÊý¾ÝÇøÖÐÎļþĿ¼ÐÅÏ¢ */
|
typedef struct _FAT_DIR_INFO {
|
UINT8 DIR_Name[11]; /* 00H,ÎļþÃû,¹²11×Ö½Ú,²»×ã´¦Ìî¿Õ¸ñ */
|
UINT8 DIR_Attr; /* 0BH,ÎļþÊôÐÔ,²Î¿¼ºóÃæµÄ˵Ã÷ */
|
UINT8 DIR_NTRes; /* 0CH */
|
UINT8 DIR_CrtTimeTenth; /* 0DH,Îļþ´´½¨µÄʱ¼ä,ÒÔ0.1Ã뵥λ¼ÆÊý */
|
UINT8 DIR_CrtTime[2]; /* 0EH,Îļþ´´½¨µÄʱ¼ä */
|
UINT8 DIR_CrtDate[2]; /* 10H,Îļþ´´½¨µÄÈÕÆÚ */
|
UINT8 DIR_LstAccDate[2]; /* 12H,×î½üÒ»´Î´æÈ¡²Ù×÷µÄÈÕÆÚ */
|
UINT8 DIR_FstClusHI[2]; /* 14H */
|
UINT8 DIR_WrtTime[2]; /* 16H,ÎļþÐÞ¸Äʱ¼ä,²Î¿¼Ç°ÃæµÄºêMAKE_FILE_TIME */
|
UINT8 DIR_WrtDate[2]; /* 18H,ÎļþÐÞ¸ÄÈÕÆÚ,²Î¿¼Ç°ÃæµÄºêMAKE_FILE_DATE */
|
UINT8 DIR_FstClusLO[2]; /* 1AH */
|
UINT8 DIR_FileSize[4]; /* 1CH,Îļþ³¤¶È */
|
} FAT_DIR_INFO, *P_FAT_DIR_INFO; /* 20H */
|
|
/* ÎļþÊôÐÔ */
|
#define ATTR_READ_ONLY 0x01 /* ÎļþΪֻ¶ÁÊôÐÔ */
|
#define ATTR_HIDDEN 0x02 /* ÎļþΪÒþº¬ÊôÐÔ */
|
#define ATTR_SYSTEM 0x04 /* ÎļþΪϵͳÊôÐÔ */
|
#define ATTR_VOLUME_ID 0x08 /* ¾í±ê */
|
#define ATTR_DIRECTORY 0x10 /* ×ÓĿ¼(Îļþ¼Ð) */
|
#define ATTR_ARCHIVE 0x20 /* ÎļþΪ´æµµÊôÐÔ */
|
#define ATTR_LONG_NAME ( ATTR_READ_ONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_VOLUME_ID ) /* ³¤ÎļþÃûÊôÐÔ */
|
#define ATTR_LONG_NAME_MASK ( ATTR_LONG_NAME | ATTR_DIRECTORY | ATTR_ARCHIVE )
|
/* ÎļþÊôÐÔ UINT8 */
|
/* bit0 bit1 bit2 bit3 bit4 bit5 bit6 bit7 */
|
/* Ö» Òþ ϵ ¾í Ä¿ ´æ 䶨Òå */
|
/* ¶Á ²Ø ͳ ±ê ¼ µµ */
|
/* Îļþʱ¼ä UINT16 */
|
/* Time = (Hour<<11) + (Minute<<5) + (Second>>1) */
|
#define MAKE_FILE_TIME( h, m, s ) ( (h<<11) + (m<<5) + (s>>1) ) /* Éú³ÉÖ¸¶¨Ê±·ÖÃëµÄÎļþʱ¼äÊý¾Ý */
|
/* ÎļþÈÕÆÚ UINT16 */
|
/* Date = ((Year-1980)<<9) + (Month<<5) + Day */
|
#define MAKE_FILE_DATE( y, m, d ) ( ((y-1980)<<9) + (m<<5) + d ) /* Éú³ÉÖ¸¶¨ÄêÔÂÈÕµÄÎļþÈÕÆÚÊý¾Ý */
|
|
#define LONE_NAME_MAX_CHAR 510 //(255*2) /* ³¤ÎļþÃû×î¶à×Ö·ûÊý/×Ö½ÚÊý */
|
#define LONG_NAME_PER_DIR 26 /* ³¤ÎļþÃûÔÚÿ¸öÎļþĿ¼ÐÅÏ¢½á¹¹ÖеÄ×Ö·ûÊý/×Ö½ÚÊý */
|
|
#endif
|
|
/* ********************************************************************************************************************* */
|
/* SCSIÃüÁîºÍÊý¾ÝÊäÈëÊä³ö½á¹¹ */
|
|
#ifndef SPC_CMD_INQUIRY
|
|
/* SCSIÃüÁîÂë */
|
#define SPC_CMD_INQUIRY 0x12
|
#define SPC_CMD_READ_CAPACITY 0x25
|
#define SPC_CMD_READ10 0x28
|
#define SPC_CMD_WRITE10 0x2A
|
#define SPC_CMD_TEST_READY 0x00
|
#define SPC_CMD_REQUEST_SENSE 0x03
|
#define SPC_CMD_MODESENSE6 0x1A
|
#define SPC_CMD_MODESENSE10 0x5A
|
#define SPC_CMD_START_STOP 0x1B
|
|
/* BulkOnlyÐÒéµÄÃüÁî¿é */
|
typedef struct _BULK_ONLY_CBW {
|
UINT32 CBW_Sig;
|
UINT32 CBW_Tag;
|
UINT8 CBW_DataLen0; /* 08H,ÊäÈë: Êý¾Ý´«Ê䳤¶È,¶ÔÓÚÊäÈëÊý¾ÝÆäÓÐЧֵÊÇ0µ½48,¶ÔÓÚÊä³öÊý¾ÝÆäÓÐЧֵΪ0µ½33 */
|
UINT8 CBW_DataLen1;
|
UINT16 CBW_DataLen2;
|
UINT8 CBW_Flag; /* 0CH,ÊäÈë: ´«Êä·½ÏòµÈ±êÖ¾,λ7Ϊ1ÔòÊäÈëÊý¾Ý,λΪ0ÔòÊä³öÊý¾Ý»òÕßûÓÐÊý¾Ý */
|
UINT8 CBW_LUN;
|
UINT8 CBW_CB_Len; /* 0EH,ÊäÈë: ÃüÁî¿éµÄ³¤¶È,ÓÐЧֵÊÇ1µ½16 */
|
UINT8 CBW_CB_Buf[16]; /* 0FH,ÊäÈë: ÃüÁî¿é,¸Ã»º³åÇø×î¶àΪ16¸ö×Ö½Ú */
|
} BULK_ONLY_CBW, *P_BULK_ONLY_CBW; /* BulkOnlyÐÒéµÄÃüÁî¿é, ÊäÈëCBW½á¹¹ */
|
|
/* INQUIRYÃüÁîµÄ·µ»ØÊý¾Ý */
|
typedef struct _INQUIRY_DATA {
|
UINT8 DeviceType; /* 00H, É豸ÀàÐÍ */
|
UINT8 RemovableMedia; /* 01H, λ7Ϊ1˵Ã÷ÊÇÒÆ¶¯´æ´¢ */
|
UINT8 Versions; /* 02H, ÐÒé°æ±¾ */
|
UINT8 DataFormatAndEtc; /* 03H, Ö¸¶¨·µ»ØÊý¾Ý¸ñʽ */
|
UINT8 AdditionalLength; /* 04H, ºóÐøÊý¾ÝµÄ³¤¶È */
|
UINT8 Reserved1;
|
UINT8 Reserved2;
|
UINT8 MiscFlag; /* 07H, һЩ¿ØÖƱêÖ¾ */
|
UINT8 VendorIdStr[8]; /* 08H, ³§ÉÌÐÅÏ¢ */
|
UINT8 ProductIdStr[16]; /* 10H, ²úÆ·ÐÅÏ¢ */
|
UINT8 ProductRevStr[4]; /* 20H, ²úÆ·°æ±¾ */
|
} INQUIRY_DATA, *P_INQUIRY_DATA; /* 24H */
|
|
/* REQUEST SENSEÃüÁîµÄ·µ»ØÊý¾Ý */
|
typedef struct _SENSE_DATA {
|
UINT8 ErrorCode; /* 00H, ´íÎó´úÂë¼°ÓÐЧλ */
|
UINT8 SegmentNumber;
|
UINT8 SenseKeyAndEtc; /* 02H, Ö÷¼üÂë */
|
UINT8 Information0;
|
UINT8 Information1;
|
UINT8 Information2;
|
UINT8 Information3;
|
UINT8 AdditSenseLen; /* 07H, ºóÐøÊý¾ÝµÄ³¤¶È */
|
UINT8 CmdSpecInfo[4];
|
UINT8 AdditSenseCode; /* 0CH, ¸½¼Ó¼üÂë */
|
UINT8 AddSenCodeQual; /* 0DH, ÏêϸµÄ¸½¼Ó¼üÂë */
|
UINT8 FieldReplaUnit;
|
UINT8 SenseKeySpec[3];
|
} SENSE_DATA, *P_SENSE_DATA; /* 12H */
|
|
#endif
|
|
/* ********************************************************************************************************************* */
|
/* Ö÷»úÎļþģʽϵÄÊý¾ÝÊäÈëºÍÊä³ö½á¹¹ */
|
|
#ifndef MAX_FILE_NAME_LEN
|
|
#define MAX_FILE_NAME_LEN (13+1) /* ÎļþÃû×î´ó³¤¶È,×î´ó³¤¶ÈÊÇ1¸ö¸ùĿ¼·û+8¸öÖ÷ÎļþÃû+1¸öСÊýµã+3¸öÀàÐÍÃû+½áÊø·û=14 */
|
/*
|
// ÃüÁîµÄÊäÈëÊý¾ÝºÍÊä³öÊý¾Ý /
|
typedef union _CH376_CMD_DATA {
|
struct {
|
UINT8 mBuffer[ MAX_FILE_NAME_LEN ];
|
} Default;
|
|
INQUIRY_DATA DiskMountInq; // ·µ»Ø: INQUIRYÃüÁîµÄ·µ»ØÊý¾Ý
|
// CMD0H_DISK_MOUNT: ³õʼ»¯´ÅÅ̲¢²âÊÔ´ÅÅÌÊÇ·ñ¾ÍÐ÷,Ê×´ÎÖ´ÐÐʱ
|
|
FAT_DIR_INFO OpenDirInfo; // ·µ»Ø: ö¾Ùµ½µÄÎļþĿ¼ÐÅÏ¢
|
CMD0H_FILE_OPEN: ö¾ÙÎļþºÍĿ¼(Îļþ¼Ð)
|
|
FAT_DIR_INFO EnumDirInfo; // ·µ»Ø: ö¾Ùµ½µÄÎļþĿ¼ÐÅÏ¢
|
|
// CMD0H_FILE_ENUM_GO: ¼ÌÐøÃ¶¾ÙÎļþºÍĿ¼(Îļþ¼Ð)
|
|
struct {
|
UINT8 mUpdateFileSz; // ÊäÈë²ÎÊý: ÊÇ·ñÔÊÐí¸üÐÂÎļþ³¤¶È, 0Ôò½ûÖ¹¸ü㤶È
|
} FileCLose; // CMD1H_FILE_CLOSE: ¹Ø±Õµ±Ç°ÒѾ´ò¿ªµÄÎļþ
|
|
struct {
|
UINT8 mDirInfoIndex; // ÊäÈë²ÎÊý: Ö¸¶¨ÐèÒª¶ÁÈ¡µÄĿ¼ÐÅÏ¢½á¹¹ÔÚÉÈÇøÄÚµÄË÷ÒýºÅ, 0FFHÔòΪµ±Ç°ÒѾ´ò¿ªµÄÎļþ
|
} DirInfoRead; // CMD1H_DIR_INFO_READ: ¶ÁÈ¡ÎļþµÄĿ¼ÐÅÏ¢
|
|
union {
|
UINT32 mByteOffset; // ÊäÈë²ÎÊý: Æ«ÒÆ×Ö½ÚÊý,ÒÔ×Ö½ÚΪµ¥Î»µÄÆ«ÒÆÁ¿(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ)
|
UINT32 mSectorLba; // ·µ»Ø: µ±Ç°ÎļþÖ¸Õë¶ÔÓ¦µÄ¾ø¶ÔÏßÐÔÉÈÇøºÅ,0FFFFFFFFHÔòÒѵ½Îļþβ(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ)
|
} ByteLocate; // CMD4H_BYTE_LOCATE: ÒÔ×Ö½ÚΪµ¥Î»Òƶ¯µ±Ç°ÎļþÖ¸Õë
|
|
struct {
|
UINT16 mByteCount; // ÊäÈë²ÎÊý: ÇëÇó¶ÁÈ¡µÄ×Ö½ÚÊý(×ܳ¤¶È16λ,µÍ×Ö½ÚÔÚǰ)
|
} ByteRead; // CMD2H_BYTE_READ: ÒÔ×Ö½ÚΪµ¥Î»´Óµ±Ç°Î»ÖöÁÈ¡Êý¾Ý¿é
|
|
struct {
|
UINT16 mByteCount; // ÊäÈë²ÎÊý: ÇëÇóдÈëµÄ×Ö½ÚÊý(×ܳ¤¶È16λ,µÍ×Ö½ÚÔÚǰ)
|
} ByteWrite; // CMD2H_BYTE_WRITE: ÒÔ×Ö½ÚΪµ¥Î»Ïòµ±Ç°Î»ÖÃдÈëÊý¾Ý¿é
|
|
union {
|
UINT32 mSectorOffset; // ÊäÈë²ÎÊý: Æ«ÒÆÉÈÇøÊý,ÒÔÉÈÇøÎªµ¥Î»µÄÆ«ÒÆÁ¿(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ)
|
UINT32 mSectorLba; // ·µ»Ø: µ±Ç°ÎļþÖ¸Õë¶ÔÓ¦µÄ¾ø¶ÔÏßÐÔÉÈÇøºÅ,0FFFFFFFFHÔòÒѵ½Îļþβ(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ)
|
} SectorLocate; // CMD4H_SEC_LOCATE: ÒÔÉÈÇøÎªµ¥Î»Òƶ¯µ±Ç°ÎļþÖ¸Õë
|
|
struct {
|
UINT8 mSectorCount; // ÊäÈë²ÎÊý: ÇëÇó¶ÁÈ¡µÄÉÈÇøÊý
|
// ·µ»Ø: ÔÊÐí¶ÁÈ¡µÄÉÈÇøÊý
|
UINT8 mReserved1;
|
UINT8 mReserved2;
|
UINT8 mReserved3;
|
UINT32 mStartSector; // ·µ»Ø: ÔÊÐí¶ÁÈ¡µÄÉÈÇø¿éµÄÆðʼ¾ø¶ÔÏßÐÔÉÈÇøºÅ(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ)
|
} SectorRead; // CMD1H_SEC_READ: ÒÔÉÈÇøÎªµ¥Î»´Óµ±Ç°Î»ÖöÁÈ¡Êý¾Ý¿é
|
|
struct {
|
UINT8 mSectorCount; // ÊäÈë²ÎÊý: ÇëÇóдÈëµÄÉÈÇøÊý
|
// ·µ»Ø: ÔÊÐíдÈëµÄÉÈÇøÊý
|
UINT8 mReserved1;
|
UINT8 mReserved2;
|
UINT8 mReserved3;
|
UINT32 mStartSector; // ·µ»Ø: ÔÊÐíдÈëµÄÉÈÇø¿éµÄÆðʼ¾ø¶ÔÏßÐÔÉÈÇøºÅ(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ)
|
} SectorWrite; // CMD1H_SEC_WRITE: ÒÔÉÈÇøÎªµ¥Î»ÔÚµ±Ç°Î»ÖÃдÈëÊý¾Ý¿é
|
|
struct {
|
UINT32 mDiskSizeSec; // ·µ»Ø: Õû¸öÎïÀí´ÅÅ̵Ä×ÜÉÈÇøÊý(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ)
|
} DiskCapacity; // CMD0H_DISK_CAPACITY: ²éѯ´ÅÅÌÎïÀíÈÝÁ¿
|
|
struct {
|
UINT32 mTotalSector; // ·µ»Ø: µ±Ç°Âß¼Å̵Ä×ÜÉÈÇøÊý(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ)
|
UINT32 mFreeSector; // ·µ»Ø: µ±Ç°Âß¼Å̵ÄÊ£ÓàÉÈÇøÊý(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ)
|
UINT8 mDiskFat; // ·µ»Ø: µ±Ç°Âß¼Å̵ÄFATÀàÐÍ,1-FAT12,2-FAT16,3-FAT32
|
} DiskQuery; // CMD_DiskQuery, ²éѯ´ÅÅÌÐÅÏ¢
|
|
BULK_ONLY_CBW DiskBocCbw; // ÊäÈë²ÎÊý: CBWÃüÁî½á¹¹
|
// CMD0H_DISK_BOC_CMD: ¶ÔUSB´æ´¢Æ÷Ö´ÐÐBulkOnly´«ÊäÐÒéµÄÃüÁî
|
|
struct {
|
UINT8 mMaxLogicUnit; // ·µ»Ø: USB´æ´¢Æ÷µÄ×î´óÂß¼µ¥ÔªºÅ
|
} DiskMaxLun; // CMD0H_DISK_MAX_LUN: ¿ØÖÆ´«Êä-»ñÈ¡USB´æ´¢Æ÷×î´óÂß¼µ¥ÔªºÅ
|
|
INQUIRY_DATA DiskInitInq; // ·µ»Ø: INQUIRYÃüÁîµÄ·µ»ØÊý¾Ý
|
// CMD0H_DISK_INIT: ³õʼ»¯USB´æ´¢Æ÷
|
|
INQUIRY_DATA DiskInqData; // ·µ»Ø: INQUIRYÃüÁîµÄ·µ»ØÊý¾Ý
|
//CMD0H_DISK_INQUIRY: ²éѯUSB´æ´¢Æ÷ÌØÐÔ
|
|
SENSE_DATA ReqSenseData; // ·µ»Ø: REQUEST SENSEÃüÁîµÄ·µ»ØÊý¾Ý
|
// CMD0H_DISK_R_SENSE: ¼ì²éUSB´æ´¢Æ÷´íÎó
|
|
struct {
|
UINT32 mDiskSizeSec; // ·µ»Ø: Õû¸öÎïÀí´ÅÅ̵Ä×ÜÉÈÇøÊý(×ܳ¤¶È32λ,¸ß×Ö½ÚÔÚǰ)
|
} DiskSize; // CMD0H_DISK_SIZE: »ñÈ¡USB´æ´¢Æ÷µÄÈÝÁ¿
|
|
struct {
|
UINT32 mStartSector; // ÊäÈë²ÎÊý: LBAÉÈÇøµØÖ·(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ)
|
UINT8 mSectorCount; // ÊäÈë²ÎÊý: ÇëÇó¶ÁÈ¡µÄÉÈÇøÊý
|
} DiskRead; // CMD5H_DISK_READ: ´ÓUSB´æ´¢Æ÷¶ÁÊý¾Ý¿é(ÒÔÉÈÇøÎªµ¥Î»)
|
|
struct {
|
UINT32 mStartSector; // ÊäÈë²ÎÊý: LBAÉÈÇøµØÖ·(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ)
|
UINT8 mSectorCount; // ÊäÈë²ÎÊý: ÇëÇóдÈëµÄÉÈÇøÊý
|
} DiskWrite; // CMD5H_DISK_WRITE: ÏòUSB´æ´¢Æ÷дÊý¾Ý¿é(ÒÔÉÈÇøÎªµ¥Î»)
|
} CH376_CMD_DATA, *P_CH376_CMD_DATA;
|
*/
|
#endif
|
|
/* ********************************************************************************************************************* */
|
/* Ö÷»úÎļþģʽϵÄÎļþϵͳ±äÁ¿µÄµØÖ· */
|
|
#ifndef VAR_FILE_SIZE
|
|
/* 8λ/µ¥×Ö½Ú±äÁ¿ */
|
#define VAR_SYS_BASE_INFO 0x20 /* µ±Ç°ÏµÍ³µÄ»ù±¾ÐÅÏ¢ */
|
/* λ6ÓÃÓÚָʾUSB´æ´¢É豸µÄ×ÓÀà±ðSubClass-Code, λ6Ϊ0Ôò˵Ã÷×ÓÀà±ðΪ6, λ6Ϊ1Ôò˵Ã÷×ÓÀà±ðÊÇ·Ç6µÄÆäËüÖµ */
|
/* λ5ÓÃÓÚָʾUSBÉ豸·½Ê½ÏµÄUSBÅäÖÃ״̬ºÍUSBÖ÷»ú·½Ê½ÏµÄUSBÉ豸Á¬½Ó״̬ */
|
/* USBÉ豸·½Ê½ÏÂ, λ5Ϊ1ÔòUSBÅäÖÃÍê³É, λ5λ0ÔòÉÐδÅäÖà */
|
/* USBÖ÷»ú·½Ê½ÏÂ, λ5Ϊ1ÔòUSB¶Ë¿Ú´æÔÚUSBÉ豸, λ5λ0ÔòUSB¶Ë¿ÚûÓÐUSBÉ豸 */
|
/* λ4ÓÃÓÚָʾUSBÉ豸·½Ê½ÏµĻº³åÇøËø¶¨×´Ì¬, λ4Ϊ1Ôò˵Ã÷USB»º³åÇø´¦ÓÚËø¶¨×´Ì¬, λ6Ϊ1Ôò˵Ã÷ÒѾÊÍ·Å */
|
/* ÆäËüλ, ±£Áô,ÇëÎðÐÞ¸Ä */
|
#define VAR_RETRY_TIMES 0x25 /* USBÊÂÎñ²Ù×÷µÄÖØÊÔ´ÎÊý */
|
/* λ7Ϊ0ÔòÊÕµ½NAKʱ²»ÖØÊÔ, λ7Ϊ1λ6Ϊ0ÔòÊÕµ½NAKʱÎÞÏÞÖØÊÔ(¿ÉÒÔÓÃCMD_ABORT_NAKÃüÁî·ÅÆúÖØÊÔ), λ7Ϊ1λ6Ϊ1ÔòÊÕµ½NAKʱ×î¶àÖØÊÔ3Ãë */
|
/* λ5~λ0Ϊ³¬Ê±ºóµÄÖØÊÔ´ÎÊý */
|
#define VAR_FILE_BIT_FLAG 0x26 /* Ö÷»úÎļþģʽϵÄλ±êÖ¾ */
|
/* λ1ºÍλ0, Âß¼Å̵ÄFATÎļþϵͳ±êÖ¾, 00-FAT12, 01-FAT16, 10-FAT32, 11-·Ç·¨ */
|
/* λ2, µ±Ç°»º³åÇøÖеÄFAT±íÊý¾ÝÊÇ·ñ±»Ð޸ıêÖ¾, 0-δÐÞ¸Ä, 1-ÒÑÐÞ¸Ä */
|
/* λ3, Îļþ³¤¶ÈÐèÒªÐ޸ıêÖ¾, µ±Ç°Îļþ±»×·¼ÓÊý¾Ý, 0-δ׷¼ÓÎÞÐèÐÞ¸Ä, 1-ÒÑ×·¼ÓÐèÒªÐÞ¸Ä */
|
/* ÆäËüλ, ±£Áô,ÇëÎðÐÞ¸Ä */
|
#define VAR_DISK_STATUS 0x2B /* Ö÷»úÎļþģʽϵĴÅÅ̼°Îļþ״̬ */
|
#define VAR_SD_BIT_FLAG 0x30 /* Ö÷»úÎļþģʽÏÂSD¿¨µÄλ±êÖ¾ */
|
/* λ0, SD¿¨°æ±¾, 0-Ö»Ö§³ÖSDµÚÒ»°æ,1-Ö§³ÖSDµÚ¶þ°æ */
|
/* λ1, ×Ô¶¯Ê¶±ð, 0-SD¿¨, 1-MMC¿¨ */
|
/* λ2, ×Ô¶¯Ê¶±ð, 0-±ê×¼ÈÝÁ¿SD¿¨, 1-´óÈÝÁ¿SD¿¨(HC-SD) */
|
/* λ4, ACMD41ÃüÁʱ */
|
/* λ5, CMD1ÃüÁʱ */
|
/* λ6, CMD58ÃüÁʱ */
|
/* ÆäËüλ, ±£Áô,ÇëÎðÐÞ¸Ä */
|
#define VAR_UDISK_TOGGLE 0x31 /* USB´æ´¢É豸µÄBULK-IN/BULK-OUT¶ËµãµÄͬ²½±êÖ¾ */
|
/* λ7, Bulk-In¶ËµãµÄͬ²½±êÖ¾ */
|
/* λ6, Bulk-In¶ËµãµÄͬ²½±êÖ¾ */
|
/* λ5~λ0, ±ØÐëΪ0 */
|
#define VAR_UDISK_LUN 0x34 /* USB´æ´¢É豸µÄÂß¼µ¥ÔªºÅ */
|
/* λ7~λ4, USB´æ´¢É豸µÄµ±Ç°Âß¼µ¥ÔªºÅ,CH376³õʼ»¯USB´æ´¢É豸ºó,ĬÈÏÊÇ·ÃÎÊ0#Âß¼µ¥Ôª */
|
/* λ3~λ0, USB´æ´¢É豸µÄ×î´óÂß¼µ¥ÔªºÅ,¼Ó1ºóµÈÓÚÂß¼µ¥ÔªÊý */
|
#define VAR_SEC_PER_CLUS 0x38 /* Âß¼Å̵Äÿ´ØÉÈÇøÊý */
|
#define VAR_FILE_DIR_INDEX 0x3B /* µ±Ç°ÎļþĿ¼ÐÅÏ¢ÔÚÉÈÇøÄÚµÄË÷ÒýºÅ */
|
#define VAR_CLUS_SEC_OFS 0x3C /* µ±Ç°ÎļþÖ¸ÕëÔÚ´ØÄÚµÄÉÈÇøÆ«ÒÆ,Ϊ0xFFÔòÖ¸ÏòÎļþĩβ,´Ø½áÊø */
|
|
/* 32λ/4×Ö½Ú±äÁ¿ */
|
#define VAR_DISK_ROOT 0x44 /* ¶ÔÓÚFAT16ÅÌΪ¸ùĿ¼ռÓÃÉÈÇøÊý,¶ÔÓÚFAT32ÅÌΪ¸ùĿ¼Æðʼ´ØºÅ(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
#define VAR_DSK_TOTAL_CLUS 0x48 /* Âß¼Å̵Ä×Ü´ØÊý(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
#define VAR_DSK_START_LBA 0x4C /* Âß¼ÅÌµÄÆðʼ¾ø¶ÔÉÈÇøºÅLBA(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
#define VAR_DSK_DAT_START 0x50 /* Âß¼Å̵ÄÊý¾ÝÇøÓòµÄÆðʼLBA(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
#define VAR_LBA_BUFFER 0x54 /* µ±Ç°´ÅÅÌÊý¾Ý»º³åÇøµÄÊý¾Ý¶ÔÓ¦µÄLBA(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
#define VAR_LBA_CURRENT 0x58 /* µ±Ç°¶ÁдµÄ´ÅÅÌÆðʼLBAµØÖ·(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
#define VAR_FAT_DIR_LBA 0x5C /* µ±Ç°ÎļþĿ¼ÐÅÏ¢ËùÔÚµÄÉÈÇøLBAµØÖ·(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
#define VAR_START_CLUSTER 0x60 /* µ±Ç°Îļþ»òÕßĿ¼(Îļþ¼Ð)µÄÆðʼ´ØºÅ(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
#define VAR_CURRENT_CLUST 0x64 /* µ±Ç°ÎļþµÄµ±Ç°´ØºÅ(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
#define VAR_FILE_SIZE 0x68 /* µ±Ç°ÎļþµÄ³¤¶È(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
#define VAR_CURRENT_OFFSET 0x6C /* µ±Ç°ÎļþÖ¸Õë,µ±Ç°¶ÁдλÖõÄ×Ö½ÚÆ«ÒÆ(×ܳ¤¶È32λ,µÍ×Ö½ÚÔÚǰ) */
|
|
#endif
|
|
/* ********************************************************************************************************************* */
|
/* ³£ÓÃUSB¶¨Òå */
|
|
/* USBµÄ°ü±êʶPID, Ö÷»ú·½Ê½¿ÉÄÜÓõ½ */
|
#ifndef DEF_USB_PID_SETUP
|
#define DEF_USB_PID_NULL 0x00 /* ±£ÁôPID, 䶨Òå */
|
#define DEF_USB_PID_SOF 0x05
|
#define DEF_USB_PID_SETUP 0x0D
|
#define DEF_USB_PID_IN 0x09
|
#define DEF_USB_PID_OUT 0x01
|
#define DEF_USB_PID_ACK 0x02
|
#define DEF_USB_PID_NAK 0x0A
|
#define DEF_USB_PID_STALL 0x0E
|
#define DEF_USB_PID_DATA0 0x03
|
#define DEF_USB_PID_DATA1 0x0B
|
#define DEF_USB_PID_PRE 0x0C
|
#endif
|
|
/* USBÇëÇóÀàÐÍ, ÍâÖù̼þģʽ¿ÉÄÜÓõ½ */
|
#ifndef DEF_USB_REQ_TYPE
|
#define DEF_USB_REQ_READ 0x80 /* ¿ØÖƶÁ²Ù×÷ */
|
#define DEF_USB_REQ_WRITE 0x00 /* ¿ØÖÆÐ´²Ù×÷ */
|
#define DEF_USB_REQ_TYPE 0x60 /* ¿ØÖÆÇëÇóÀàÐÍ */
|
#define DEF_USB_REQ_STAND 0x00 /* ±ê×¼ÇëÇó */
|
#define DEF_USB_REQ_CLASS 0x20 /* É豸ÀàÇëÇó */
|
#define DEF_USB_REQ_VENDOR 0x40 /* ³§ÉÌÇëÇó */
|
#define DEF_USB_REQ_RESERVE 0x60 /* ±£ÁôÇëÇó */
|
#endif
|
|
/* USB±ê×¼É豸ÇëÇó, RequestTypeµÄλ6λ5=00(Standard), ÍâÖù̼þģʽ¿ÉÄÜÓõ½ */
|
#ifndef DEF_USB_GET_DESCR
|
#define DEF_USB_CLR_FEATURE 0x01
|
#define DEF_USB_SET_FEATURE 0x03
|
#define DEF_USB_GET_STATUS 0x00
|
#define DEF_USB_SET_ADDRESS 0x05
|
#define DEF_USB_GET_DESCR 0x06
|
#define DEF_USB_SET_DESCR 0x07
|
#define DEF_USB_GET_CONFIG 0x08
|
#define DEF_USB_SET_CONFIG 0x09
|
#define DEF_USB_GET_INTERF 0x0A
|
#define DEF_USB_SET_INTERF 0x0B
|
#define DEF_USB_SYNC_FRAME 0x0C
|
#endif
|
|
/* ********************************************************************************************************************* */
|
|
#endif
|