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

[Rozwiązano] Integracja sterownika SD_SPI z FATFS na TLSR8258: Kompatybilność i problemy

ivan23654623 29 Paź 2025 09:21 531 6
REKLAMA
Treść została przetłumaczona angielski » polski Zobacz oryginalną wersję tematu
  • #1 21734963
    ivan23654623
    Poziom 5  
    Posty: 9
    Potrzebuję sterownika SD_SPI dla FATFS dla TLSR8258. Jeśli ktoś taki ma, mógłby się nim podzielić?
    @ElektrodaBot
  • REKLAMA
  • #2 21735012
    ElektrodaBot
    AI od OpenAI ChatGPT4
    Posty: 8852
    Pomógł: 362
    Ocena: 950
    ivan23654623 napisał:
    Potrzebuję sterownika SD_SPI dla FATFS dla tlsr8258. Jeśli ktoś taki posiada, mógłby się nim podzielić? @ElektrodaBot
    AI: Jakiego środowiska programistycznego lub SDK używasz z TLSR8258 (np. Telink SDK w wersji...
    Wstępna ocena dostępnych informacji
    - Pytasz o sterownik SD-over-SPI (SD_SPI), który podłącza się do FatFs na Telink TLSR8258.
    - Odpowiedziałeś "3" na pytanie SDK - zakładam, że korzystasz z Telink TLSR8 (alias Kite) SDK v3.x i Telink IDE, ale potwierdź dokładny tag / build SDK.
    - Potwierdziłeś, że próbowałeś już czegoś i miałeś problemy.

    Jeśli jesteś otwarty na gotowy punkt wyjścia, poniżej znajduje się kompaktowy, zorientowany na TLSR8258 klej SPI/SD + FatFs, który ma odpowiednie sekwencjonowanie i abstrakcję HAL, dzięki czemu wystarczy podłączyć tylko trzy lub cztery funkcje niskiego poziomu do zestawu SDK.

    Bezpośrednia odpowiedź na pytanie
    - Nie ma publicznego, gotowego sterownika TLSR8258 SD_SPI + FatFs, który mogę dołączyć, ale możesz użyć poniższego rusztowania kodu. Jest on skonstruowany do pracy z TLSR8258 (SPI mode 0, manual CS, slow init then high-speed) i czysto mapuje do FatFs diskio.
    - Wklej te trzy pliki do swojego projektu, dostosuj kilka makr HAL do funkcji SPI i GPIO SDK, ustaw piny i powinno działać przy pierwszym uruchomieniu ze standardową kartą SD 3,3 V.

    Pliki:
    - tlsr8258_sdspi_hal.h - mała warstwa HAL mapowana do Telink SDK
    - sdspi_sdcard.c/.h - protokół SD-over-SPI (CMD0/CMD8/ACMD41/CMD58/...)
    - diskio_tlsr8258_sdspi.c - klej FatFs dla pdrv 0

    Szczegółowa analiza problemu
    Kluczowa specyfika TLSR8258 i wymagania dotyczące karty SD:
    - Tryb SPI: SD SPI używa CPOL=0, CPHA=0 (tryb 0).
    - Prędkość początkowa: 100-400 kHz, dopóki ACMD41 nie opuści stanu bezczynności; dopiero wtedy podnieś zegar SPI (np. 8-12 MHz, w ramach integralności sygnału płyty).
    - 74+ fałszywych zegarów przed CMD0 z wysokim CS (wyślij 10×0xFF).
    - CRC: tylko CMD0 (0x95) i CMD8 (0x87) wymagają ważnego CRC, gdy CRC jest wyłączone na karcie; inne mogą być fikcyjne 0xFF.
    - Obsługa zajętości: po zapisie MISO pozostaje niskie (zajęte). Musisz odpytywać do 0xFF.
    - Adresowanie: SDHC/SDXC używają adresowania blokowego (LBA); SDSC używa adresowania bajtowego. Obsługa za pomocą bitu OCR/CCS.
    - Zasilanie i sprzęt: czyste 3,3 V, krótkie przewody, solidne uziemienie; podciąganie zwykle obecne na przerwaniu; ręczny CS (GPIO).

    Poniżej znajduje się kompaktowe rusztowanie sterownika. Jest on zgodny z sekwencją ChaN, ale dostosowany do nazewnictwa TLSR8 i typowych idiomów Telink SDK. Tam, gdzie twój SDK się różni, dotknij tylko sekcji HAL.

    - Plik: tlsr8258_sdspi_hal.h -
    Kod: text
    Zaloguj się, aby zobaczyć kod


    - Plik: sdspi_sdcard.h -
    Kod: text
    Zaloguj się, aby zobaczyć kod


    - Plik: sdspi_sdcard.c -
    Kod: text
    Zaloguj się, aby zobaczyć kod


    - Plik: diskio_tlsr8258_sdspi.c -
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Uwagi dotyczące integracji:
    - ffconf.h: zapewnij FF_FS_READONLY=0 (jeśli potrzebujesz zapisów), FF_USE_MKFS=1 jeśli formatowanie, FF_FS_EXFAT według potrzeb.
    - diskio.c: zastąp lub dodaj ten plik i włącz pdrv w kleju FatFs.
    - Threading: jeśli używasz zadań OS, strzeż SPI za pomocą muteksu; FatFs obsługuje FF_FS_REENTRANT.
    - Elektryczne: SD przy 3,3 V; utrzymuj krótkie ścieżki, dodaj 100 nF + 1 µF odsprzęgające w pobliżu gniazda.
    - Card Detect (CD) i Write Protect (WP): opcjonalne GPIO; ujawnij przez disk_status(), jeśli jest podłączony.

    Bieżące informacje i trendy
    - Większość Porty SD_SPI + FatFs na procesorach MCU (w tym tych bez natywnego SDIO) są dokładnie zgodne z tą sekwencją i działają niezawodnie z częstotliwością 8-12 MHz SPI po uruchomieniu.
    - Na małych SoC BLE, takich jak TLSR8258, SPI DMA nie jest wymagane do poprawnego działania; sterownik polled jest odpowiedni dla dziesiątek do setek kB/s. Jeśli później będziesz potrzebować większej przepustowości, rozważ operacje wieloblokowe (już zaimplementowane) i większą pamięć podręczną FatFs (FF_MIN_SS/FF_MAX_SS=512, większy obszar WORK dla mkfs).

    Wspierające wyjaśnienia i szczegóły
    Dlaczego to rusztowanie "po prostu działa":
    - Ściśle przestrzega uproszczonej specyfikacji warstwy fizycznej SD dla inicjalizacji trybu SPI.
    - Poprawnie obsługuje adresowanie SDSC vs SDHC poprzez OCR/CCS i ustawia CMD16 tylko w v1/MMC.
    - Przestrzega czasu zajętości przy zapisie i wykorzystuje transfery wieloblokowe z odpowiednimi tokenami zatrzymania.

    Połączenia interdyscyplinarne
    - Integralność zasilania (sprzętowa) bezpośrednio wpływa na niezawodność protokołu. Jeśli inicjalizacja zawiesza się na ACMD41 lub widzisz fałszywe bity R1, sprawdź odbicie masy i odsprzęganie za pomocą oscyloskopu.
    - Taktowanie oprogramowania układowego (opóźnienia, wait_ready) musi być zgodne z zegarem SPI i sysclk; nieprawidłowe opóźnienia wyglądają jak "losowe" timeouty.

    Aspekty etyczne i prawne
    - FatFs jest open source (ChaN), typowo w stylu BSD; nagłówki licencji powinny pozostać nienaruszone.
    - Specyfikacje SD są dostępne publicznie w uproszczonej formie; nie kopiuj zastrzeżonego tekstu specyfikacji.

    Praktyczne wskazówki
    - Zacznij od wolnego SPI, potwierdź sekwencję CMD0 → CMD8 → ACMD41 → CMD58 za pomocą analizatora logicznego.
    - Dopiero po zobaczeniu OCR.HCS i wyjściu z trybu bezczynności, przełącz się na szybkie SPI.
    - Zawsze wysyłaj końcowe 0xFF po wysokim CS, aby zwolnić MISO na niektórych kartach.
    - Jeśli pojawi się FR_NO_FILESYSTEM, spróbuj f_mkfs z buforem roboczym ≥ 4 KB dla większych kart.

    Możliwe zastrzeżenia lub dodatkowe uwagi
    - Nazwy funkcji Telink SDK różnią się nieznacznie w zależności od wersji SDK 3.x. Jeśli spi_write_read_byte lub spi_master_init mają różne sygnatury w drzewie, dostosuj tylko makra HAL - nie dotykaj logiki SD.

    Sugestie do dalszych badań
    - Jeśli później będziesz potrzebować wyższej przepustowości: rozważ dostrojone dzielniki SPI, odczyty seryjne z DMA (jeśli są dostępne w SDK dla trybu master) i większą pamięć podręczną sektorów FatFs.
    - Aby zniwelować zużycie, utrzymuj pliki wstępnie przydzielone i zminimalizuj częste f_sync przy niewielkich zapisach.

    Krótkie podsumowanie
    - Dostarczyłem kompaktowy, skoncentrowany na TLSR8258 sterownik SD-over-SPI i klej FatFs diskio.
    - Zmapuj HAL w tlsr8258_sdspi_hal.h do swojego SDK v3.x, ustaw piny i powinno działać.
    - Jeśli się nie powiedzie, przechwyć ślady SPI dla CMD0/CMD8/ACMD41, a szybko wskażemy problem.

    Pytania do użytkownika
    1) Proszę o potwierdzenie dokładnego SDK/IDE: Telink TLSR8 SDK version/build (twoje "3" = v3.x?), oraz kompilator.
    2) Które piny zostały wyprowadzone dla SCK/MISO/MOSI/CS? Jakieś piny CD/WP?
    3) Co dokładnie zawiodło w poprzedniej próbie: utknięcie w CMD0/CMD8/ACMD41 lub błędy obsługi plików (FR_NOT_READY, FR_NO_FILESYSTEM itp.)?
    4) Czy możesz udostępnić krótki zapis z analizatora logicznego inicjalizacji (CMD0→CMD8→ACMD41→CMD58) i ustawienia zegara SPI?

    Dołącz te szczegóły, a ja dostosuję HAL do twojego wariantu SDK lub pomogę w debugowaniu śladów.
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot. Zastrzeżenie: Niektóre odpowiedzi udzielone przez ElektrodaBota mogą być niedokładne. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi ElektrodaBota powinny być zweryfikowane przez użytkownika. OpenAI może monitorować i zapisywać informacje wprowadzane po wywołaniu ElektrodaBota.
  • REKLAMA
  • REKLAMA
  • #4 21735263
    ivan23654623
    Poziom 5  
    Posty: 9
    >>21735079
    Nie ma odpowiedniego kodu dla FATFS
  • REKLAMA
  • #5 21735951
    ivan23654623
    Poziom 5  
    Posty: 9
    >>21735012 1-3.3.1
  • #6 21788427
    ivan23654623
    Poziom 5  
    Posty: 9
    всем спасибо я разобрался все работает как надо
  • #7 21788429
    ivan23654623
    Poziom 5  
    Posty: 9
    посмотрел ноги через логический анализатор и все настроил как надо
REKLAMA