Easyelectronics.ru

Электроника для всех
Текущее время: 18 фев 2018, 00:12

Часовой пояс: UTC + 5 часов



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: неработает f_mount и f_open библиотеки FatFS STM32
СообщениеДобавлено: 07 сен 2017, 15:18 
Только пришел

Зарегистрирован: 07 сен 2017, 14:48
Сообщения: 7
Вот код который я запускаю.
Код:
result = f_mount(&fileSystem, "0", 0);

   if (result == FR_OK)
   {

      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);


     uint8_t path[13] = "testfile.txt";
     path[12] = '\0';

     result = f_open(&testFile, (char*)path, FA_WRITE | FA_CREATE_ALWAYS);

     //if(f_open(&testFile, (char*)path, FA_WRITE | FA_CREATE_ALWAYS)!=FR_OK)
     if(result!=FR_OK)
     {
        Error_Handler();
     }
     else
     {

Функция result = f_mount(&fileSystem, "0", 0); отрабатывает успешно FR_OK.
А вот функция
result = f_open(&testFile, (char*)path, FA_WRITE | FA_CREATE_ALWAYS);
выдает результат FR_DISK_ERR
Хотя если функции f_mount последний параметр 1 то выдает туже ошибку FR_DISK_ERR

Код пишу в CubeMX и
System Workbench for STM32
Тренируюсь на плате nucleo F411RE
подключил флешку и несколько раз проверил правильность подключения все правильно.

Код здесь с рабочего примера.

А вот в дебаге результат выданный функцией.


Вложения:
Debag.jpg
Debag.jpg [ 63.91 Кб | Просмотров: 1257 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: неработает f_mount и f_open библиотеки FatFS STM32
СообщениеДобавлено: 07 сен 2017, 17:45 
Заглядывает иногда

Зарегистрирован: 09 янв 2017, 19:45
Сообщения: 103
А драйвер реализован, который с картой работает?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: неработает f_mount и f_open библиотеки FatFS STM32
СообщениеДобавлено: 07 сен 2017, 18:38 
Только пришел

Зарегистрирован: 07 сен 2017, 14:48
Сообщения: 7
RomanST77 писал(а):
А драйвер реализован, который с картой работает?

Я думаю что драйвер сгенерировал куб.
По началу я на Кардридер не поставил подтягивающие резисторы. После установки сообщение поменялось я думаю это доказывает что драйвер есть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: неработает f_mount и f_open библиотеки FatFS STM32
СообщениеДобавлено: 07 сен 2017, 18:59 
Заглядывает иногда

Зарегистрирован: 09 янв 2017, 19:45
Сообщения: 103
Ищите в проекте что-то типа sd_sdio.c, там должно быть что то типа этого:

const Diskio_drvTypeDef SD_Driver = {
...
};

Ставьте брейкпойнты и смотрите что там происходит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: неработает f_mount и f_open библиотеки FatFS STM32
СообщениеДобавлено: 08 сен 2017, 12:48 
Только пришел

Зарегистрирован: 07 сен 2017, 14:48
Сообщения: 7
RomanST77 писал(а):
Ищите в проекте что-то типа sd_sdio.c, там должно быть что то типа этого:

const Diskio_drvTypeDef SD_Driver = {
...
};

Ставьте брейкпойнты и смотрите что там происходит.

Нашол это объявление в файле sd_diskio.c
Код:
const Diskio_drvTypeDef  SD_Driver =
{
  SD_initialize,
  SD_status,
  SD_read,
#if  _USE_WRITE == 1
  SD_write,
#endif /* _USE_WRITE == 1 */
 
#if  _USE_IOCTL == 1
  SD_ioctl,
#endif /* _USE_IOCTL == 1 */
};

Вот retSD = FATFS_LinkDriver(&SD_Driver, SD_Path); функция которая использует SD_Driver. Она возвращает тоже значение которое было до вызова ее.
Вложение:
Debag SD_Driver.jpg
Debag SD_Driver.jpg [ 31 Кб | Просмотров: 1179 ]

Функцию FATFS_LinkDriver вызывает функция MX_FATFS_Init();
В ней есть место для вставки дополнительного кода инициализации /* additional user code for init */.
И это единственное место где допускается что то вставить свое. Во всей иерархии.
И какой код туда нужно добавить?
Код:
void MX_FATFS_Init(void)
{
  /*## FatFS: Link the SD driver ###########################*/
  retSD = FATFS_LinkDriver(&SD_Driver, SD_Path);

  /* USER CODE BEGIN Init */
  /* additional user code for init */     
  /* USER CODE END Init */
}


Я склоняюсь к тому что надо проверить запустить этот код на другом компьютере.
Я читал форумы где писали что один и тот же код работал на одном но не работал на другом компьютере.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: неработает f_mount и f_open библиотеки FatFS STM32
СообщениеДобавлено: 08 сен 2017, 13:19 
Заглядывает иногда

Зарегистрирован: 09 янв 2017, 19:45
Сообщения: 103
lsfgn писал(а):
И это единственное место где допускается что то вставить свое. Во всей иерархии.
И какой код туда нужно добавить?
Код:
void MX_FATFS_Init(void)
{
  /*## FatFS: Link the SD driver ###########################*/
  retSD = FATFS_LinkDriver(&SD_Driver, SD_Path);

  /* USER CODE BEGIN Init */
  /* additional user code for init */     
  /* USER CODE END Init */
}

Сюда ничего добавлять не надо.
Посмотрите что у вас в функции SD_initialize.
lsfgn писал(а):
Я читал форумы где писали что один и тот же код работал на одном но не работал на другом компьютере.

Бред.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: неработает f_mount и f_open библиотеки FatFS STM32
СообщениеДобавлено: 08 сен 2017, 17:26 
Только пришел

Зарегистрирован: 07 сен 2017, 14:48
Сообщения: 7
Нашол начало этой ошибки.
Вложение:
Debag SD_START_BIT_ERR.jpg
Debag SD_START_BIT_ERR.jpg [ 90.71 Кб | Просмотров: 1155 ]

Вернулись после ошибки вот сюда
Вложение:
Debag SD_START_BIT_ERR ret.jpg
Debag SD_START_BIT_ERR ret.jpg [ 101.02 Кб | Просмотров: 1155 ]

а потом сюда
Вложение:
Debag SD_START_BIT_ERR - копия - копия.jpg
Debag SD_START_BIT_ERR - копия - копия.jpg [ 74.24 Кб | Просмотров: 1155 ]

И так дальше

В функции SD_initialize ошибки небыло. Это получается уже чтение диска.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: неработает f_mount и f_open библиотеки FatFS STM32
СообщениеДобавлено: 08 сен 2017, 17:45 
Заглядывает иногда

Зарегистрирован: 09 янв 2017, 19:45
Сообщения: 103
Как подсоединена SD-карта и как инициализируется SDIO?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: неработает f_mount и f_open библиотеки FatFS STM32
СообщениеДобавлено: 08 сен 2017, 18:12 
Только пришел

Зарегистрирован: 07 сен 2017, 14:48
Сообщения: 7
RomanST77 писал(а):
Как подсоединена SD-карта и как инициализируется SDIO?

А разве успешное выполнение функции SD_initialize не указывает на правильность подключения?

Подключен кардридер на проводах не больше 20см.
5 резисторов к 3.3волтам 47к. на плате кардридер. все кроме тактирования. И еще подтягивающие в контроллере.
Show инициализация SDIO


Последний раз редактировалось lsfgn 08 сен 2017, 18:27, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: неработает f_mount и f_open библиотеки FatFS STM32
СообщениеДобавлено: 08 сен 2017, 18:21 
Заглядывает иногда

Зарегистрирован: 09 янв 2017, 19:45
Сообщения: 103
MX_SDIO_SD_Init() ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: неработает f_mount и f_open библиотеки FatFS STM32
СообщениеДобавлено: 08 сен 2017, 18:29 
Только пришел

Зарегистрирован: 07 сен 2017, 14:48
Сообщения: 7
RomanST77 писал(а):
MX_SDIO_SD_Init() ?

Код:
void MX_SDIO_SD_Init(void)
{

  hsd.Instance = SDIO;
  hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;
  hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;
  hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;
  hsd.Init.BusWide = SDIO_BUS_WIDE_1B;
  hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;
  hsd.Init.ClockDiv = 250;

}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: неработает f_mount и f_open библиотеки FatFS STM32
СообщениеДобавлено: 08 сен 2017, 19:24 
Заглядывает иногда

Зарегистрирован: 09 янв 2017, 19:45
Сообщения: 103
ClockDiv из каких соображений значение?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: неработает f_mount и f_open библиотеки FatFS STM32
СообщениеДобавлено: 08 сен 2017, 20:37 
Только пришел

Зарегистрирован: 07 сен 2017, 14:48
Сообщения: 7
RomanST77 писал(а):
ClockDiv из каких соображений значение?

чтобы скорость снизить все таки провода почти 20см


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Yahoo [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB