Staram się od jakiegoś czasu uruchomić komunikację z kartą pamięci SD przy pomocy biblioteki "fatfs" na układzie PIC32MX695F512H, bezskutecznie, funkcja disk_initialize(0), zwraca mi ciągle wartość "1" (STA_NOINIT).
Karta jest podłączona w podstawce pod napięcie 3,3V, takie samo jak cały układ. Piny MOSI => SDO3, MISO => SDI3, SCK => SCK3, oraz CS => PD4, połączenie elektryczne jest sprawdzone i wydaje się być prawidłowe, używam portu SPI3. Przy karcie zastosowałem kondensatory filtrujące, zgodnie z dokumentacją. Karta jest formatowana przy użyciu systemu FAT, z domyślnymi ustawieniami i ma 4GB pojemności.
Bity konfiguracyjne są następujące:
Mój plik zapewniający komunikację niskiego poziomu, wygląda następująco:
Siedzę nad tym od kilku dni, bardzo proszę o pomoc, gdzie jeszcze mogę szukać błędu? Program oczywiście kompiluje się bez błędów, po wykonaniu funkcji disk_initialize(0) która zwraca błąd program wykonuje się dalej poprawnie (obsługa USB, I2C, etc).
Debugowanie wykazało, że funkcja kończy działanie na lini if (send_cmd(CMD0, 0) == 1) { /* Enter Idle state */ (linia 348). Ciężko mi stwierdzić czy jest w ogóle jakaś komunikacja z kartą czy karta zwraca błąd, w każdym razie po wysłaniu tej komendy "send_smd" zwraca nie-jeden, co w zasadzie kończy wykonywanie całej funkcji.
----------------------------------------------------------------
Biblioteka "fatfs" - http://elm-chan.org/fsw/ff/00index_e.html
PIC32MX695F512H - http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en545654
Karta jest podłączona w podstawce pod napięcie 3,3V, takie samo jak cały układ. Piny MOSI => SDO3, MISO => SDI3, SCK => SCK3, oraz CS => PD4, połączenie elektryczne jest sprawdzone i wydaje się być prawidłowe, używam portu SPI3. Przy karcie zastosowałem kondensatory filtrujące, zgodnie z dokumentacją. Karta jest formatowana przy użyciu systemu FAT, z domyślnymi ustawieniami i ma 4GB pojemności.
Bity konfiguracyjne są następujące:
Code: c
Mój plik zapewniający komunikację niskiego poziomu, wygląda następująco:
Code: c
Siedzę nad tym od kilku dni, bardzo proszę o pomoc, gdzie jeszcze mogę szukać błędu? Program oczywiście kompiluje się bez błędów, po wykonaniu funkcji disk_initialize(0) która zwraca błąd program wykonuje się dalej poprawnie (obsługa USB, I2C, etc).
Debugowanie wykazało, że funkcja kończy działanie na lini if (send_cmd(CMD0, 0) == 1) { /* Enter Idle state */ (linia 348). Ciężko mi stwierdzić czy jest w ogóle jakaś komunikacja z kartą czy karta zwraca błąd, w każdym razie po wysłaniu tej komendy "send_smd" zwraca nie-jeden, co w zasadzie kończy wykonywanie całej funkcji.
----------------------------------------------------------------
Biblioteka "fatfs" - http://elm-chan.org/fsw/ff/00index_e.html
PIC32MX695F512H - http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en545654