logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[STM32F7] Jak SDMMC obsługuje tylko jedną kartę SD a nie więcej?

Freddie Chopin 26 Sty 2019 20:37 927 9
REKLAMA
  • #1 17732487
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    W rozdziale o SDMMC w dokumentacji STM32F7 na samiutkim początku można wyczytać źe:

    Cytat:
    The current version of the SDMMC supports only one SD/SDIO/MMC4.2 card at any one time and a stack of MMC4.1 or previous.


    Moje pytanie jest takie - w jaki sposób niby SDMMC może wspierać jedną kartę, a nie wspierać więcej? Przecież obsługa jednej albo 10-ciu kart z punktu widzenia hosta (układu peryferyjnego SDMMC) jest nie do odróżnienia - on po prostu wysyła komendy i zajmuje się odbiorem odpowiedzi. Innymi słowy - wsparcie dla wielu kart musi być zapewnione w sofcie (np. poprzez wysyłanie CMD7 przed każdorazowym dostępem do karty aby ją "wybrać"), a sprzęt nic do tego nie ma.

    Przy okazji wciąż zastanawiam się nad tym wsparciem dla kart MMC - wg mojej wiedzy karty MMC umarły już jakiś czas temu, największe jakie widziałem do kupienia mają "aż" 1 GB i są pewnie "nowe" (w znaczeniu że mają z 5-10 lat i już ich tak czy siak nie produkują), więc czy te informacje o wsparciu odnoszą się faktycznie do _kart_ czy może raczej chodzi o e-MMC?
  • REKLAMA
  • #2 17732840
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #3 17732847
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Marek_Skalski napisał:
    Może warto zapytać u źródła?

    Nie mam kontaktów, a na forum ST chyba szkoda pytać, bo się tam jeszcze nie doczekałem żadnej odpowiedzi (;
  • #4 17735558
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Może z tym ograniczeniem do jednej karty chodzi o to co można wyczytać z dokumentacji SD (swoją drogą chyba najbardziej durny dokument jaki w życiu widziałem):

    Cytat:
    4.3.11 High-Speed Mode (25 MB/sec interface speed)
    ...
    Because it is not possible to control two cards or more in the case that each of them has a different timing
    mode (Default and High-Speed mode) and in order to satisfy severe timing, the host shall drive only one
    card. CLK/CMD/DAT signal shall be connected in 1-to-1 between the host and the card.


    Nawet jeśli o to by chodziło, to w sumie przecież nikt nie każe używać high-speed, no nie? (;

    Edit: Spytałem też na forum ST, może tym razem mi się poszczęści [; https://community.st.com/s/question/0D50X0000AFsF4RSQV/sdmmc-sdio-why-max-1-sd-card-only
  • #5 17763812
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Im dłużej o tym myślę, tym bardziej nic nie wiem. Niby na pierwszej stronie rozdziału od SDMMC pisze, że obsługiwana jest tylko jedna karta SD, za to trochę dalej można przeczytać:

    Cytat:
    39.4.4 Card identification process

    ...

    For the SD card, the identification process starts at clock rate F od , and the SDMMC_CMD line output drives are push-pull drivers instead of open-drain. The registration process is accomplished as follows:
    1. The bus is activated.
    2. The SDMMC card host broadcasts SD_APP_OP_COND (ACMD41).
    3. The cards respond with the contents of their operation condition registers.
    4. The incompatible cards are placed in the inactive state.
    5. The SDMMC card host broadcasts ALL_SEND_CID (CMD2) to all active cards.
    6. The cards send back their unique card identification numbers (CIDs) and enter the Identification state.
    7. The SDMMC card host issues SET_RELATIVE_ADDR (CMD3) to an active card with an address. This new address is called the relative card address (RCA); it is shorter than the CID and addresses the card. The assigned card changes to the Standby state. The SDMMC card host can reissue this command to change the RCA. The RCA of the card is the last assigned value.
    8. The SDMMC card host repeats steps 5 through 7 with all active cards.


    Skoro obsługiwana jest jedna, to po co opisywać jak wykryć wiele?
  • REKLAMA
  • #6 17763889
    tadzik85
    Poziom 38  
    Posty: 3404
    Pomógł: 415
    Ocena: 16
    oj Freddie, a przeczytaj dokładniej cytowane przez siebie zdanie z 1 posta.
  • REKLAMA
  • #9 17764322
    tadzik85
    Poziom 38  
    Posty: 3404
    Pomógł: 415
    Ocena: 16
    Freddie Chopin napisał:
    No przeczytałem i?
    ograniczenie dotyczy tylko standardu 4.2.

    w L5 jest już lepiej. w F4 jest tak samo.
  • #10 17764663
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    tadzik85 napisał:
    ograniczenie dotyczy tylko standardu 4.2.

    Niestety, nie ma tak dobrze... Moim zdaniem należy ten fragment rozumieć jako "jedna karta SD, jedna karta SDIO, jedna karta MMC 4.2, wiele kart MMC 4.1 (lub wcześniejszych)". W STM32F7 (jak zresztą w wielu innych rodzinach) nawet nie ma wsparcia dla wielu elementów standardu 4.x dla kart SD, takich jak DDR czy UHS. Nawet jest to napisane wprost kilka zdań wyżej:

    Cytat:
    The SDMMC features include the following:
    • Full compliance with MultiMediaCard System Specification Version 4.2. Card support
    for three different databus modes: 1-bit (default), 4-bit and 8-bit
    • Full compatibility with previous versions of MultiMediaCards (forward compatibility)
    • Full compliance with SD Memory Card Specifications Version 2.0
    • Full compliance with SD I/O Card Specification Version 2.0: card support for two
    different databus modes: 1-bit (default) and 4-bit


    tadzik85 napisał:
    w L5 jest już lepiej

    Jest dokładnie to samo, z tym że napisali wprost o eMMC zamiast pisać o (nieistniejących) kartach MMC.

Podsumowanie tematu

✨ W dyskusji poruszono kwestię ograniczenia obsługi kart SD przez interfejs SDMMC w STM32F7, który według dokumentacji wspiera tylko jedną kartę. Uczestnicy zastanawiali się, dlaczego interfejs nie obsługuje wielu kart, wskazując, że z perspektywy hosta nie ma różnicy między jedną a wieloma kartami, a wsparcie dla wielu kart powinno być realizowane w oprogramowaniu. Wspomniano również o różnicach w standardach MMC i SD, a także o ograniczeniach związanych z wersją standardu 4.2. Uczestnicy sugerowali kontakt z inżynierami aplikacyjnymi ST oraz zwrócili uwagę na nieaktualność kart MMC.
Wygenerowane przez model językowy.
REKLAMA