-
1. Data: 2022-11-03 12:36:28
Temat: Niezainicjowana karta SD miesza na magistrali SPI
Od: Atlantis <m...@w...pl>
Taka ciekawostka, zauważona podczas wczorajszego uruchamiania
(opisywanej nieco wcześniej) konstrukcji odtwarzacza/radia internetowego
na STM32F107. Po uruchomieniu FreeRTOS-a oraz lwIP zabrałem się za
testowanie pozostałych peryferiów. Sprawdziłem m.in. czy nadal działa
karta SD podłączone do magistrali SPI. Na tej samej magistrali pracuje
także pamięć RAM, używana w roli bufora.
Karta zgodnie z oczekiwaniami działa zupełnie prawidłowo - inicjuje się,
jest widziana przez FatFS, mogę czytać jej zawartość oraz płynnie
odtwarzać przechowywane na niej pliki MP3.
Wszystko działało całkowicie poprawnie do momentu, gdy w ramach
kolejnego testu zamiast karty zamontowałem pendrive'a (a więc nie była
już wywoływana jej inicjacja). Wszystko zaczęło się psuć - odtwarzanie
przerywało, zupełnie jakby był jakoś problem w komunikacji pomiędzy USB,
pamięcią SPI RAM oraz VS1003 (ten ostatni układ na osobnej magistrali
SPI). Na początku pomyślałem, że gdzieś zmniejszana jest prędkość
transmisji na SPI, ale okazało się, że wszystko jest skonfigurowane
poprawnie.
Aż w końcu znalazłem winowajcę - sama karta SD pozostawiona w gniazdku
miesza w komunikacji na magistrali, o ile nie zostanie zainicjowana.
Jeśli jej nie ma - wszystko jest w porządku. Jeśli jest i przejdzie
inicjację - też. Za to jeśli pozostawię ją niezainicjowaną, urządzenie
zaczyna szwankować.
Nigdy jeszcze nie spotkałem się z taką sytuacją, a kart SD na SPI
używałem w wielu swoich projektach, jeszcze z czasów AVR-ów. Linia MISO
miała ustawionego wewnętrznego pull-upa. Poza zauważeniu problemu
dodałem jeszcze zewnętrznego 10k, ale to nie pomogło. Linia CS rzecz
jasna jest podciągnięta do linii zasilania 3,3V rezystorem 10k, podobnie
jak linia SD_PRESENT.
Niby nie stanowi to dla mnie wielkiego problemu, bo docelowo karta nie
będzie hot-swapowalna i mogę ją po prostu inicjować przy każdym starcie
urządzenia. Zastanawia mnie po prostu potencjalna przyczyna takiego
zachowania.
-
2. Data: 2022-11-03 12:40:32
Temat: Re: Niezainicjowana karta SD miesza na magistrali SPI
Od: Dawid Rutkowski <d...@w...pl>
A jak się "inicjuje" kartę SD?
ZTCP to SD ma minimum dwa (a chyba nawet 3, ale może te 2 to dwa "podtryby") tryby
pracy - emulacja
MMC, czyli "zwykłe" SPI, oraz SD.
Ale nie wiem, który z tych trybów jest aktywny po włączeniu zasilania.
"Logicznie" byłoby, gdyby SPI - bo po coś jest ta emulacja MMC - ale może jednak SD?
-
3. Data: 2022-11-03 18:38:22
Temat: Re: Niezainicjowana karta SD miesza na magistrali SPI
Od: Atlantis <m...@w...pl>
On 3.11.2022 12:40, Dawid Rutkowski wrote:
> Ale nie wiem, który z tych trybów jest aktywny po włączeniu zasilania.
> "Logicznie" byłoby, gdyby SPI - bo po coś jest ta emulacja MMC - ale może jednak
SD?
Właśnie też o tym pomyślałem w pierwszym momencie, ale:
1. Kart SD na SPI używam w swoich projektach od lat, a dopiero teraz
udało mi się zaobserwować takie zachowanie.
2. Coś mi trudno uwierzyć, że w wiodącym standardzie nośników pamięci
takie nieprzewidywalne zachowanie mogłoby przejść w specyfikacji. Nie
mówię, że karta musi startować w trynie SPI, jednak niech przynajmniej
zostanie ten podstawowy punkt wspólny - trzymanie magistrali w stanie
wysokiej impedancji tak długo, jak linia CS jest w stanie wysokim.
-
4. Data: 2022-11-03 18:41:06
Temat: Re: Niezainicjowana karta SD miesza na magistrali SPI
Od: heby <h...@p...onet.pl>
On 03/11/2022 18:38, Atlantis wrote:
> 1. Kart SD na SPI używam w swoich projektach od lat, a dopiero teraz
> udało mi się zaobserwować takie zachowanie.
Czy sprawdzałeś aby kartę w nowym standardzie, jak XD czy HC? Mimo
róznych zapewnień, te karty zachowuja się bardzo niestabilnie w starych
urządzeniach. I to raczej nie z powodu pojemności.
-
5. Data: 2022-11-03 21:17:45
Temat: Re: Niezainicjowana karta SD miesza na magistrali SPI
Od: Marek <f...@f...com>
On Thu, 3 Nov 2022 18:38:22 +0100, Atlantis <m...@w...pl>
wrote:
> 2. Coś mi trudno uwierzyć, że w wiodącym standardzie nośników
> pamięci
> takie nieprzewidywalne zachowanie mogłoby przejść w specyfikacji.
> Nie
> mówię, że karta musi startować w trynie SPI, jednak niech
> przynajmniej
> zostanie ten podstawowy punkt wspólny - trzymanie magistrali w
> stanie
> wysokiej impedancji tak długo, jak linia CS jest w stanie wysokim.
Jeśli dobrze pamiętam to zgodnie ze specyfikacją linia CS jest
aktywna dopiero po zainicjowaniu trybu SPI. A inicjalizacja trybu SPI
(który nie jest domyślny) wymaga CS=1 i pewnej sekwencji SCK.
Zatem jeśli kartę nie zainicjujesz a host z innym urządzeniem na tym
samym SPI zacznie generować SCK to karta może się wtrącić na linii
MISO z CS=1
--
Marek
-
6. Data: 2022-11-04 09:11:24
Temat: Re: Niezainicjowana karta SD miesza na magistrali SPI
Od: Dawid Rutkowski <d...@w...pl>
czwartek, 3 listopada 2022 o 18:38:38 UTC+1 Atlantis napisał(a):
> On 3.11.2022 12:40, Dawid Rutkowski wrote:
>
> > Ale nie wiem, który z tych trybów jest aktywny po włączeniu zasilania.
> > "Logicznie" byłoby, gdyby SPI - bo po coś jest ta emulacja MMC - ale może jednak
SD?
> Właśnie też o tym pomyślałem w pierwszym momencie, ale:
> 1. Kart SD na SPI używam w swoich projektach od lat, a dopiero teraz
> udało mi się zaobserwować takie zachowanie.
> 2. Coś mi trudno uwierzyć, że w wiodącym standardzie nośników pamięci
> takie nieprzewidywalne zachowanie mogłoby przejść w specyfikacji. Nie
> mówię, że karta musi startować w trynie SPI, jednak niech przynajmniej
> zostanie ten podstawowy punkt wspólny - trzymanie magistrali w stanie
> wysokiej impedancji tak długo, jak linia CS jest w stanie wysokim.
Hehe, wiodącym, przecież wiadomo, czemu jest "wiodący" - bo najtańszy - a to ma swoją
cenę ;>
Może do tej pory używałeś kart MMC?
Tak czy siak - własnie po to pytałem, "jak się inicjalizuje" - może być na poziomie
kodu.
Kto wie, co tam jest za pomysł - a może być pokrętny, tak jak napisal Marek.
Bo SD to nie jest SPI.
Że ew. może emulować, to oznacza tylko tyle, ze będzie SPI, ale dopiero po wlączeniu
tego trybu.
-
7. Data: 2022-11-04 10:22:44
Temat: Re: Niezainicjowana karta SD miesza na magistrali SPI
Od: MKi <...@...com>
W dniu 2022-11-03 o 12:36, Atlantis pisze:
> ...
> karta SD podłączone do magistrali SPI. Na tej samej magistrali pracuje
> także pamięć RAM, używana w roli bufora.
Jeśli karta SD ma być wyjmowana to jest według mnie kiepski pomysł.
Wypadałby założyć, że do gniazda karty włożysz cokolwiek,
w szczególności zepsutą kartę (np. ze zwartymi wyprowadzeniami).
To natychmiast kładzie komunikację z pamięcią RAM i całe urządzenie
nie działa.
Pozdrowienia,
MKi