-
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
- gasik
- Zbieranie danych przez www
- reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
- Problem z odczytem karty CF
- 74F vs 74HCT
- Newag ciąg dalszy
- Digikey, SN74CBT3253CD, FST3253, ktoś ma?
- Szukam: czujnik ruchu z możliwością zaączenia na stałe
- kabelek - kynar ?
- Podnieść masę o 0.6V
- Moduł BT BLE 5.0
- Pomiar amplitudy w zegarku mechanicznym
- ale zawziętość i cierpliwość
- Chiński elektrolizer tester wody
- Dzisiaj Bentlejem czyli przybieżeli sześciu Króli do Rysia na kasie
Najnowsze wątki
- 2025-01-04 gasik
- 2025-01-04 13. Raport Totaliztyczny: Powszechna Deklaracja Praw Człowieka Nie Chroni Przed Wyzyskiem Ani Przed Eksploatacją
- 2025-01-04 Zbieranie danych przez www
- 2025-01-04 reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
- 2025-01-04 w Nowym Roku 2025r
- 2025-01-04 Warszawa => Specjalista ds. IT - II Linia Wsparcia <=
- 2025-01-04 Warszawa => Java Developer <=
- 2025-01-04 Warszawa => Spedytor Międzynarodowy <=
- 2025-01-04 Warszawa => System Architect (Java background) <=
- 2025-01-04 Wrocław => Application Security Engineer <=
- 2025-01-04 Chrzanów => Specjalista ds. public relations <=
- 2025-01-04 Katowice => Key Account Manager (ERP) <=
- 2025-01-03 Problem z odczytem karty CF
- 2025-01-03 Jazda z Warszawy do Krakowa teslą
- 2025-01-03 Wrocław => Konsultant Wdrożeniowy Comarch XL/Optima (Księgowość i