Easyelectronics.ru

Электроника для всех
Текущее время: 25 ноя 2017, 07:01

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



    • 10 шт. 2-слоя 100*100mm 2$. Быстрый заказ: JLCPCB.com
    • JLCPCB - это крупнейшая фабрика PCB прототипов в Китае.
    • Имеющий более 290,000 клиентов и выполняющий более 8,000 заказов в день.
    • 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 Кб | Просмотров: 796 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: неработает f_mount и f_open библиотеки FatFS STM32
СообщениеДобавлено: 07 сен 2017, 17:45 
Заглядывает иногда

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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
Сообщения: 85
Ищите в проекте что-то типа 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 Кб | Просмотров: 718 ]

Функцию 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
Сообщения: 85
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 Кб | Просмотров: 694 ]

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

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

И так дальше

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


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

Зарегистрирован: 09 янв 2017, 19:45
Сообщения: 85
Как подсоединена 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
Сообщения: 85
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
Сообщения: 85
ClockDiv из каких соображений значение?


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

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

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


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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