Перейти к содержанию
    

FatFS + SD и USB одновременно

Проект для STM32H743, генерированный столь нелюбимым всеми калоКубом.

Вроде бы раньше у меня получалось отдельно запускать SD и отдельно USB. А вот вместе - никак.....

Железо инициализируется без проблем.

Проблемы начинаюся в FATFS. Вот я (а точнее, не я, а любезный калокуб) инициализирую FatFS под два носителя

void MX_FATFS_Init(void)
{
  /*## FatFS: Link the SD driver ###########################*/
  retSD = FATFS_LinkDriver(&SD_Driver, SDPath);
  /*## FatFS: Link the USBH driver ###########################*/
  retUSBH = FATFS_LinkDriver(&USBH_Driver, USBHPath);

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

Когда USB драйвер полностью инициализирует все необходимое для работы с флешкой, пишу вот это

 

if (f_mount(&USBH_fatfs,  (TCHAR const*)USBHPath, 0) != FR_OK)
  {
    
		sprintf((char *)MSC_str, "Cannot Initialize FatFs!  \r\n ");
		HAL_UART_Transmit(&huart7, MSC_str, strlen((char *)MSC_str), 3000);            
  }
  else
  {
		sprintf((char *)MSC_str, "INFO : FatFs Initialized \r\n ");
		HAL_UART_Transmit(&huart7, MSC_str, strlen((char *)MSC_str), 3000);            

		res=f_open(&MyFile, "0:/USBHost.txt", FA_CREATE_ALWAYS | FA_WRITE);
    if (res != FR_OK)
    {

			sprintf((char *)MSC_str, "Cannot Open 'USBHost.txt' file  \r\n ");  /// Брейкпоинт срабатывает здесь, выдает ошибку FR_NOT_ENABLED
		  HAL_UART_Transmit(&huart7, MSC_str, strlen((char *)MSC_str), 3000);        
    }

FR_NOT_ENABLED - вроде как ошибка буквы диска. Меняю вызов файла 0:/USBHost.txt  на 1:/USBHost.txt  Получаю там же другую ошибку - FR_NO_FILESYSTEM

В другом месте есть работавший ранее с SD код

	CurrentPath="0:/";
	 if (f_mount(&fileSystem,  "", 0) == FR_OK)
		{
			res = f_opendir(&dir, CurrentPath);
			files_found=0;
	 	res = f_readdir(&dir, 0);
		while(1)
		{
			res = f_readdir(&dir, &fileInfo);
				if (res==FR_OK && fileInfo.fname[0])
			{
				files_found++;
			}
			
		else break;
		}
   }

Там уже другая ошибка - FR_INVALID_OBJECT

 

Что не так? 

 

Я даже не могу понять, что какие диски (0:\ и 1:\) чему соответствуют - что относится к USB, а что к SD. Где это задается?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 минут назад, murmur сказал:

Я даже не могу понять, что какие диски (0:\ и 1:\) чему соответствую

Как-то не "по-нашенски" задавать имена дисков 0 и 1, куда приятнее A и B :dirol:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

34 minutes ago, mantech said:

Как-то не "по-нашенски" задавать имена дисков 0 и 1, куда приятнее A и B :dirol:

Возможно, но с 0 и 1 работало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...