cancel
Showing results for 
Search instead for 
Did you mean: 

stm mass storage usb does not recognize.

Study Yahoo
Associate III
Posted on November 25, 2017 at 03:54

Hi mass storage is being implemented.

Nucleo-F207G is being tested.

en.stm32cubef2 \ STM32Cube_FW_F2_V1.7.0 \ Projects \ STM32F207ZG-Nucleo \ Applications \ FatFs \ FatFs_USBDisk

The sample is usb-detectable without any problem, and the txt file can be written well.

If you design code with cube as below, you can not detect usb.

0690X00000608wWQAQ.png0690X00000608suQAA.png0690X00000608wlQAA.png0690X00000608wUQAQ.png0690X00000608wvQAA.png0690X00000608tOQAQ.png0690X00000608x0QAA.png

If you create a project with cube, you have to change heap / stack size.

0690X00000608x5QAA.png

Appli_State value should be recognized as 1, even if you connect usb stick, it is still 0;

0690X00000608xAQAQ.png0690X00000608xFQAQ.png

I need to solve the problem, but I do not have enough time.

Below is main.c / usb_host.c source.

Have a great weekend!

main.c 

---------------

void FileReadWrite(void)

{

  FRESULT res;                                          

  uint32_t byteswritten;                     

  uint8_t wtext[] = ''This is STM32 working with FatFs'';                                    

  //printf(''in MSC_Application ...usbh path %s \r\n'',USBH_Path);

  if(f_mount(&USBDISKFatFs, (TCHAR const*)USBHPath, 0) != FR_OK) 

  {

//printf(''f_mount fail ...\r\n''); Error_Handler();

}/* FatFs Initialization Error */

  

else

  //printf(''mount ok...\r\n'');

   if(f_open(&MyFile, ''STM32.TXT'', FA_CREATE_ALWAYS | FA_WRITE) != FR_OK)

{

  //printf(''f_open  fail \r\n'');Error_Handler(); 

    }

    else

{

   //printf(''f_write ...\r\n'');

   res = f_write(&MyFile, wtext, sizeof(wtext), (void *)&byteswritten); 

   if((byteswritten == 0) || (res != FR_OK)) 

Error_Handler(); 

   else 

{

f_close(&MyFile);  

      printf(''success....\r\n'');

}

}

}

}

while (1)

  {

  /* USER CODE END WHILE */

    MX_USB_HOST_Process();

  /* USER CODE BEGIN 3 */     if(Appli_state==APPLICATION_START)

     {

       FileReadWrite();

       Appli_state = APPLICATION_IDLE;

       }

       else if(Appli_state==APPLICATION_IDLE)

       {

     }

  }

usb_host.c 

----------------

void MX_USB_HOST_Init(void)

{

  USBH_Init(&hUsbHostFS, USBH_UserProcess, HOST_FS);

  USBH_RegisterClass(&hUsbHostFS, USBH_MSC_CLASS);

  USBH_Start(&hUsbHostFS);

}

static void USBH_UserProcess  (USBH_HandleTypeDef *phost, uint8_t id)

{

  switch(id)

  {

  case HOST_USER_SELECT_CONFIGURATION:

  break;

   

  case HOST_USER_DISCONNECTION:

  Appli_state = APPLICATION_IDLE;

  f_mount(NULL, (TCHAR const*)'''', 0);  

  break;

   

  case HOST_USER_CLASS_ACTIVE:

  Appli_state = APPLICATION_START;

  break;

  case HOST_USER_CONNECTION:

  break;

  default:

  break;

  }

  /* USER CODE END 2 */

}

0 REPLIES 0