请教程序问题

printf( "Size=%ld, Len=%d, Sec=%d\n", CH374vFileSize, NewSize, (UINT16)SecCount ); mCmdParam.ReadX.mSectorCount = SecCount; /* 读取全部数据,如果超过60个扇区则只读取60个扇区 */ mCmdParam.ReadX.mDataBuffer = &my_buffer[0]; /* 指向文件数据缓冲区的起始地址 */ CH374vFileSize += CH374vSectorSize - 1; /* 默认情况下,以扇区方式读取数据时,无法读出文件尾部不足1个扇区的部分,所以必须临时加大文件长度以读取尾部零头 */ i = CH374FileReadX( ); /* 从文件读取数据 */ CH374vFileSize -= CH374vSectorSize - 1; /* 恢复原文件长度 */ mStopIfError( i );

------------------------------------------------------ 我在AVR外扩了32k的sram,其中只是读U盘文件8M,送到fpga里去。 (1)其中文件大小8M,每次可以读取30k到sram里,其中my_buffer是必须要用的缓存吗?不能直接对外扩的sram写? (2)这样的结构要送到fpga里是每次先从U盘读30k到SRAM,然后再从SRAM读到fpga里去更快? 谢谢了

1,你自己开一个缓冲区,拿mCmdParam.ReadX.mDataBuffer指针去指向你的缓冲区里面去就可以了。 2,你可以直接从374里面读取出来直接送到FPGA里面更快


前段时间你说你用的是双口RAM,这样的话基本上不浪费时间的,.你可以把my_buffer定义到扩展RAM区.


2,你可以直接从374里面读取出来直接送到FPGA里面更快 请问这个“直接送”就不需要SRAM了吧,直接用ch374的读写信号,能具体说一下控制信号吗?谢谢


觉得这样写进读出SRAM会浪费时间,直接送进去是个不错的选择


不需要过RAM,374的数据口与PFGA是直连的,在读374数据期间,即374的RD信号有效期间,使能FPGA的WR信号,这样数据就直接从374的数据口进入FPGA。 注意374的RD,WR与FPGA的RD,WR是独立控制的


我改为了374直连FPGA,读文件。现在问题 1.我发现读选通时间不是手册上说的40ns~70ns,而是在500ns左右,我atmeg是8M内部的,和时钟有关吗? 2.我看了mybuffer中的数据没错,但是在读选通读数到fpga的fifo中不正确,可能和问题1有关。 谢谢先


3.接上,ch374在读文件之前也应该有读选通信号,这些数据是不能写,应该在i=ch374readfile()之后才开始读数据线上的数据吧。


读选通是你的MCU来控制的,和CH374没有关系,CH374要求最底要保证40ns~70ns.和时钟有关系.给总线设置也有关系,你查看相关资料看看怎么样才能把速度设置更快. 不是这样理解的,CH374随时在总线上都会有读选通的.由于我们不知道你系统的具体构成,请你下次问问题的时候不要过于简洁,尽量说详细点.你说这些数据不能写,是哪些数据?


再问一个问题:从atmeg128外扩的SDRM读数据,我将*ptr指针赋给内部一个uchar变量,为什么rd使能和ale等没有变化?


这可能是因为MCU自己控制的,因为你访问的内部RAM地址,RD,ALE没有必要去变化,AVR地址是线性的,没有内部和外部之份,不像51.地址是统一的.


那看来要读到fpga有点困难了 我在写到sram里似乎有写使能,我想在写sram的时候,也写进fpga里,不知这个好控制,能实现?


具体什么情况,你可以致电:025-52638375,需要你详细说明下看下可以不可以给你解决这个问题。


i = CH374FileReadX( ); /* 从文件读取数据 */ 我在测试 ptr=(unchar*)0x1100; for(j;j<2048,j++) { *ptr=j; }


i = CH374FileReadX( ); /* 从文件读取数据 */ 我在测试 ptr=(unchar*)0x1100; for(j;j<2048,j++) { *ptr=j; } 如果没有加读文件数据的语句,atmeg128的ale就是正确的,加了之后,就要紧接两个上升沿才有一个wr选通? 谢谢


你的程序按照上午和你说的,你可以这样操作: ptr=(unchar*)0x1100; mCmdParam.ReadX.mDataBuffer=ptr; i = CH374FileReadX( ); /* 从文件读取数据 */

PUINT8 CH374_READ_BLOCK64( UINT8 mAddr, PUINT8 mBuf ) /* 外部定义的被CH374程序库调用的子程序,从双缓冲区读出64字节的数据块,返回当前地址 */ { UINT8 i; UINT8 c; UINT16 New_Size; unsigned char buf[64]; unsigned char *pBuf; Write374Index( mAddr ); if((unsigned short)mBuf != 0x1100){ //操作文件系统 *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++;

*mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++;

*mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++;

*mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++;

*mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++;

*mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++;

*mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++;

*mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; *mBuf = CH374_DATA_PORT;mBuf ++; } else { for( i=0;i!=64;i++ ) FPGA_Addr= CH374_DATA_PORT; //循环64次,直接写到FPGA里面去

} return( mBuf ); }


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