请教: 51+扩展RAM,使用CH374,SPI连接方式,读取U盘文件时,请问读取到的磁盘缓冲区(非文件缓冲区)数据是经过SPI口到MCU,然后再写入扩展RAM,是不是?请问是那个子程序会执行磁盘缓冲区填充(磁盘分析)操作? 我使用lib4库,SPI方式,把磁盘缓冲区设置到扩展RAM的0x0100开始,缓冲区大小为2048个字节,但编译出来的代码反编译后竟然没有一行movx a,@dptr里的dptr是指向0x0100及0x0100以后的,请问是怎么回事?难道使用SPI方式时CH374读取到的U盘数据还是要通过WR/RD直接写入扩展的RAM而不是经过MCU?
可能是有进行操作的啊,我们的RAM2048字节是通过MOVX A,@DPTR的复制,只不过是在库里面进行了数据处理,而你反汇编的话,调库里面的直接就是LCALL CH375_FILE_OPEN()这个函数,而不会体现你上面说的MOVX A,dptr的操作
谢谢回复! 也就是说,使用SPI方式连接的话,数据也是先通过SPI口传到MCU,然后MCU再写入XRAM,是吗?
另外:我使用字节读(没有使用文件缓冲区),但DISK_BASE_BUF设置成2048个字节,那这2048个字节的内容也是在执行CH375_FILE_OPEN()时才填充的吗?我跟踪时好像在CH374DiskReady( )时执行的
还有使用时是不是有两种缓冲区?一种是DISK_BASE_BUF,用来存放U盘结构、FAT参数的,容量必须要比512大而且是512的倍数,另外是文件缓冲区,是必须要自己指定大小my_buffer,对吗?
CH374DiskReady()时也会用到DISK_BASE_BUF[],存放一些U盘的信息
DISK_BASE_BUF只要求于U盘的扇区大小一样就可以了 文件缓冲区的可以由库分配,也可以在程序中指定。大小必须能够满足一次读写的长度,当然越大越好了
有点明白了,谢谢回复!