CH374FileReadX()读取失败

调试环境:Keil+STM32+CH374 SPI模式: CH374DiskReady( )正常; CH374FileOpen( )正常; CH374ByteRead( )读取数据正确;

问题是CH374FileReadX()读取数据一直不正确,返回数据为0xB4; 我仿真在 CH374_READ_REGISTER(); CH374_WRITE_REGISTER(); CH374_READ_BLOCK(); CH374_WRITE_BLOCK(); CH374_READ_BLOCK64(); 中设的断点都无法进入,不知道CH374FileReadX()执行时都调用了什么函数,请帮忙看看,在此谢过。

需要看下你的程序,请按照下面的操作程序来进行操作: while(1){ mCmdParam.ReadX.mDataBuffer=my_buffer; mCmdParam.ReadX.mSectorCount=16; i=CH374FileReadX( ); if(mCmdParam.ReadX.mSectorCount<16)break; } 一定会进CH374_READ_BLOCK64();这个函数


请再问一下:我文件大小有40多扇区的大小的,使用如下的方式,读取了7次以后,就跳出循环了,后面的数据无法正常读出了,不知道什么问题的; mCmdParam.Locate.mSectorOffset = 9; i=CH374FileLocate( ); while(1) { mCmdParam.ReadX.mSectorCount = 1; mCmdParam.ReadX.mDataBuffer = &buf[0]; i=CH374FileReadX(); if ( mCmdParam.ReadX.mSectorCount < 1 ) break; } 如改为如下时:可以正常读2次,mCmdParam.ReadX.mSectorCount返回数据为3,跳出循环,就是只读到23个扇区: while(1) { mCmdParam.ReadX.mSectorCount = 10; mCmdParam.ReadX.mDataBuffer = &buf[0]; i=CH374FileReadX(); if ( mCmdParam.ReadX.mSectorCount < 10 ) break; }


那么你直接打开文件开始读取的话,可以读取多少次呢? 还有buf这个缓冲区是多大?你一次读取16个扇区的话,会有问题吗?


直接打开文件开始读取,读取次数还是会因mCmdParam.ReadX.mSectorCount的值而变化, 现在把mCmdParam.ReadX.mSectorCount设为16了,读取72扇区,和264扇区都正常了,不知道以后其他数据会不会出问题的,请问一下这个mCmdParam.ReadX.mSectorCount值大小怎么会影响数据读取结果呀?


mCmdParam.ReadX.mSectorCount变量不会影响读写,我担心的是你SPI那边是否有干扰存在,我们这边测试并口的时候,读取1G和2G文件都无问题。还有读取16个扇区。读取速度是最快的,效率也是最高的。如果可以的话,建议你把SPI速度减慢点。防止出现错误。


好的,我再试试,非常感谢!


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