CH376S 以字節(jié)方式寫入數(shù)據(jù)失敗

主控芯片:PICF18

通訊方式:8位并口

中斷方式:狀態(tài)最高位檢測

????????USB初始化正常,建立的txt文件可以正常打開,但是無寫入數(shù)據(jù)。


程序如下所示:

;==================================================

;=CH376_Byte_Writ 字節(jié) 寫 子程序=

;==

;=入口參數(shù):ReqCount_L:ReqCount_H (數(shù)據(jù)長度)=

;=出口參數(shù):無=

;=標志:=

;==

;=振蕩器:64.000MHz ( 0.0625uS/步 ) 因數(shù)據(jù)變化,耗時約:xxxxuS~xxxuS=

;==

; 節(jié)點 ======== 命令 ========== 系數(shù) ========== 注解

CH376_Byte_Writ

BTFSCFILE_376,Byte_test? ? ? ? ? ?; FILE_376,Byte_test=? 1

GOTOWrite_Req_Block; 轉(zhuǎn)到 Write_Req_Block


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


BTFSCSybl,CMD_WR_Complt; Sybl,CMD_WR_Complt =? 1

GOTOByte_Writ_check; 轉(zhuǎn)到 Byte_Writ_check


MOVLWCMD2H_BYTE_WRITE; H'3C'

CALLWrite_CH376_Cmd; 調(diào)用 寫命令子程序


MOVLWReqCount_L; 寫數(shù)據(jù)塊長度

CALLWrite_CH376_DATA; 調(diào)用 寫數(shù)據(jù)子程序


MOVLWReqCount_H; 寫數(shù)據(jù)塊長度

CALLWrite_CH376_DATA; 調(diào)用 寫數(shù)據(jù)子程序


BSFSybl,CMD_WR_Complt; 置:Sybl,CMD_WR_Complt = 1


; - - - - - - - - - - - - - - - 檢查:中斷標志 - - - - - - - - - - - - - - - - - - - - - -

Byte_Writ_check

CALLRead_CH376_Statu; 調(diào)用 讀狀態(tài) 子程序

MOVFFCH376_BUFER,Intrput_Statu;


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


BTFSCIntrput_Statu,7; 最高位 =? 0

RETURN; 無中斷,返回到原來調(diào)用處


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


MOVLWUSB_INT_DISK_WRITE; H'1E'

MOVWFCMD_Succe_da;


CALLInterupt_SW; 調(diào)用 軟件中斷 子程序


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


BTFSSSybl,Intrput_Succe; =? 1

GOTOByte_Writ_fail; 轉(zhuǎn)到 Byte_Writ_fail


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


CALLCH376_Writ_Req; 調(diào)用 寫數(shù)據(jù)請求 子程序


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


BSFFILE_376,Byte_test; 置:寫 數(shù)據(jù)塊 完成 標志


RETURN; 寫數(shù)據(jù)已完成,返回原調(diào)用處


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Byte_Writ_fail


BCFFILE_376,Byte_test; 置:寫 數(shù)據(jù)塊 完成 標志


RETURN; 寫數(shù)據(jù)已完成,返回原調(diào)用處


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Write_Req_Block

MOVLWCMD0H_BYTE_WR_GO; H'3D'

MOVWFCMD_Intrput;


CALLInterupt_Check; 調(diào)用 中斷檢查 子程序


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


BTFSCIntrput_Statu,7; 最高位 =? 0

RETURN; 無中斷,繼續(xù)等待


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


MOVLWUSB_INT_DISK_WRITE; H'1E'

MOVWFCMD_Succe_da;


CALLInterupt_SW; 調(diào)用 軟件中斷 子程序


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


BTFSSSybl,Intrput_Succe; =? 1

GOTOWrite_Req_Block1; 轉(zhuǎn)到 Write_Req_Block1 繼續(xù)寫數(shù)據(jù)塊


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


CALLCH376_Writ_Req; 調(diào)用 寫數(shù)據(jù)請求 子程序


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


BCFFILE_376,Byte_Write; 置:寫 數(shù)據(jù)塊 完成 標志


RETURN; 寫數(shù)據(jù)已完成,返回原調(diào)用處


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Write_Req_Block1


BSFFILE_376,Byte_Write; 置:寫 數(shù)據(jù)塊 完成 標志

BCFSybl,CMD_WR_Complt; 清:= 0 中斷命令發(fā)送標志


RETURN; 寫數(shù)據(jù)已完成,返回原調(diào)用處



;=================================================

;=CH376_Writ_Req 字節(jié) 寫請求 子程序=

;==

;=入口參數(shù):無=

;=出口參數(shù):ReqLCount(返回數(shù)據(jù)長度)=

;=標志:=

;==

;=振蕩器:64.000MHz ( 0.0625uS/步 ) 因數(shù)據(jù)變化,耗時約:xxxxuS~xxxuS=

;==

; 節(jié)點 ======== 命令 ========== 系數(shù) ========== 注解?

CH376_Writ_Req

MOVLWCMD01_WR_REQ_DATA; H'2D'

CALLWrite_CH376_Cmd; 調(diào)用 寫命令 子程序


CALLRead_CH376_DATA; 調(diào)用 讀狀態(tài)子程序

MOVFFCH376_BUFER,ReqLCount; 返回數(shù)據(jù)塊請求長度


; - - - - - - - - - - - - - - - - - 寫:數(shù)據(jù)塊 - - - - - - - - - - - - - - - - - - - - -


MOVFFReqLCount,LEDCONT;


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

CH376_Writ_Req1

MOVLWH'AB';??

CALLWrite_CH376_DATA; 調(diào)用 寫數(shù)據(jù)子程序


MOVLWD'5'; 延時200MS

CALLDELAY_Xms; 調(diào)用 MS延時 子程序


DECFSZLEDCONT,F; =?0

GOTOCH376_Writ_Req1; 繼續(xù)寫數(shù)據(jù)塊


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


RETURN; 寫數(shù)據(jù)已完成,返回原調(diào)用處


? 請哪位大神幫忙看一下問題在哪里?


您好,CH376字節(jié)寫入無法操作可以檢查一下以下兩點

  1. 文件操作完后是否有關(guān)閉文件操作,發(fā)送命令CMD1H_FILE_CLOSE(0x36),和數(shù)據(jù)1(更新文件大小)。

  2. 文件名創(chuàng)建是否符合“短文件”要求,文件名由不超過8字符的大寫英文字母或數(shù)字組成,后綴由不超過3字符的大寫英文字母或數(shù)字組成。


1、文件名:年月日.TXT? ? 例如:20210120.TXT

2、文件關(guān)閉操作成功:發(fā)送CMD1H_FILE_CLOSE(36H)+ 數(shù)字(1),檢測到中斷,中斷狀態(tài)為USB_INT_SUCCESS(14H)。

? 數(shù)據(jù)寫入仍然失敗,且文件有一個 字節(jié) 亂碼。



你好:

如果所有操作返回值都是成功,但是查看文件是1個字節(jié),應(yīng)該是寫延遲現(xiàn)象,有2種方法解決。

  1. 方法1,寫完文件后,通過修改文件屬性中的文件長度命令,強制修改文件長度為當前寫入文件大小。注意是修改文件屬性的命令(CH376DirInfoSave()函數(shù),參考EXAM10)。

  2. 方法2,寫完文件后,執(zhí)行59H命令,進行磁盤刷新。此命令只對U盤有用,對SD卡無效。


采用方法2:先發(fā)送命令CMD0H_DISK_READY(59H),等待判斷,檢查中斷狀態(tài)寄存器數(shù)值為14H

寫入數(shù)據(jù):20 20 20 20 20

文件在PC端打開顯示數(shù)據(jù)為:EA AE

測試其他寫入數(shù)據(jù),并不影響文本中的內(nèi)容。

數(shù)據(jù)仍沒有寫入U盤中。


疑問:數(shù)據(jù)寫入U盤,使用CH376ByteWrite( buf, s, NULL ),并且在關(guān)閉文件時,寫入數(shù)據(jù)1,即可將數(shù)據(jù)寫到U盤中?是否還需要其他操作?


1、 U盤的文件? 20210121.TXT? 直接建立在U盤中,沒有使用多級目錄,因此,這是否屬于根目錄文件?

2、現(xiàn)在有一個問題是,我按照 附件中圖片 中打開文件操作步驟編寫程序,只有在屏蔽 第4步驟 時,才可以正確寫入數(shù)據(jù),不使用此步驟是否有問題?

3、按照字節(jié)方式寫入數(shù)據(jù):寫入的是否是數(shù)據(jù)對應(yīng)的ASSIC碼 ??

例如:想要寫入的數(shù)據(jù)為 :Temp=60℃

????????? ? 實際寫入數(shù)據(jù):54 65 6D 70 3D 36 30 A1 E6

icon_jpg.gif捕獲.PNG




1、是的

2、該份文檔應(yīng)用于老版本芯片,目前的CH376芯片均為最新版,已經(jīng)不需要步驟4,最新芯片實際操作方式建議參考手冊+實例代碼。示例代碼中針對芯片版本有預(yù)編譯,選擇是否要執(zhí)行步驟4

3、是的,最好在后面再加上回車換行


因為我需要生成的是EXCEL文件,我應(yīng)該怎么將不同的數(shù)據(jù)放在不同的表格中。

例如:圖片附件所示

icon_jpg.gif捕獲.PNG



問題1 :初始寫入數(shù)據(jù)會有一個字節(jié)亂碼存在,如何使其清除?

問題2:連續(xù)寫入數(shù)據(jù)時,每隔 1F 區(qū)域?會出現(xiàn) 1個字節(jié)亂碼,如附件圖片1,2所示,此問題如何解決?

icon_jpg.gif捕獲2.PNG

icon_jpg.gif捕獲1.PNG



請問CH376可以將不同的數(shù)據(jù)放在不同的表格中?


您好,這個是可以做的。不過CH376每次只能對一個文件操作,您需要自己在程序里面做好數(shù)據(jù)的處理,然后再調(diào)用OPEN函數(shù),把數(shù)據(jù)放入對應(yīng)的文件中。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频