Skocz do zawartości

[STM32F407 + FreeRTOS] Problem z pendrive


Pomocna odpowiedź

Napisano

Pracuję obecnie nad pewnym modułem, opartym na STM32F407. Jedną z jego funkcji ma być odtwarzanie dźwięku (za pomocą VS1003) streamowanego z sieci i odczytywanego z plików (m.in. MP3), zapisanych lokalnie na karcie SD lub pendrive. O ile streamowanie działa poprawnie, to w przypadku plików na nośniku USB natrafiłem na problem.

Do testów użyłem plików MP3 z nieco większym bitrate, aby mocniej obciążyć nośnik (nauczyło mnie tego doświadczenie z wcześniejszych projektów, o czym za chwilę). Z początku wszystko odtwarza się normalnie, jednak po jakimś czasie sterownik USB zawiesza się, wywalając następujące printy:

Sense Key  : 3
Additional Sense Code : 11
Additional Sense Code Qualifier: 0

Zadania niezwiązane z odtwarzaniem MP3 wykonują się dalej, więc najwyraźniej utyka tylko task sterownika USB.

Nauczony wcześniejszymi doświadczeniami myślałem, że rozwiązanie problemu będzie banalne. Spotkałem się już z czymś takim w nieco podobnym projekcie, na słabszym mikrokontrolerze (PIC32MX795F512L) - tam odtwarzanie MP3 o nieco większym bitrate również utykało, a rozwiązaniem okazała się zmiana priorytetów tasków tak, aby ten związany z USB był najwyżej. Po takiej zmianie problem zniknął całkowicie.

Niestety na STM32F407 taka zmiana nie rozwiązuje problemu. To znaczy odnoszę subiektywne wrażenie, że faktycznie problem pojawia się rzadziej i nieco później, ale jego wystąpienie jest nieuchronne. Odkryłem także, że tym razem nie odnosi się tylko do odtwarzania MP3 o większym bitrate. Próbowałem jeszcze pododawać w różnych miejscach innych tasków osDelay(1), aby task USB dostawał więcej czasu procesora, ale to nie pomaga.

Ktoś ma jakiś pomysł co może być nie tak? Bo mi już skończyły się pomysły i powoli zaczynam skłaniać się ku całkowitej rezygnacji z USB (płytka ma jeszcze slot SD), ale byłoby jednak trochę szkoda...

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...