?? ch375hfm.h
字號(hào):
/* 2004.06.05, 2004.09.20, 2004.10.22, 2004.11.20, 2004.12.12, 2004.12.28, 2005.01.04, 2005.01.12, 2005.01.26, 2005.03.01, 2005.07.29, 2005.12.28, 2006.08.02
****************************************
** Copyright (C) W.ch 1999-2005 **
** Web: http://www.winchiphead.com **
****************************************
** USB Host File Interface for CH375 **
** TC2.0@PC, KEIL_C_2.41@ARM **
** Keil 3.xx版本用ARM公司的編譯程序 **
****************************************
*/
/* CH375 主機(jī)文件系統(tǒng)接口 V3.0 */
/* 支持: FAT12/FAT16/FAT32 */
/* ARM單片機(jī), ARM指令, 支持ARM/Thumb相互調(diào)用, 小端數(shù)據(jù)格式, 查詢方式或者中斷方式 */
#ifndef __CH375HF_H__
#define __CH375HF_H__
#define CH375_LIB_VER 0x30
#ifdef __cplusplus
extern "C" {
#endif
/* FILE: CH375INC.H */
/* ********************************************************************************************************************* */
/* 硬件特性 */
#define CH375_MAX_DATA_LEN 0x40 /* 最大數(shù)據(jù)包的長度, 內(nèi)部緩沖區(qū)的長度 */
/* ********************************************************************************************************************* */
/* 命令代碼 */
#define CMD_RESET_ALL 0x05 /* 執(zhí)行硬件復(fù)位 */
#define CMD_CHECK_EXIST 0x06 /* 測(cè)試工作狀態(tài) */
/* 輸入: 任意數(shù)據(jù) */
/* 輸出: 輸入數(shù)據(jù)的按位取反 */
#define CMD_SET_USB_ID 0x12 /* 設(shè)備方式: 設(shè)置USB廠商VID和產(chǎn)品PID */
/* 輸入: 廠商ID低字節(jié), 廠商ID高字節(jié), 產(chǎn)品ID低字節(jié), 產(chǎn)品ID高字節(jié) */
#define CMD_SET_USB_ADDR 0x13 /* 設(shè)置USB地址 */
/* 輸入: 地址值 */
#define CMD_SET_USB_MODE 0x15 /* 設(shè)置USB工作模式 */
/* 輸入: 模式代碼 */
/* 00H=未啟用的設(shè)備方式, 01H=已啟用的設(shè)備方式并且使用外部固件模式, 02H=已啟用的設(shè)備方式并且使用內(nèi)置固件模式, 03H=已啟用的設(shè)備方式并且使用中斷端點(diǎn)和內(nèi)置固件模式 */
/* 04H=未啟用的主機(jī)方式, 05H=已啟用的主機(jī)方式, 06H=已啟用的主機(jī)方式并且自動(dòng)產(chǎn)生SOF包, 07H=已啟用的主機(jī)方式并且復(fù)位USB總線 */
/* 輸出: 操作狀態(tài)( CMD_RET_SUCCESS或CMD_RET_ABORT, 其它值說明操作未完成 ) */
#define CMD_SET_ENDP2 0x18 /* 設(shè)備方式: 設(shè)置USB端點(diǎn)0的接收器 */
/* 輸入: 工作方式 */
/* 位7為1則位6為同步觸發(fā)位, 否則同步觸發(fā)位不變 */
/* 位3~位0為事務(wù)響應(yīng)方式: 0000-就緒ACK, 1110-正忙NAK, 1111-錯(cuò)誤STALL */
#define CMD_SET_ENDP3 0x19 /* 設(shè)備方式: 設(shè)置USB端點(diǎn)0的發(fā)送器 */
/* 輸入: 工作方式 */
/* 位7為1則位6為同步觸發(fā)位, 否則同步觸發(fā)位不變 */
/* 位3~位0為事務(wù)響應(yīng)方式: 0000~1000-就緒ACK, 1110-正忙NAK, 1111-錯(cuò)誤STALL */
#define CMD_SET_ENDP4 0x1A /* 設(shè)備方式: 設(shè)置USB端點(diǎn)1的接收器 */
/* 輸入: 工作方式 */
/* 位7為1則位6為同步觸發(fā)位, 否則同步觸發(fā)位不變 */
/* 位3~位0為事務(wù)響應(yīng)方式: 0000-就緒ACK, 1110-正忙NAK, 1111-錯(cuò)誤STALL */
#define CMD_SET_ENDP5 0x1B /* 設(shè)備方式: 設(shè)置USB端點(diǎn)1的發(fā)送器 */
/* 輸入: 工作方式 */
/* 位7為1則位6為同步觸發(fā)位, 否則同步觸發(fā)位不變 */
/* 位3~位0為事務(wù)響應(yīng)方式: 0000~1000-就緒ACK, 1110-正忙NAK, 1111-錯(cuò)誤STALL */
#define CMD_SET_ENDP6 0x1C /* 設(shè)置USB端點(diǎn)2/主機(jī)端點(diǎn)的接收器 */
/* 輸入: 工作方式 */
/* 位7為1則位6為同步觸發(fā)位, 否則同步觸發(fā)位不變 */
/* 位3~位0為事務(wù)響應(yīng)方式: 0000-就緒ACK, 1101-就緒但不返回ACK, 1110-正忙NAK, 1111-錯(cuò)誤STALL */
#define CMD_SET_ENDP7 0x1D /* 設(shè)置USB端點(diǎn)2/主機(jī)端點(diǎn)的發(fā)送器 */
/* 輸入: 工作方式 */
/* 位7為1則位6為同步觸發(fā)位, 否則同步觸發(fā)位不變 */
/* 位3~位0為事務(wù)響應(yīng)方式: 0000-就緒ACK, 1101-就緒但無須應(yīng)答, 1110-正忙NAK, 1111-錯(cuò)誤STALL */
#define CMD_GET_TOGGLE 0x0A /* 獲取OUT事務(wù)的同步狀態(tài) */
/* 輸入: 數(shù)據(jù)1AH */
/* 輸出: 同步狀態(tài) */
/* 位4為1則OUT事務(wù)同步, 否則OUT事務(wù)不同步 */
#define CMD_GET_STATUS 0x22 /* 獲取中斷狀態(tài)并取消中斷請(qǐng)求 */
/* 輸出: 中斷狀態(tài) */
#define CMD_UNLOCK_USB 0x23 /* 設(shè)備方式: 釋放當(dāng)前USB緩沖區(qū) */
#define CMD_RD_USB_DATA 0x28 /* 從當(dāng)前USB中斷的端點(diǎn)緩沖區(qū)讀取數(shù)據(jù)塊, 并釋放緩沖區(qū) */
/* 輸出: 長度, 數(shù)據(jù)流 */
#define CMD_WR_USB_DATA3 0x29 /* 設(shè)備方式: 向USB端點(diǎn)0的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 */
/* 輸入: 長度, 數(shù)據(jù)流 */
#define CMD_WR_USB_DATA5 0x2A /* 設(shè)備方式: 向USB端點(diǎn)1的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 */
/* 輸入: 長度, 數(shù)據(jù)流 */
#define CMD_WR_USB_DATA7 0x2B /* 向USB端點(diǎn)2的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 */
/* 輸入: 長度, 數(shù)據(jù)流 */
/* ************************************************************************** */
/* 以下命令用于USB主機(jī)方式, 只有CH375支持 */
#define CMD_SET_BAUDRATE 0x02 /* 串口方式: 設(shè)置串口通訊波特率 */
/* 輸入: 波特率分頻系數(shù), 波特率分頻常數(shù) */
/* 輸出: 操作狀態(tài)( CMD_RET_SUCCESS或CMD_RET_ABORT, 其它值說明操作未完成 ) */
#define CMD_ABORT_NAK 0x17 /* 主機(jī)方式: 放棄當(dāng)前NAK的重試 */
#define CMD_SET_RETRY 0x0B /* 主機(jī)方式: 設(shè)置USB事務(wù)操作的重試次數(shù) */
/* 輸入: 數(shù)據(jù)25H, 重試次數(shù) */
/* 位7為1則收到NAK時(shí)無限重試, 位3~位0為超時(shí)后的重試次數(shù) */
#define CMD_ISSUE_TOKEN 0x4F /* 主機(jī)方式: 發(fā)出令牌, 執(zhí)行事務(wù) */
/* 輸入: 事務(wù)屬性 */
/* 低4位是令牌, 高4位是端點(diǎn)號(hào) */
/* 輸出中斷 */
#define CMD_CLR_STALL 0x41 /* 主機(jī)方式: 控制傳輸-清除端點(diǎn)錯(cuò)誤 */
/* 輸入: 端點(diǎn)號(hào) */
/* 輸出中斷 */
#define CMD_SET_ADDRESS 0x45 /* 主機(jī)方式: 控制傳輸-設(shè)置USB地址 */
/* 輸入: 地址值 */
/* 輸出中斷 */
#define CMD_GET_DESCR 0x46 /* 主機(jī)方式: 控制傳輸-獲取描述符 */
/* 輸入: 描述符類型 */
/* 輸出中斷 */
#define CMD_SET_CONFIG 0x49 /* 主機(jī)方式: 控制傳輸-設(shè)置USB配置 */
/* 輸入: 配置值 */
/* 輸出中斷 */
#define CMD_DISK_INIT 0x51 /* 主機(jī)方式: 初始化USB存儲(chǔ)器 */
/* 輸出中斷 */
#define CMD_DISK_RESET 0x52 /* 主機(jī)方式: 復(fù)位USB存儲(chǔ)器 */
/* 輸出中斷 */
#define CMD_DISK_SIZE 0x53 /* 主機(jī)方式: 獲取USB存儲(chǔ)器的容量 */
/* 輸出中斷 */
#define CMD_DISK_READ 0x54 /* 主機(jī)方式: 從USB存儲(chǔ)器讀數(shù)據(jù)塊(以扇區(qū)512字節(jié)為單位) */
/* 輸入: LBA扇區(qū)地址(總長度32位, 低字節(jié)在前), 扇區(qū)數(shù)(01H~FFH) */
/* 輸出中斷 */
#define CMD_DISK_RD_GO 0x55 /* 主機(jī)方式: 繼續(xù)執(zhí)行USB存儲(chǔ)器的讀操作 */
/* 輸出中斷 */
#define CMD_DISK_WRITE 0x56 /* 主機(jī)方式: 向USB存儲(chǔ)器寫數(shù)據(jù)塊(以扇區(qū)512字節(jié)為單位) */
/* 輸入: LBA扇區(qū)地址(總長度32位, 低字節(jié)在前), 扇區(qū)數(shù)(01H~FFH) */
/* 輸出中斷 */
#define CMD_DISK_WR_GO 0x57 /* 主機(jī)方式: 繼續(xù)執(zhí)行USB存儲(chǔ)器的寫操作 */
/* 輸出中斷 */
/* ************************************************************************** */
/* 以下新增的V2.0命令碼, 僅CH372A/CH375A支持 */
#define CMD_GET_IC_VER 0x01 /* 獲取芯片及固件版本 */
/* 輸出: 版本號(hào)( 位7為1, 位6為0, 位5~位0為版本號(hào) ) */
/* CH375返回?zé)o效值為5FH, CH375A返回版本號(hào)的值為0A2H */
#define CMD_ENTER_SLEEP 0x03 /* 進(jìn)入睡眠狀態(tài) */
#define CMD_RD_USB_DATA0 0x27 /* 從當(dāng)前USB中斷的端點(diǎn)緩沖區(qū)讀取數(shù)據(jù)塊 */
/* 輸出: 長度, 數(shù)據(jù)流 */
#define CMD_DELAY_100US 0x0F /* 并口方式: 延時(shí)100uS */
/* 輸出: 延時(shí)期間輸出0, 延時(shí)結(jié)束輸出非0 */
#define CMD_CHK_SUSPEND 0x0B /* 設(shè)備方式: 設(shè)置檢查USB總線掛起狀態(tài)的方式 */
/* 輸入: 數(shù)據(jù)10H, 檢查方式 */
/* 00H=不檢查USB掛起, 04H=以50mS為間隔檢查USB掛起, 05H=以10mS為間隔檢查USB掛起 */
#define CMD_SET_SYS_FREQ 0x04 /* 設(shè)置系統(tǒng)工作頻率 */
/* 輸入: 頻率 */
/* 00H=12MHz, 01H=1.5MHz */
/* ************************************************************************** */
/* 以下改進(jìn)的V2.0命令碼, 用于USB主機(jī)方式, 僅CH375A支持 */
/*#define CMD_SET_RETRY 0x0B*/ /* 主機(jī)方式: 設(shè)置USB事務(wù)操作的重試次數(shù) */
/* 輸入: 數(shù)據(jù)25H, 重試次數(shù) */
/* 位7為0則收到NAK時(shí)不重試, 位7為1位6為0則收到NAK時(shí)無限重試, 位7為1位6為1則收到NAK時(shí)重試200mS, 位5~位0為超時(shí)后的重試次數(shù) */
/* ************************************************************************** */
/* 以下新增的V2.0命令碼, 用于USB主機(jī)方式, 僅CH375A支持 */
#define CMD_TEST_CONNECT 0x16 /* 主機(jī)方式: 檢查USB設(shè)備連接狀態(tài) */
/* 輸出: 狀態(tài)( USB_INT_CONNECT或USB_INT_DISCONNECT, 其它值說明操作未完成 ) */
#define CMD_AUTO_SETUP 0x4D /* 主機(jī)方式: 自動(dòng)配置USB設(shè)備 */
/* 輸出中斷 */
#define CMD_ISSUE_TKN_X 0x4E /* 主機(jī)方式: 發(fā)出同步令牌, 執(zhí)行事務(wù) */
/* 輸入: 同步標(biāo)志, 事務(wù)屬性 */
/* 同步標(biāo)志的位7為主機(jī)端點(diǎn)IN的同步觸發(fā)位, 位6為主機(jī)端點(diǎn)OUT的同步觸發(fā)位, 位5~位0必須為0 */
/* 事務(wù)屬性的低4位是令牌, 高4位是端點(diǎn)號(hào) */
/* 輸出中斷 */
#define CMD_SET_DISK_LUN 0x0B /* 主機(jī)方式: 設(shè)置USB存儲(chǔ)器的當(dāng)前邏輯單元號(hào) */
/* 輸入: 數(shù)據(jù)34H, 新的當(dāng)前邏輯單元號(hào)(00H-0FH) */
#define CMD_DISK_BOC_CMD 0x50 /* 主機(jī)方式: 對(duì)USB存儲(chǔ)器執(zhí)行BulkOnly傳輸協(xié)議的命令 */
/* 輸出中斷 */
#define CMD_DISK_INQUIRY 0x58 /* 主機(jī)方式: 查詢USB存儲(chǔ)器特性 */
/* 輸出中斷 */
#define CMD_DISK_READY 0x59 /* 主機(jī)方式: 檢查USB存儲(chǔ)器就緒 */
/* 輸出中斷 */
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -