?? ch375inc.h
字號:
/* Define for CH372 & CH375 */
/* Website: http://winchiphead.com */
/* Email: tech@winchiphead.com */
/* Author: W.ch 2003.09 */
/* V2.0 for CH372A/CH375A */
/* ********************************************************************************************************************* */
/* 硬件特性 */
#define CH375_MAX_DATA_LEN 0x40 /* 最大數據包的長度, 內部緩沖區的長度 */
/* ********************************************************************************************************************* */
/* 命令代碼 */
#define CMD_RESET_ALL 0x05 /* 執行硬件復位 */
#define CMD_CHECK_EXIST 0x06 /* 測試工作狀態 */
/* 輸入: 任意數據 */
/* 輸出: 輸入數據的按位取反 */
#define CMD_SET_USB_ID 0x12 /* 設備方式: 設置USB廠商VID和產品PID */
/* 輸入: 廠商ID低字節, 廠商ID高字節, 產品ID低字節, 產品ID高字節 */
#define CMD_SET_USB_ADDR 0x13 /* 設置USB地址 */
/* 輸入: 地址值 */
#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_SET_ENDP2 0x18 /* 設備方式: 設置USB端點0的接收器 */
/* 輸入: 工作方式 */
/* 位7為1則位6為同步觸發位, 否則同步觸發位不變 */
/* 位3~位0為事務響應方式: 0000-就緒ACK, 1110-正忙NAK, 1111-錯誤STALL */
#define CMD_SET_ENDP3 0x19 /* 設備方式: 設置USB端點0的發送器 */
/* 輸入: 工作方式 */
/* 位7為1則位6為同步觸發位, 否則同步觸發位不變 */
/* 位3~位0為事務響應方式: 0000~1000-就緒ACK, 1110-正忙NAK, 1111-錯誤STALL */
#define CMD_SET_ENDP4 0x1A /* 設備方式: 設置USB端點1的接收器 */
/* 輸入: 工作方式 */
/* 位7為1則位6為同步觸發位, 否則同步觸發位不變 */
/* 位3~位0為事務響應方式: 0000-就緒ACK, 1110-正忙NAK, 1111-錯誤STALL */
#define CMD_SET_ENDP5 0x1B /* 設備方式: 設置USB端點1的發送器 */
/* 輸入: 工作方式 */
/* 位7為1則位6為同步觸發位, 否則同步觸發位不變 */
/* 位3~位0為事務響應方式: 0000~1000-就緒ACK, 1110-正忙NAK, 1111-錯誤STALL */
#define CMD_SET_ENDP6 0x1C /* 設置USB端點2/主機端點的接收器 */
/* 輸入: 工作方式 */
/* 位7為1則位6為同步觸發位, 否則同步觸發位不變 */
/* 位3~位0為事務響應方式: 0000-就緒ACK, 1101-就緒但不返回ACK, 1110-正忙NAK, 1111-錯誤STALL */
#define CMD_SET_ENDP7 0x1D /* 設置USB端點2/主機端點的發送器 */
/* 輸入: 工作方式 */
/* 位7為1則位6為同步觸發位, 否則同步觸發位不變 */
/* 位3~位0為事務響應方式: 0000-就緒ACK, 1101-就緒但無須應答, 1110-正忙NAK, 1111-錯誤STALL */
#define CMD_GET_TOGGLE 0x0A /* 獲取OUT事務的同步狀態 */
/* 輸入: 數據1AH */
/* 輸出: 同步狀態 */
/* 位4為1則OUT事務同步, 否則OUT事務不同步 */
#define CMD_GET_STATUS 0x22 /* 獲取中斷狀態并取消中斷請求 */
/* 輸出: 中斷狀態 */
#define CMD_UNLOCK_USB 0x23 /* 設備方式: 釋放當前USB緩沖區 */
#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的發送緩沖區寫入數據塊 */
/* 輸入: 長度, 數據流 */
/* ************************************************************************** */
/* 以下命令用于USB主機方式, 只有CH375支持 */
#define CMD_SET_BAUDRATE 0x02 /* 串口方式: 設置串口通訊波特率 */
/* 輸入: 波特率分頻系數, 波特率分頻常數 */
/* 輸出: 操作狀態( CMD_RET_SUCCESS或CMD_RET_ABORT, 其它值說明操作未完成 ) */
#define CMD_ABORT_NAK 0x17 /* 主機方式: 放棄當前NAK的重試 */
#define CMD_SET_RETRY 0x0B /* 主機方式: 設置USB事務操作的重試次數 */
/* 輸入: 數據25H, 重試次數 */
/* 位7為1則收到NAK時無限重試, 位3~位0為超時后的重試次數 */
#define CMD_ISSUE_TOKEN 0x4F /* 主機方式: 發出令牌, 執行事務 */
/* 輸入: 事務屬性 */
/* 低4位是令牌, 高4位是端點號 */
/* 輸出中斷 */
#define CMD_CLR_STALL 0x41 /* 主機方式: 控制傳輸-清除端點錯誤 */
/* 輸入: 端點號 */
/* 輸出中斷 */
#define CMD_SET_ADDRESS 0x45 /* 主機方式: 控制傳輸-設置USB地址 */
/* 輸入: 地址值 */
/* 輸出中斷 */
#define CMD_GET_DESCR 0x46 /* 主機方式: 控制傳輸-獲取描述符 */
/* 輸入: 描述符類型 */
/* 輸出中斷 */
#define CMD_SET_CONFIG 0x49 /* 主機方式: 控制傳輸-設置USB配置 */
/* 輸入: 配置值 */
/* 輸出中斷 */
#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存儲器的寫操作 */
/* 輸出中斷 */
/* ************************************************************************** */
/* 以下新增的V2.0命令碼, 僅CH372A/CH375A支持 */
#define CMD_GET_IC_VER 0x01 /* 獲取芯片及固件版本 */
/* 輸出: 版本號( 位7為1, 位6為0, 位5~位0為版本號 ) */
/* CH375返回無效值為5FH, CH375A返回版本號的值為0A2H */
#define CMD_ENTER_SLEEP 0x03 /* 進入睡眠狀態 */
#define CMD_RD_USB_DATA0 0x27 /* 從當前USB中斷的端點緩沖區讀取數據塊 */
/* 輸出: 長度, 數據流 */
#define CMD_DELAY_100US 0x0F /* 并口方式: 延時100uS */
/* 輸出: 延時期間輸出0, 延時結束輸出非0 */
#define CMD_CHK_SUSPEND 0x0B /* 設備方式: 設置檢查USB總線掛起狀態的方式 */
/* 輸入: 數據10H, 檢查方式 */
/* 00H=不檢查USB掛起, 04H=以50mS為間隔檢查USB掛起, 05H=以10mS為間隔檢查USB掛起 */
#define CMD_SET_SYS_FREQ 0x04 /* 設置系統工作頻率 */
/* 輸入: 頻率 */
/* 00H=12MHz, 01H=1.5MHz */
/* ************************************************************************** */
/* 以下改進的V2.0命令碼, 用于USB主機方式, 僅CH375A支持 */
/*#define CMD_SET_RETRY 0x0B*/ /* 主機方式: 設置USB事務操作的重試次數 */
/* 輸入: 數據25H, 重試次數 */
/* 位7為0則收到NAK時不重試, 位7為1位6為0則收到NAK時無限重試, 位7為1位6為1則收到NAK時重試200mS, 位5~位0為超時后的重試次數 */
/* ************************************************************************** */
/* 以下新增的V2.0命令碼, 用于USB主機方式, 僅CH375A支持 */
#define CMD_TEST_CONNECT 0x16 /* 主機方式: 檢查USB設備連接狀態 */
/* 輸出: 狀態( USB_INT_CONNECT或USB_INT_DISCONNECT, 其它值說明操作未完成 ) */
#define CMD_AUTO_SETUP 0x4D /* 主機方式: 自動配置USB設備 */
/* 輸出中斷 */
#define CMD_ISSUE_TKN_X 0x4E /* 主機方式: 發出同步令牌, 執行事務 */
/* 輸入: 同步標志, 事務屬性 */
/* 同步標志的位7為主機端點IN的同步觸發位, 位6為主機端點OUT的同步觸發位, 位5~位0必須為0 */
/* 事務屬性的低4位是令牌, 高4位是端點號 */
/* 輸出中斷 */
#define CMD_SET_DISK_LUN 0x0B /* 主機方式: 設置USB存儲器的當前邏輯單元號 */
/* 輸入: 數據34H, 新的當前邏輯單元號(00H-0FH) */
#define CMD_DISK_BOC_CMD 0x50 /* 主機方式: 對USB存儲器執行BulkOnly傳輸協議的命令 */
/* 輸出中斷 */
#define CMD_DISK_INQUIRY 0x58 /* 主機方式: 查詢USB存儲器特性 */
/* 輸出中斷 */
#define CMD_DISK_READY 0x59 /* 主機方式: 檢查USB存儲器就緒 */
/* 輸出中斷 */
#define CMD_DISK_R_SENSE 0x5A /* 主機方式: 檢查USB存儲器錯誤 */
/* 輸出中斷 */
#define CMD_DISK_MAX_LUN 0x5D /* 主機方式: 獲取USB存儲器最大邏輯單元號 */
/* 輸出中斷 */
/* ********************************************************************************************************************* */
/* 操作狀態 */
#define CMD_RET_SUCCESS 0x51 /* 命令操作成功 */
#define CMD_RET_ABORT 0x5F /* 命令操作失敗 */
/* ********************************************************************************************************************* */
/* USB中斷狀態 */
/* 以下狀態代碼為特殊事件中斷, 僅CH372A/CH375A支持, 如果通過CMD_CHK_SUSPEND啟用USB總線掛起檢查, 那么必須處理USB總線掛起和睡眠喚醒的中斷狀態 */
#define USB_INT_USB_SUSPEND 0x05 /* USB總線掛起事件 */
#define USB_INT_WAKE_UP 0x06 /* 從睡眠中被喚醒事件 */
/* 以下狀態代碼0XH用于USB設備方式 */
/* 內置固件模式下只需要處理: USB_INT_EP1_IN, USB_INT_EP2_OUT, USB_INT_EP2_IN, 對于CH372A/CH375A還需要處理: USB_INT_EP1_OUT */
/* 位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總線復位 */
/* 以下狀態代碼2XH-3XH用于USB主機方式的通訊失敗代碼, 僅CH375/CH375A支持 */
/* 位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主機方式的操作狀態代碼, 僅CH375/CH375A支持 */
#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存儲器操作失敗 */
/* ********************************************************************************************************************* */
/* 常用USB定義 */
/* USB的包標識PID, 主機方式可能用到 */
#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
/* USB請求類型, 外置固件模式可能用到 */
#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 /* 保留請求 */
/* USB標準設備請求, RequestType的位6位5=00(Standard), 外置固件模式可能用到 */
#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
/* ********************************************************************************************************************* */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -