????????用FPGA采集圖片,想用CH376保存圖片到U盤。CH376每次CMD_BYTE_WRITE只能傳輸64KB(0xFFFF)的數(shù)據(jù),但是一個(gè)圖片需要20*64KB以上。CH376DS1.PDF提到,8.4.5新建文件并寫入數(shù)據(jù),多次CMD_BYTE_WRITE命令+CMD_WR_REQ_DATA命令+CMD_BYTE_WR_GO命令寫入數(shù)據(jù)。
????????因此在verilog例子CH376_test.v中,想辦法循環(huán)CMD_BYTE_WRITE代碼段。
方法如下:
1、定義循環(huán)次數(shù)reg_t
2、在進(jìn)程“//reg_op3=1: clk上升沿,更新讀回的中斷狀態(tài)reg_err”中,BYTE_WRITE里面增加以下代碼
BYTE_WRITE:case(reg_i)
8'h05:begin
? ? reg_err<=!(reg_rx==8'h1e);//中斷狀態(tài),USB_INT_DISK_WRITE0x1E/* USB存儲器請求數(shù)據(jù)寫入 */
// ? ? if(reg_t<(FRM_PIXS/BYTE_LEN)) //0~29
// ? ? ? ? reg_t<=reg_t+8'h01;//發(fā)0xffff個(gè)字節(jié)的次數(shù)累加
end
endcase
3、在進(jìn)程“//reg_op4=1: clk下降沿,更新狀態(tài)reg_wr_state”中,BYTE_WR_GO里面增加以下代碼
BYTE_WR_GO:case(reg_i)
8'h03:begin
? ? if(reg_go)reg_wr_state<=WR_REQ_DATA;
? ? else if(!reg_err)begin
//if(reg_t<(FRM_PIXS/BYTE_LEN))//一幀視頻數(shù)據(jù)沒發(fā)送完
// ? reg_wr_state<=BYTE_WRITE; ? ?//回去重新啟動(dòng)下一個(gè)64KB數(shù)據(jù)
//else
? reg_wr_state<=CLOSE_FILE;
? ? end
? ? else ?reg_wr_state<=BYTE_WRITE;//什么條件切換
end
endcase
????????運(yùn)行后用SignalTap II抓到波形數(shù)據(jù)看,reg_t停留在等于0x04的狀態(tài),且一直處于reg_wr_state.WR_REQ_DATA狀態(tài)。在電腦查看U盤,WCH.TXT文件長度為1KB,打開文件只看見一個(gè)字符,比如“t”。