阅读:1183回复:5
samsung flash 驱动编程问题,多谢指教。
K9f6408u0c
命令、地址、数据编为三个地址CMD_ADDR,ADD_ADDR,DATA_ADDR 我的测试程序为: //先擦除第0个块 CommandLatch(0x60,CMD_ADDR);//erase AddressLatch(0x00,ADD_ADDR); AddressLatch(0x00,ADD_ADDR);//set the block 0 CommandLatch(0xD0,CMD_ADDR);//erase Sleep(10); CommandLatch(0x70,CMD_ADDR); status=*(DATA_ADDR));//读状态 //写第0个块第0页 CommandLatch(0x00,CMD_ADDR); CommandLatch(0x80,CMD_ADDR);//set command //set address AddressLatch(0x00,ADD_ADDR); AddressLatch(0x00,ADD_ADDR); AddressLatch(0x00,ADD_ADDR); //写数据 for(iCount=0;iCount<512;iCount++) { *(DATA_ADDR)=0X88;//write data to Data I/O } CommandLatch(0x10,pucMem);//set command Sleep(10); CommandLatch(0x70,pucMem); status=(*(DATA_ADDR));//读状态 //读数据 CommandLatch(0x00,pucMem);//set command //set address AddressLatch(0x00,pucMem); AddressLatch(0x00,pucMem); AddressLatch(0x00,pucMem); Sleep(2); for(iCount=0;iCount<512;iCount++)// { buffer[iCount]=*(DATA_ADDR);//read data from Data I/O } 读出的结果都是ff. 结果我读写的结果不一样。我的擦除和写入后的状态字都为c0,应该是正确的. 请指教我程序的毛病,或是有什么可能问题? 再有,我读的设备号是对的。 |
|
沙发#
发布于:2004-06-07 16:21
你用的平台是什么,我刚解决了累似问题
|
|
板凳#
发布于:2004-06-07 16:30
是不是在写之前要加入0xe8命令同时要适当延时
|
|
地板#
发布于:2004-06-07 16:53
谢谢,我用的是wince
现在我的问题是,我察掉0快后,马上读,读出的结果有误。 有时是0xff(正确),有时还会变是0xaa,会不会是硬件有问题? 我的软件有毛病吗? 延迟我试验了。还不行。 |
|
地下室#
发布于:2004-06-08 14:23
你的读状态也没有加状态判断,这实际上是等待完成
|
|
5楼#
发布于:2004-06-09 17:08
可以用查询方式来检验擦除状态。
|
|
|