×

Внимание

Форум находится в режиме только для чтения.

USB STM32

10 года 6 мес. назад #4778 от Stepanov Ivan
Stepanov Ivan создал тему: USB STM32
Здравствуйте! Не так давно сваял небольшой проект, касаемый работы через fatfs с usb флэшкой. Во время проверочных тестов было все не плохо, пока сегодня не столкнулся с не совсем мне понятной пролемой. При попытке отправить большое количество данных, порядка 128 кбайт, программа зависает в вот этих двух циклах (каждый раз по разному, либо в том либо в другом, реже - все проходит успешно):

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
  if(HCD_IsDeviceConnected(&USB_OTG_Core))
  {  
    do
    {
      status = USBH_MSC_Write10(&USB_OTG_Core,(BYTE*)buff,sector,512 * count);//(1)
      USBH_MSC_HandleBOTXfer(&USB_OTG_Core, &USB_Host);
      
      if(!HCD_IsDeviceConnected(&USB_OTG_Core))
      { 
        return RES_ERROR;
      }
    }
    while(status == USBH_MSC_BUSY );

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
или в этом
...
if(HCD_IsDeviceConnected(&USB_OTG_Core))
  {  
    
    do
    {
      status = USBH_MSC_Read10(&USB_OTG_Core, buff,sector,512 * count); //(2)
      USBH_MSC_HandleBOTXfer(&USB_OTG_Core ,&USB_Host);
      
      if(!HCD_IsDeviceConnected(&USB_OTG_Core))
      { 
        return RES_ERROR;
      }      
    }
    while(status == USBH_MSC_BUSY );

...

Насколько я понимаю и полученных мною данных, в представленных циклах контроллер "висит"
из за того что функции (1) и (2) возвращают USBH_MSC_BUSY. Причем спасает от зависания только передергивание флэшки. Передача данных идет в цикле, без всяких задержек (задержки ставил, эффект тот же). В чем может быть проблема? Переполнение буфера FIFO USB TX/RX? Но если бы данный эффект имел место быть, на мой взгляд, буфер, со временем опустошался бы... Подскажите пожалуйста, я уже совсем запутался...

P.S. При передаче небольшого объема данных все работает стабильно.
10 года 5 мес. назад #4855 от Stepanov Ivan
Stepanov Ivan ответил в теме Re: USB STM32
Всем спасибо, все свободны. Проблему решил, причину нашел. Как всегда, кривые ручонки и великий и ужасный STACK.
Время создания страницы: 0.040 секунд
Работает на Kunena форум