Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

STM32F7 jak obliczyć Flash access parameters dla pamięci obsługiwanej przes FMC

mycodename47 19 Kwi 2017 08:56 801 7
  • #1 19 Kwi 2017 08:56
    mycodename47
    Poziom 12  

    Witam, próbuje napisać własną bibliotekę do obsługi pamięci NADN Flash z wykorzystaniem FMC w STM32F7. Problem pojawił się gdy chcę obliczyć timingi podawane w cyklach zegara HCLK. W RM0385 znalazłem tabelkę z wymienionymi parametrami:
    STM32F7 jak obliczyć Flash access parameters dla pamięci obsługiwanej przes FMC
    Z kolei w AN2784 (nie jest to dokument dla F7, bo takiego nie udało mi się znaleźć):
    STM32F7 jak obliczyć Flash access parameters dla pamięci obsługiwanej przes FMC
    Obliczenia robię dla K9F1G08U0E i parametry, które otrzymuję nie są poprawne (testowałem wpisując otrzymane wartości do działającej biblioteki na HAL'ach). Czy ktoś na forum natkną się na podobny problem? Ewentualnie czy posiada ktoś wskazówki jak poprawnie to obliczyć?
    Pozdrawim

  • #2 20 Kwi 2017 19:08
    PDT
    Poziom 23  

    Mam K9F1G08U0D-SCB0 podłączony do STM32F429 z zegarem 168MHz. GPIO i FMC ustawione tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Zajrzyj do karty katalogowej pamięci, podane są czasy w ns, przelicz na cykle szyny, zaokrągl w górę do całych. I to tyle.

  • #3 21 Kwi 2017 08:36
    mycodename47
    Poziom 12  

    O widzę, że kolega z mojego miasta :D Czy mógłbyś powiedzieć mi które to są czasy? Czy to te które zaznaczyłem na zdjęciu? STM32F7 jak obliczyć Flash access parameters dla pamięci obsługiwanej przes FMC

  • #4 21 Kwi 2017 10:27
    PDT
    Poziom 23  

    W plikach nagłówkowych do biblioteki SPL/HAL te parametry są dobrze opisane:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    W Twoim przypadku, zakładając częstotliwość zegara 216MHz, czas cyklu wynosi około 4.7ns.
    Więc 'ALE Setup Time' wynosi 12ns, odpowiada mu parametr FMC_TARSetupTime i powinien wynieść 3 ( w moim poprzednim przykładzie jest 2 ale STM32F429 ma 168MHz => cykl 5.95 ns, więc 2 wystarcza).
    'CLE Setup Time' => FMC_TCLRSetupTime
    itd.

  • #5 21 Kwi 2017 12:21
    mycodename47
    Poziom 12  

    Aktualnie mój zegar to 16MHz, jeden takt 65,5 ns. Czyli każdy parametr wychodzi bliski zeru, zaokrąglam w górę i wpisuję same jedynki. Działa. Chciałbym się tylko upewnić czy zaznaczone przeze mnie w ostatnim poście to są te które mam brać do obliczeń.

  • #6 21 Kwi 2017 14:58
    Piotrus_999
    Poziom 39  

    Taki kombajn na 16MHz?

  • #7 21 Kwi 2017 15:30
    mycodename47
    Poziom 12  

    Piotrus_999 czy prędkość ma tutaj znaczenie? Jeśli tak mogę ustawić na 216, ale chce napisać bibliotekę, która będzie ustawiała FMC z automatycznym ustawianiem timingów FMC w zależności od zegara... Więc ma działać dla 16 i 216 Mhz.

  • #8 21 Kwi 2017 18:20
    PDT
    Poziom 23  

    Musisz zapewnić timingi nie mniejsze niż 'minimalne', sporadycznie ograniczenie jest od góry.
    Zazwyczaj oblicza się krytyczne timingi dla najwyższej częstotliwości. Dla mniejszych częstotliwości też działają, są wówczas po prostu za duże.

    Pomysł z kombinowaniem ustawień FMC dynamicznie wraz ze zmianami częstotliwości jest skrajnie niewygodny. Może się nawet okazać niewykonalny, przykładem pamięć z której wykonuje się program. W trakcie przeprogramowywania CPU traci dostęp do kodu i '0xDEADBEEF'.

    Są akrobaci przepisujący kod przełączający z pamięci programu do wbudowanej SRAM, improwizują tam stos, zamykają przerwania, czyszczą pamięć podręczną etc.

Szybka odpowiedź lub zadaj pytanie
Dziękuję Ci. Ta wiadomość oczekuje na moderatora.
 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME