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

caramba

Members
  • Постов

    6
  • Зарегистрирован

  • Посещение

Информация

  • Город
    Воронеж

Электроника

  • Стаж в электронике
    3-5 лет
  • Сфера радиоэлектроники
    Микроконтроллеры

Достижения caramba

Новичок

Новичок (1/14)

  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

2

Репутация

  1. Флешку менял, то же поведение. А вот при перемонтировании без физического отключения проблем, вроде бы, не возникает: всё перезаписывается по несколько раз. Возможно, дело не в FatFS, а в USBH от ST. Пока копаю дальше, чего узнаю -- отпишусь
  2. Спасибо за ответ. Ошибки проверяю, монтирование завершается успешно. Контакт ID не используется, но спецификация микросхемы PHY говорит, что его можно оставлять подвешенным. В любом случае, использовать его я физически не смогу.
  3. Доброго времени суток. Использую STM32F767 и USB Host + FatFS (проект на CubeMX). Нужно время от времени вставлять в устройство USB-флешку и записывать на неё файл. Отлавливаю статус USB-устройства (HOST_USER_CLASS_ACTIVE), монтирую f_mount(дескриптор, путь, 1), пишу файл f_write(...), провожу f_close(...). Далее отмонтирую f_mount(NULL, "", 1) и жду, пока пользователь выдернет флешку. При первом проходе всё срабатывает отлично и ничто не возвращает ошибок. Когда пытаюсь повторить цикл, снова вставив флешку, почти (!) всегда контроллер зависает внутри функции f_write(...). Может, кто сталкивался?
  4. Доброго времени суток, форумчане. Поднял на STM32f407 LwIP, отправляю с ПК на МК UDP-пакеты. Обнаружил странную вещь: если пакет короче 550-ти байт, приходит нормально, если 550 или больше -- приходят только первые 550 байт (по крайней мере, такое значение лежит в поле len моего pbuf). Длина принимаемого пакета где-то ограничена? Подскажите, пожалуйста, если кто знает -- в чём может быть причина?
  5. Сам наконец-то разобрался (хотя обычно, если спрашиваю на форуме, это значит, что надежды нет). На случай, если кому-то понадобится. В CDC_Transmit_FS есть такой кусок кода: USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; if (hcdc->TxState != 0){ return USBD_BUSY; } В hcdc->TxState и лежит нужная информация. Использовать это в том виде, что есть, не всегда удобно, поэтому можно вынести как отдельную проверку перед вызовом CDC_Transmit_FS
  6. Всем доброго времени суток. Появилась необходимость использовать USB на STM32F407VG. В качестве теста собрал в CubeMX проект с USB CDC и нарвался на проблему: если отправлять одну порцию данных сразу после другой (т.е., несколько раз подряд вызывать CDC_Transmit_FS без задержек), то до адресата доходят 1-2 порции, после чего работа USB прекращается. Если вставить задержки между отправками -- проблем нет. Как я понимаю, причина в том, что я пытаюсь отправить новые данные, когда старые ещё не ушли. Если дело в этом, то перед отправкой нужно проконтролировать, чтобы передатчик освободился, т.е., нужна обработка какого-либо флага или callback-а. Я нашёл только обработчик прерывания OTG_FS_IRQHandler и флаг USB_OTG_DIEPINT_TXFE, который смотрю в обработчике, но это не помогает. Может, кто сталкивался с такой проблемой и знает, как решить? Спасибо
×
×
  • Создать...