-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erj
e.net!feeder.erje.net!news-out.netnews.com!newsin.alt.net!fdcspool2.netnews.com
!fdc3.netnews.com!news-out.netnews.com!news.alt.net!fdc2.netnews.com!peer02.ams
1!peer.ams1.xlned.com!news.xlned.com!peer01.ams4!peer.am4.highwinds-media.com!n
ews.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-
spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Newsgroups: pl.misc.elektronika
X-Mozilla-News-Host: news://news.tpi.pl:119
From: Atlantis <m...@w...pl>
Subject: karta SD i pamięć RAM na jednej magistrali - dziwne zachowanie
Date: Sat, 17 Apr 2021 12:30:49 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101
Thunderbird/78.9.0
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: pl
Content-Transfer-Encoding: 8bit
Lines: 48
Message-ID: <607ab8d9$0$508$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 83.27.223.230
X-Trace: 1618655449 unt-rea-a-01.news.neostrada.pl 508 83.27.223.230:52820
X-Complaints-To: a...@n...neostrada.pl
X-Received-Bytes: 3630
Xref: news-archive.icm.edu.pl pl.misc.elektronika:764138
[ ukryj nagłówki ]Jest sobie układ z MCU STM32F107. Do magistrali SPI3 podłączone dwa
urządzenia: karta SD oraz pamięć RAM 23LC1024. Każde z urządzeń z osobna
dział prawidłowo. Mogę zapisywać i odczytywać dane do/z pamięci RAM, a
karta SD jest prawidłowo obsługiwana przez FatFS. Każde z urządzeń jest
aktywowane software'owo swoim własnym pinem CS.
Bardzo konkretny problem pojawia się natomiast w bardzo konkretnej
sytuacji. Mianowicie:
1) W programie mamy otwarty plik, z którego kilkanaście razy na sekundę
czytana jest porcja danych.
2) Raz na 25 sekund wykonywany jest test zapisu i odczytu do/z pamięci
23LC1024. Trafia do niej pewna porcja danych, która następnie jest
odczytywana.
Problem pojawia się w momencie, gdy po zakończeniu ostatniej operacji na
SPI RAM przychodzi czas na kolejną operację na karcie (czyli w
opisywanym przypadku odczyt kolejnego fragmentu danych z pliku, chociaż
próbowałem wstawiać też w tym miejscy operację zapisu do innego pliku i
efekt był taki sam). Mianowicie wywalany jest wtedy błąd funkcji
readSECTOR sterownika karty SD, którego numer wskazuje na odrzucenie
komendy READ_SINGLE, wysłanej do karty (funkcja wysyłająca komendę
odbiera z magistrali odpowiedź inną niż 0).
Problem występuje raz, odczyty kolejnych porcji danych już tego błędu
nie wywalają, to znaczy do czasu aż upłynie kolejnych 25 sekund i
przyjdzie kolej odczytania porcji tuż po zakończeniu kolejnej operacji
na pamięci SPI.
Same operacje na RAM-ie poprzedzające ten błąd wykonują się prawidłowo.
Dodatkowe informacje/co udało mi się wykluczyć:
1) Analizator stanów logicznych pokazuje, że linie CS obydwu urządzeń
nigdy NIE znajdują się w stanie niskim jednocześnie.
2) Czas jaki upływa od podniesienia linii CS_RAM-u do upuszczenia linii
CS_SD zdaje się nie mieć znaczenia. Normalnie pomiędzy tymi zdarzeniami
upływa trochę ponad 3ms (pomiędzy operacjami jest jeden printf) ale
próbowałem wstawiać tam ręcznie opóźnienia idące w setki ms - nie pomagało.
3) Magistrala SPI jest konfigurowana przy inicjacji karty SD. Sterownik
pamięci RAM nie ingeruje w konfigurację magistrali. Przyjmuje stan
zastany i jedynie wysyła/odbiera dane.
4) Nie używam RTOS-a. Wszystkie operacje są wykonywane sekwencyjnie w
pętli głównej.
5) Nie używam przerwań do transmisji SPI ani nie inicjuję transmisji z
funkcji obsługi przerwań.
6) Nie używam DMA do obsługi transmisji SPI.
Ktoś ma jakiś pomysł co może być przyczyną tak dziwnego zachowania
układu/programu? Co jeszcze mogę sprawdzić?
Następne wpisy z tego wątku
- 17.04.21 15:32 jacek
- 17.04.21 17:14 Atlantis
- 17.04.21 18:38 Grzegorz Niemirowski
- 17.04.21 19:34 Marek
- 21.04.21 22:08 Atlantis
- 22.04.21 09:00 Marek
- 22.04.21 09:44 Atlantis
Najnowsze wątki z tej grupy
- Procesor NMOS i karta CF
- Jak sprawdzic uC
- radyjko znalazłem
- Telewizor przestał widzieć sygnał z anteny
- LED
- System operacyjny dla 6800?
- Przyłączenie działki do sieci elektrycznej
- Działalność nierejestrowana/definicja sprzętu elektronicznego/misie i kolejki
- Smukły, długi ściągacz izolacji do kynaru
- rezystor 3 omy 400W
- [newbie] Jaki multimetr za 2-4 stówy?
- szafka sieciowa
- Raspberry Pi 5 + dyski SATA
- lutownica na węgiel
- Znów czary (albo niewiedza) - tym razem fotowoltaika
Najnowsze wątki
- 2024-05-24 Chiński bestseller w Europie. Ford "martwi się nową konkurencją"
- 2024-05-24 Wiewiórki, szczury i myszy...
- 2024-05-24 Warszawa => QA Manager <=
- 2024-05-24 Warszawa => AI Specialist <=
- 2024-05-24 Zabrze => Analityk biznesowo-systemowy <=
- 2024-05-24 Ulm => Technischer Rollouter (d/m/w) <=
- 2024-05-24 Warszawa => Senior Rust Software Engineer <=
- 2024-05-24 Warszawa => Spedytor międzynarodowy <=
- 2024-05-24 Kraków => Head of International Freight Forwarding Department <=
- 2024-05-24 Warszawa => Senior Software Engineer PHP (BillPro) Contractor <=
- 2024-05-24 Warszawa => Senior Software Engineer PHP (BillPro) Kontraktor <=
- 2024-05-24 Warszawa => Cybersecurity Consultant <=
- 2024-05-24 Warszawa => Full Stack web developer (obszar .Net Core, Angular6+) <=
- 2024-05-24 Warszawa => React Native Developer <=
- 2024-05-24 Re: Ambasador USA zdradza: TVN Style nie jest firmą Unii Europejskiej :-)