Przeszukaj forum
Pokazywanie wyników dla tagów 'SDIO4BIT'.
Znaleziono 1 wynik
-
Rzecz jest owiana wieloma legendami. Jeżeli sprawdzić dokładniej, to HAL w zależności od wersji tworzył inny kod wynikowy, aniżeli wyselekcjonowany. Przykładowo na filmie ST: wybrano użycie interfejsu SDIO 4Bit mode, generowany kod wybierał 1Bit mode. Dla starszych wersji HAL/CubeMX wygląda to tak: A wygenerowany kod wyglądał tak: Koniec końców użytkownik najczęściej nie wie, że pracuje na interfejsie 1 bit zamiast 4. Ale program działa. W nowszych wersjach kod generowany przez HAL wygląda tak: Pomimo że jest faktycznie wybrany interfejs 4 bit, to program odwołujący się do interfejsu SDIO zwyczajnie zawiesza się i cały program nie działa. Wokół tematu narosło i utworzono wiele mitów: Według rozsiewanych mitów wszędzie doszukuje się malfunkcji po stronie elektrycznej... Od sugerowanego właściwego routingu na PCB, poprzez zakłócenia, dzwonienie, przesłuchy... Zbyt "silne" , czy zbyt "słabe" pull up'y na liniach SDIO, mające zwiększać podatność na zakłócenia ... Brzmi to tak, jakby projektanci z ST nie wiedzieli jak elektrycznie połączyć interfejs SDIO na PCB (czy to ma sens?). Taka sytuacja jest jak widać od 2018 roku - mity, legendy, pozamykane wątki i ani jednej solucji poza dobrymi radami w stylu "uważaj jak projektujesz PCB". Być może temat nie jest wielką wojną, ponieważ w ogóle z STM32 daje się dobić do karty SD. I także prawdopodobnie nie ma projektu, który by uzależnił jego egzystencję w zależności czy SDIO 4BIT mode zostało poprawnie uruchomione. Natomiast dziwnym wydawał się fakt, że ST opracowało ten interfejs w logice procesora, a teraz nie może czy nie potrafi go uruchomić? Długo dociekałem tego tematu i w zasadzie straciłem wiarę, że jest możliwe uruchomienie na STM32 SDIO 4BIT. W końcu spotkałem streamera na YT o nicku STM32World, który po naszej dyspucie udowodnił mi i pokazał, że da się uruchomić SDIO 4BIT mode na STM32. Po przeprowadzonych testach rzeczywiście zauważyłem że karta SD "przyspiesza" i odczyt jest szybszy od trybu 1bit. W zależności od konkretnie użytej karty oraz prędkości jej taktowania. Nie ma tak dobrze, że jest 4 razy szybciej niż w trybie 1bit, ale w granicach 2 razy szybciej faktycznie jest. Czasem trochę mniej, czasem trochę więcej ale jest to zauważalna różnica. Wystarczyły 3 magiczne linie tekstu/kodu żeby faktycznie SDIO4BIT mode dał się uruchomić. W trybie 1bit odczytywał dane raw bitmapy 510KB w 128 mS, w SDIO4BIT odczytał to w 68mS - w sumie dobra sprawa, bez dopłaty mieć działający taki interfejs. Przeprowadziłem próby na innych boardach F407VET6/ZGT6 i F103ZET6, wszędzie z podobnym skutkiem.
