?? ch375hm.inc
字號:
; unsigned short mFileTime; ; 輸入參數: 新的文件時間,為0FFFFH則不修改, 返回: 原時間 */
; unsigned char mFileAttr; ; 輸入參數: 新的文件屬性,為0FFH則不修改, 返回: 原屬性 */
; } Modify; ; CMD_FileQuery, 查詢當前文件的信息; CMD_FileModify, 查詢或者修改當前文件的信息 */
; struct {
; unsigned long mSectorOffset; ; 輸入參數: 扇區偏移,0則移動到文件頭,0FFFFFFFFH則移動到文件尾, 返回: 當前文件指針對應的絕對線性扇區號, 0FFFFFFFFH則已到文件尾 */
; } Locate; ; CMD_FileLocate, 移動當前文件指針 */
; struct {
; unsigned char mSectorCount; ; 輸入參數: 讀取扇區數, 返回: 實際讀取扇區數 */
; } Read; ; CMD_FileRead, 從當前文件讀取數據 */
; struct {
; unsigned char mSectorCount; ; 輸入參數: 寫入扇區數, 返回: 實際寫入扇區數 */
; } Write; ; CMD_FileWrite, 向當前文件寫入數據 */
; struct {
; unsigned long mDiskSizeSec; ; 返回: 整個物理磁盤的總扇區數 */
; } DiskSize; ; CMD_DiskSize, 查詢磁盤容量 */
; struct {
; unsigned long mByteOffset; ; 輸入參數: 以字節為單位的偏移量, 以字節為單位的文件指針, 返回: 當前文件指針對應的絕對線性扇區號, 0FFFFFFFFH則已到文件尾 */
; } ByteLocate; ; CMD_ByteLocate, 以字節為單位移動當前文件指針 */
; struct {
; unsigned char mByteCount; ; 輸入參數: 準備讀取的字節數,不得大于MAX_BYTE_IO, 返回: 實際讀出的字節數 */
; unsigned char mByteBuffer[ MAX_BYTE_IO ]; ; 返回: 讀出的數據塊 */
; } ByteRead; ; CMD_ByteRead, 以字節為單位從當前文件讀取數據塊 */
; struct {
; unsigned char mByteCount; ; 輸入參數: 準備寫入的字節數,不得大于MAX_BYTE_IO,如果為0則刷新文件長度而不寫入,如果不為0則寫入數據但不刷新文件長度, 返回: 實際寫入的字節數 */
; unsigned char mByteBuffer[ MAX_BYTE_IO ]; ; 輸入參數: 準備寫入的數據塊 */
; } ByteWrite; ; CMD_ByteWrite, 以字節為單位向當前文件寫入數據塊 */
; union {
; struct {
; unsigned long mCBW_Sig;
; unsigned long mCBW_Tag;
; unsigned char mCBW_DataLen; ; 輸入: 數據傳輸長度,有效值是0到255 */
; unsigned char mCBW_DataLen1;
; unsigned char mCBW_DataLen2;
; unsigned char mCBW_DataLen3;
; unsigned char mCBW_Flag; ; 輸入: 傳輸方向等標志 */
; unsigned char mCBW_LUN;
; unsigned char mCBW_CB_Len; ; 輸入: 命令塊的長度,有效值是1到16 */
; unsigned char mCBW_CB_Buf[1]; ; 輸入: 命令塊,該緩沖區最多為16個字節 */
; } mCBW; ; BulkOnly協議的命令塊, 輸入CBW結構 */
; struct {
; unsigned long mCSW_Sig;
; unsigned long mCSW_Tag;
; unsigned long mCSW_Residue; ; 返回: 剩余數據長度 */
; unsigned char mCSW_Status; ; 返回: 命令執行結果狀態 */
; unsigned char mReserved;
; } mCSW; ; BulkOnly協議的命令狀態塊, 輸出CSW結構 */
; } BOC; ; CMD_BulkOnlyCmd, 執行基于BulkOnly協議的命令, 如果有數據傳輸那么數據在DISK_BASE_BUF中 */
; struct {
; unsigned char mPathName[ MAX_PATH_LEN ]; ; 輸入參數: 路徑: [盤符,冒號,斜杠,目錄名或者文件名及擴展名...,結束符00H], 其中盤符和冒號可以省略, 例如"C:\DIR1.EXT\DIR2\FILENAME.EXT",00H */
; } DirCreate; ; CMD_DirCreate, 新建目錄并打開,如果目錄已經存在則直接打開 */
; struct {
; unsigned char mSectorCount; ; 返回: 實際讀取扇區數,為1則已經讀取最后扇區,為0則沒有零碎數據(文件長度是512的倍數) */
; } ReadLast; ; CMD_FileReadLast, 從當前文件的尾部讀取不足一個扇區長度的零碎數據 */
; struct {
; unsigned char mAccessMode; ; 輸入: 存取方式, 0=讀取文件目錄信息,0F0H=寫入/更新文件目錄信息,其它值無效 */
; unsigned char mReserved[3];
; struct { ; 該結構中的成員輸入輸出必須都是小端格式,如果外部單片機是大端格式,那么需要自行處理大小端格式轉換 */
; unsigned char DIR_Name[11]; ; 00H,文件名,共11字節,不足處填空格 */
; unsigned char DIR_Attr; ; 0BH,文件屬性,參考下面的說明 */
; bit0 bit1 bit2 bit3 bit4 bit5 bit6 bit7 */
; 只讀 隱藏 系統 卷標 目錄 存檔 未定義 */
; unsigned char DIR_NTRes; ; 0CH */
; unsigned char DIR_CrtTimeTenth; ; 0DH,文件創建的時間,以0.1秒單位計數 */
; unsigned short DIR_CrtTime; ; 0EH,文件創建的時間,參考前面的宏MAKE_FILE_TIME,小端格式 */
; unsigned short DIR_CrtDate; ; 10H,文件創建的日期,參考前面的宏MAKE_FILE_DATE,小端格式 */
; unsigned short DIR_LstAccDate; ; 12H,最近一次存取操作的日期,參考前面的宏MAKE_FILE_DATE,小端格式 */
; unsigned short DIR_FstClusHI; ; 14H */
; unsigned short DIR_WrtTime; ; 16H,文件修改時間,參考下面的說明和前面的宏MAKE_FILE_TIME,小端格式 */
; 文件時間 UINT16: Time = (Hour<<11) + (Minute<<5) + (Second>>1) */
; unsigned short DIR_WrtDate; ; 18H,文件修改日期,參考下面的說明和前面的宏MAKE_FILE_DATE,小端格式 */
; 文件日期 UINT16: Date = ((Year-1980)<<9) + (Month<<5) + Day */
; unsigned short DIR_FstClusLO; ; 1AH */
; unsigned long DIR_FileSize; ; 1CH,文件長度,小端格式 */
; } mDir; ; 20H */
; } FileDirInfo; ; CMD_FileDirInfo, 存取當前已打開文件的目錄信息 */
; struct {
; unsigned char mLastStatus; ; 返回: 上次的操作狀態 */
; unsigned char mDiskStatus; ; 返回: 磁盤及文件狀態 */
; unsigned char mIntStatus; ; 返回: CH375操作的中斷狀態 */
; unsigned char reserved;
; unsigned long mFileSize; ; 返回: 當前文件的長度 */
; unsigned long mCurrentOffset; ; 返回: 當前文件指針,當前讀寫位置的字節偏移 */
; } Status; ; CMD_QueryStatus, 查詢當前模塊的狀態 */
; struct {
; unsigned long mFileSize; ; 輸入: 指定新的文件長度變量,只修改子程序庫的變量,只在更新文件長度后影響實際文件長度 */
; } SetFileSize; ; CMD_SetFileSize, 修改模塊系統內子程序庫的文件長度變量 */
; struct {
; unsigned char mFileLibVer; ; 返回: 子程序庫的版本號 */
; unsigned char mModuleVer; ; 返回: 模塊的版本號 */
; unsigned char mUsbIcVer; ; 返回: USB芯片版本:10H-CH375S,2xH-CH375A */
; } GetVer; ; CMD_GetVer, 獲取當前模塊的版本號 */
; struct {
; unsigned char mDivisor; ; 輸入參數: 通訊波特率除數 */
; } BaudRate; ; CMD_BaudRate, 設置串口通訊波特率 */
; struct {
; unsigned char mSetup; ; 輸入參數: 模塊配置值 */
; 位7位6: 數據字節順序: 00-保持當前格式, 01-設置小端格式LITTLE_ENDIAN, 10-設置大端格式BIG_ENDIAN, 11-保留/保持當前格式 */
; 位4: 向文件寫入數據后自動更新文件長度(設置CH375LibConfig的位4):0禁止,1允許 */
; 位0: 空閑時查詢U盤連接狀態并自動中斷通知:0禁止,1允許 */
; } Setup; ; CMD_SetupModule, 設置模塊配置 */
; struct {
; unsigned char mData; ; 輸入參數或者返回: 字節數據 */
; } Direct; ; CMD_DirectWrCmd, 直接傳遞給CH375,寫命令; CMD_DirectRdDat, 直接傳遞給CH375,讀數據; CMD_DirectWrDat, 直接傳遞給CH375,寫數據 */
; struct {
; unsigned char mStringSN[16]; ; 返回: 產品序列號字符串 */
; } GetSN; ; CMD_GetStringSN, 獲取產品序列號字符串 */
; struct {
; unsigned char mVidLow; ; 輸入參數: 廠商ID低字節 */
; unsigned char mVidHigh; ; 輸入參數: 廠商ID高字節 */
; unsigned char mPidLow; ; 輸入參數: 產品ID低字節 */
; unsigned char mPidHigh; ; 輸入參數: 產品ID高字節 */
; } SetUsbId; ; CMD_SetUsbId, USB設備模式: 設置USB設備的廠商VID和產品PID */
; struct {
; unsigned char mUsbMode; ; 輸入參數: 工作模式代碼, 0=空閑, 2=USB設備模式, 6=USB主機模式 */
; } SetUsbMode; ; CMD_SetUsbMode, USB設備模式: 設置USB主機/設備工作模式,只支持串口 */
; struct {
; unsigned char mByteCount; ; 返回: 讀出的字節數 */
; unsigned char mByteBuffer[ MAX_BYTE_IO ]; ; 返回: 讀出的數據塊 */
; } ReadUsbData; ; CMD_ReadUsbData, USB設備模式: 從模塊的數據下傳端點讀取數據塊 */
; struct {
; unsigned char mByteCount; ; 輸入參數: 準備寫入的字節數,不得大于MAX_BYTE_IO,不得大于CH375_MAX_DATA_LEN */
; unsigned char mByteBuffer[ MAX_BYTE_IO ]; ; 輸入參數: 準備寫入的數據塊 */
; } WriteUsbData; ; CMD_WriteUsbData, USB設備模式: 向模塊的數據上傳端點寫入數據塊 */
;} CMD_PARAM;
;
; ********************************************************************************************************************* */
; 并口CH421A芯片的空間定義 */
PARA_COMMAND_ADDR EQU 0x40 ; 命令碼的單元地址,該單元為操作命令碼,該單元由單片機在操作前設置,由模塊在操作完成后清除,查詢該單元可代替查詢INT#引腳 */
PARA_STATUS_ADDR EQU 0x41 ; 狀態碼的單元地址,該單元為操作結果狀態碼 */
PARA_CMD_LEN_ADDR EQU 0x42 ; 命令包長度的單元地址,該單元低7位為后續參數的長度,最高位用于通知模塊,為1則激活/繼續,為0則結束/應答 */
PARA_STS_LEN_ADDR EQU 0x43 ; 狀態包長度的單元地址,該單元低7位為后續參數的長度 */
PARA_CMD_BIT_ACT EQU 0x80 ; 命令包長度的最高位,用于通知模塊,激活/繼續 */
PARA_CMD_BIT_INACT EQU 0x00 ; 命令包長度的最高位,用于通知模塊,結束/應答 */
PARA_BUFFER_ADDR EQU 0x00 ; 后續參數的起始單元地址,從該單元開始的64個字節為數據緩沖區 */
; ********************************************************************************************************************* */
; 三線串口的命令同步,用兩個串口同步碼代替STA#引腳的下降沿進行命令碼同步 */
SER_SYNC_CODE1 EQU 057H ; 啟動操作的第1個串口同步碼 */
SER_SYNC_CODE2 EQU 0ABH ; 啟動操作的第2個串口同步碼 */
; ********************************************************************************************************************* */
; 數據流模式讀寫文件,只支持串口,只支持文本,默認文件名是"/模塊數據.TXT" */
SER_STREAM_END EQU 01AH ; 數據流模式文件讀寫:結束 */
SER_STREAM_ERROR EQU 015H ; 數據流模式文件讀寫:錯誤 */
SER_STREAM_ACK EQU 006H ; 數據流模式文件讀寫:應答 */
SER_STREAM_FLUSH EQU 000H ; 數據流模式文件讀寫:刷新 */
; ********************************************************************************************************************* */
; 模塊的預設說明,用于功能配置 */
; 程序空間3F00H開始的4個字節必須是"$HMS",說明下面的預設參數有效 */
; 程序空間3F08H字節是工作模式: */
; 位7: 數據字節順序: 0-小端LITTLE_ENDIAN,1-大端BIG_ENDIAN */
; 位6: 保留,必須為0 */
; 位5: 空閑時查詢U盤連接狀態并自動中斷通知:0禁止,1允許 */
; 位4: 向文件寫入數據后自動更新文件長度:0禁止,1允許 */
; 位3: 保留,必須為0 */
; 位2: 看門狗使能/串口超時使能: 0-禁止超時檢查, 1-允許超時檢查 */
; 位1位0: 接口方式: 00-8位并口, 01-專用接口/定制I2C或SPI等,10-4+1線制串口,11-3線制串口 */
; 程序空間3F09H字節是串口通訊波特率除數 */
; 程序空間3F10H開始的16個字節是產品序列號字符串 */
; ********************************************************************************************************************* */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -