Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: И снова SD card.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Jenya7
подключил к проекту FATFS. запустил следующий код.
Код
  DSTATUS status;
  FRESULT result;
  FATFS FATFS_Obj;

  status = disk_initialize(0);
  if (status == RES_OK)
  {
     result = f_mount(&FATFS_Obj, "0", 1);
     if (result == FR_OK)
      {
          FIL file;
          UINT nRead, nWritten;

          result = f_open(&file, "test.txt", FA_CREATE_ALWAYS | FA_WRITE);
          if (result == FR_OK)
          {
             f_write(&file, "hello", 4, &nWritten);
              f_close(&file);
          }

     }
     }

все прошло хорошо до записи в файл f_write(&file, "hello", 4, &nWritten);
тут я вывалился в HardFault_Handler но файл создался. вернулся на следующий день - уже ничего не работает. На status = disk_initialize(0); получаю RES_ERROR.
может у кого нибудь есть опыт работы с SD?
Jenya7
мда... ну ладно идем дальше.
у Чена посылка была реализована следующим образом
Код
static BYTE xchg_spi (BYTE dat    /* Data to send */)
{
    uint32_t timer = SD_DELAY;
    SPIx_DR = dat;
    while (SPIx_SR & (1<<7)) { if(!timer--) break; }  //busy flag

    return (BYTE)SPIx_DR;
}

я изменил на
Код
static BYTE xchg_spi (BYTE dat    /* Data to send */)
{
    uint32_t timer = SD_DELAY;
    SPIx_DR = dat;
    while (SPIx_SR & (1<<7)) { if(!timer--) break; }  //busy flag

    //Wait for any data on MISO pin to be received.
    timer = SD_DELAY;
    while (!(SPIx_SR & SPI_I2S_FLAG_RXNE)) { if(!timer--) break; }

    return (BYTE)SPIx_DR;
}

и теперь все нормально везде RES_OK. и в файл пишется без ошибки. но когда сую карту в комп и открываю файл - он пустой.

вобщем я пришел к такому заключению что низкоуровневые функции от Чена для STM32 проблемны. есть у кого нибудь хардварный лейер для STM32F1xx?
hd44780
Для Ф107 нету, есть для Ф105 (STM32F05RCT6). Читает/пишет норм. Могу дать вместе с прикрученной ФатФс.
Но мой код не очень причёсанный. Выдрал из каких-то китайцев, немного переделал под себя.
Соответственно хардварный лейер у меня не от Чена, а от тех китайцев. Я его вроде и не переделывал, только поменял SPL на регистры. SPL работало норм, но заметно тормозило на высокобитрейтных WAV типа stereo/48kHz (я плеер на VS1053 ваял).

От чена только Fats.
diskio.c тоже мой собственный, я туда ещё USB флэшку загнал (чего USB хосту зря пропадать-то rolleyes.gif ).
Jenya7
Цитата(hd44780 @ Feb 9 2016, 21:57) *
Для Ф107 нету, есть для Ф105 (STM32F05RCT6). Читает/пишет норм. Могу дать вместе с прикрученной ФатФс.
Но мой код не очень причёсанный. Выдрал из каких-то китайцев, немного переделал под себя.
Соответственно хардварный лейер у меня не от Чена, а от тех китайцев. Я его вроде и не переделывал, только поменял SPL на регистры. SPL работало норм, но заметно тормозило на высокобитрейтных WAV типа stereo/48kHz (я плеер на VS1053 ваял).

От чена только Fats.
diskio.c тоже мой собственный, я туда ещё USB флэшку загнал (чего USB хосту зря пропадать-то rolleyes.gif ).

спасибо. нашел какой то пример. подкорректировал. вроде работает.
rat
Цитата(hd44780 @ Feb 9 2016, 22:57) *
Для Ф107 нету, есть для Ф105 (STM32F05RCT6). Читает/пишет норм. Могу дать вместе с прикрученной ФатФс.
Но мой код не очень причёсанный. Выдрал из каких-то китайцев, немного переделал под себя.
Соответственно хардварный лейер у меня не от Чена, а от тех китайцев. Я его вроде и не переделывал, только поменял SPL на регистры. SPL работало норм, но заметно тормозило на высокобитрейтных WAV типа stereo/48kHz (я плеер на VS1053 ваял).

От чена только Fats.
diskio.c тоже мой собственный, я туда ещё USB флэшку загнал (чего USB хосту зря пропадать-то rolleyes.gif ).


Ну так поделитесь, если не коммерческая тайна )
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.