void sdWrite(UINT32 address, BYTE *array_512)
{
	UINT8 seg0;
	UINT8 seg1;
	UINT8 seg2;
	UINT8 seg3;

	UINT16 ifcounter = 0;

	BYTE spiread;

	address = address << 9; 
	
	seg3 = ((address & 0xFF000000) >>24 );
	seg2 = ((address & 0x00FF0000) >>16 );
	seg1 = ((address & 0x0000FF00) >>8 );
	seg0 = 0;

	sdEnable();
   	FASTSPI_TX(0x58);
    	FASTSPI_TX(seg3);
    	FASTSPI_TX(seg2);
    	FASTSPI_TX(seg1);
    	FASTSPI_TX(seg0);
    	FASTSPI_TX(0xFF);

	do{
		FASTSPI_RX(spiread);
	}while(spiread != 0x00);


	FASTSPI_TX(0xFF);
    	FASTSPI_TX(0xFF);

   	 FASTSPI_TX(0xFE);
	
	for(ifcounter = 0; ifcounter<512 ; ifcounter++)
	{
		FASTSPI_TX(array_512[ifcounter]);
	}

	FASTSPI_TX(0xFF);
	FASTSPI_TX(0xFF);

	do{
		FASTSPI_RX(spiread);
		spiread &= 0x1F;
	}while(spiread != 0x05);
		

	do{
		FASTSPI_RX(spiread);
	}while(spiread != 0xFF);

	sdDisable();
	FASTSPI_TX(0xFF);
}