FPGA挂CH376用户不多哦!文件超过64KB,CH376无效??

        用FPGA采集图片,想用CH376保存图片到U盘。CH376每次CMD_BYTE_WRITE只能传输64KB(0xFFFF)的数据,但是一个图片需要20*64KB以上。CH376DS1.PDF提到,8.4.5新建文件并写入数据,多次CMD_BYTE_WRITE命令+CMD_WR_REQ_DATA命令+CMD_BYTE_WR_GO命令写入数据。


        因此在verilog例子CH376_test.v中,想办法循环CMD_BYTE_WRITE代码段。


方法如下:

1、定义循环次数reg_t

2、在进程“//reg_op3=1: clk上升沿,更新读回的中断状态reg_err”中,BYTE_WRITE里面增加以下代码

BYTE_WRITE:case(reg_i)

8'h05:begin

    reg_err<=!(reg_rx==8'h1e);//中断状态,USB_INT_DISK_WRITE0x1E/* USB存储器请求数据写入 */

//     if(reg_t<(FRM_PIXS/BYTE_LEN)) //0~29

//         reg_t<=reg_t+8'h01;//发0xffff个字节的次数累加

end

endcase


3、在进程“//reg_op4=1: clk下降沿,更新状态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))//一帧视频数据没发送完

//   reg_wr_state<=BYTE_WRITE;    //回去重新启动下一个64KB数据

//else

  reg_wr_state<=CLOSE_FILE;

    end

    else  reg_wr_state<=BYTE_WRITE;//什么条件切换

end

endcase


        运行后用SignalTap II抓到波形数据看,reg_t停留在等于0x04的状态,且一直处于reg_wr_state.WR_REQ_DATA状态。在电脑查看U盘,WCH.TXT文件长度为1KB,打开文件只看见一个字符,比如“t”。


ch376_wchbbs.jpg


CMD_BYTE_WRITECMD_BYTE_WR_GO 的用法参考5.29章节说明。


5.29章节说明只是提到用CMD_BYTE_WRITE命令进行一次最大为64KByte文件的启动写操作,而我需要知道如何多次循环CMD_BYTE_WRITE(64KByte每次),因为我的文件远远大于64KByte。


终于解决了!命苦哦!

----------------------------

9'h0ff:begin 

reg_i<=8'h00;

reg_i_8<=1'b1;

end

----------------------------

请官方重新设计这部分代码


只有登录才能回复,可以选择微信账号登录