很棒的程序
感謝....
請問CMD16可以設定為1嗎??(default是512)
請問CMD16可以設定為1嗎??(default是512)
請問CMD16可以設定為1嗎??(default是512)
对于读操作来说1-512都可以,但是对于写操作来说唯一有效的是512。
所以說
當READ時 可以讀取任一個ADDRESS的DATA囉??
所以說
當READ時 可以讀取任一個ADDRESS的DATA囉??
好像不是这样的吧,这个我也在试,但是我记得SD卡中的地址好像应该是每512作为一个地址的。你是不是想随意读取任意一个Byte啊?
我是想隨意讀取任意一個BYTE
可行嗎??
我是想隨意讀取任意一個BYTE
可行嗎??
嗯,可能不太可行,不知道你想存的是什么样的数据,如果只是零星的Byte而不是数据流一样的Byte,那么就不是很适合,在读写时需要不断调整读写的大小。
會有這樣的想法
是因為記憶體可能不夠用
所以才會想每次讀取一個BYTE
還有你說"在读写时需要不断调整读写的大小"
但讀取的長度不是設定一次就可以了嗎
為何要不斷調整??
[em06]會有這樣的想法
是因為記憶體可能不夠用
所以才會想每次讀取一個BYTE
還有你說"在读写时需要不断调整读写的大小"
但讀取的長度不是設定一次就可以了嗎
為何要不斷調整??
[em06]CMD16的功能呢个是:Selects a block length (in bytes) for all following block commands (read & write).
对于读写的要求是:The only valid block length for write is 512 bytes. The valid block length for read is 1 to 512 bytes. A set block length of less than 512 bytes will cause a write error. The card has a default block length of 512 bytes. CMD16 is not mandatory if the default is accepted.
所以由于你要设定一个低于512 的数值进行读操作,当下一次写操作之前必须设回512,以后再进行读操作时要再设成低于512的数值,如此循环往复,我说的是这个意思[em07]
感謝大大...
所以說對MUC而言
還是要有512BYTES的BUFFER來對SD CARD做R/W
[em08]
感謝大大...
所以說對MUC而言
還是要有512BYTES的BUFFER來對SD CARD做R/W
[em08]
在read操作时是可以按照byte来做的,没有问题。SD card内并不是没512byte一个地址,而是字节地址!所以,按byte来read是可行的。
但是,就像楼主提到的,当你按照byte来read,但是在write的时候又必须重新设定为512bytes/block,这个重新设置的动作可能会导致SD card工作不稳定。目前测试过,当你设定好block size=1,此后如果不进行重新设定的动作,一般是没有问题的,但是重新设定后会在某些情况下出现不稳定!