реклама на сайте
подробности

 
 
> И снова SD card., в связке с STM32F107VC
Jenya7
сообщение Feb 8 2016, 08:24
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



подключил к проекту 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 - Feb 8 2016, 08:39
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Jenya7
сообщение Feb 8 2016, 12:13
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



мда... ну ладно идем дальше.
у Чена посылка была реализована следующим образом
Код
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?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 18:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01354 секунд с 7
ELECTRONIX ©2004-2016