void WriteSignleBlock(void) // 写单块操作
{
LPSPI_DRV_MasterTransfer(SEND, CMD24, NULL, 6);//发送CMD24
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));//等待spi空闲
LPSPI_DRV_MasterTransfer(SEND, &slaveDataSend, &slaveDataReceive, 1);
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
LPSPI_DRV_MasterTransfer(SEND, &slaveDataSend, &slaveDataReceive, 1);// 发送两个时钟读取返回值
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
LPSPI_DRV_MasterTransfer(SEND, WSBF, NULL, 1); //发送写标志位
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
for(a=0;a<512;a++) //发送512个字节数据
{
LPSPI_DRV_MasterTransfer(SEND,&write_512byte[a], NULL, 1);//
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
}
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
LPSPI_DRV_MasterTransfer(SEND, &slaveDataSend, &slaveDataReceive, 1);
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
LPSPI_DRV_MasterTransfer(SEND, &slaveDataSend, &slaveDataReceive, 1); // 发送两个CRC校验码
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
for(i=0;i<6;i++)
{
LPSPI_DRV_MasterTransfer(SEND, &slaveDataSend, &slaveDataReceive, 1);
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
}
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
}
void ReadSignleBlock(void) // 读单块操作
{
LPSPI_DRV_MasterTransfer(SEND, CMD17, NULL, 6);//发送CMD17 读单块操作
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
LPSPI_DRV_MasterTransfer(SEND, &slaveDataSend, &slaveDataReceive, 1);
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
LPSPI_DRV_MasterTransfer(SEND, &slaveDataSend, &slaveDataReceive, 1);//发送两个时钟读取返回值
do{
LPSPI_DRV_MasterTransfer(SEND, &slaveDataSend, &slaveDataReceive, 1);
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
}while(slaveDataReceive!=0xfe); //读取读标志位
for(a=0;a<512;a++) //读512个字节数据
{
LPSPI_DRV_MasterTransfer(SEND, &slaveDataSend, &slaveDataReceive, 1);
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
read_512byte[a] = slaveDataReceive;
}
LPSPI_DRV_MasterTransfer(SEND, &slaveDataSend, &slaveDataReceive, 1);
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
LPSPI_DRV_MasterTransfer(SEND, &slaveDataSend, &slaveDataReceive, 1);//两个CRC校验码
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
LPSPI_DRV_MasterTransfer(SEND, CMD12, NULL, 6);//发送CMD12 停止读操作
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
for(i=0;i<6;i++)
{
LPSPI_DRV_MasterTransfer(SEND, &slaveDataSend, &slaveDataReceive, 1);
while(LPSPI_DRV_MasterGetTransferStatus(SEND,&STATUS));
}
}