FatFs - unmount

Michal Grunt michal.grunt na vynet.cz
Pátek Září 20 16:35:43 CEST 2013


Jak správně odpojit SD kartu aby se na ni před odpojením správně zapsala data? Mám to takto:

f_mount(0,&fs)
f_open...
f_write...
f_sync...
f_close...
f_mount(0,0)
power_off


power_off je:
------------------
void power_off(void) {

  GPIO_InitTypeDef GPIO_InitStructure;

  if (!(Stat & STA_NOINIT)) {
    SDSELECT();
    SPI_wait_ready();
    SPI_release(SD_PORT_CS, SD_PIN_CS);
  }


  SPI_I2S_DeInit(SPI1);
  SPI_Cmd(SPI1, DISABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, DISABLE);

  // All SPI-Pins to input with weak internal pull-downs
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7
      | GPIO_Pin_6;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  Stat |= STA_NOINIT; // Set STA_NOINIT
}
------------------

Ale stejně to nefunguje na 100%. Při vyndání karty a přečtení v počítači je snad na každý třetí pokus  na kartě vidět soubor s nulovou délkou a je nejspíš poškozen protože nejde smazat. Kartu musím projet přes chkdsk a pak je opět použitelná. Nesetkal se s tím někdo?

Děkuji, MG


Další informace o konferenci Hw-list