-
Notifications
You must be signed in to change notification settings - Fork 2
SD_tmp
blahlt edited this page May 10, 2013
·
9 revisions
Atsakymai SPI rėžime gali būti trijų formatų: R1, R1b ir R2.
R1 formato atsakymą sudaro 1 baitą (8 bitus):
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Bito numeris | Pavadinimas | Aprašymas |
|---|---|---|
| 7 | Rezervuotas | Visada "0" |
| 6 | Parametrų klaida (angl. Parameter error) | Komandos argumentas (pvz. adresas, bloko dydis) viršija galimas reikšmes |
| 5 | Adreso klaida (angl. Address error) | Komandoje panaudotas adresas, kuris neatitinka bloko dydžio |
| 4 | Sekos trynimo klaida (angl. Erase sequence error) | Įvyko klaida trinant seką |
| 3 | CRC perdavimo klaida (angl. Communication CRC error) | Nepavyko paskutinės komandos CRC tikrinimas |
| 2 | Negalima komanda (angl. Illegal command) | Buvo perduoda negalima komanda |
| 1 | (angl. Erase reset) | |
| 0 | Budėjimo režimas (angl. In idle state) | Kortelė yra budėjimo rėžime ir vyksta inicializacija |
R1b formatas identiškas R1 tik perduoda užimtumo signalą (angl. busy signal). Užimtumo signalas (busy signal) gali būti bet kuris bitas, todėl kortelė galės priimti naujas komandas tik tada kai R1b formato atsakymo reikšmė bus 0 (visi 8 atsakymo bitai "0")
R2 formato atsakymas užima 2 baitus (16 bitų).
| 1 baitas | 2 baitas | ||||||||||||||
| 15 (7) | 14 (6) | 13 (5) | 12 (4) | 11 (3) | 10 (2) | 9 (1) | 8 (0) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Bito numeris | Pavadinimas | Aprašymas |
|---|---|---|
| 15 (7) | Rezervuotas | Kaip R1 (Visada "0") |
| 14 (6) | Parametrų klaida (angl. Parameter error) | Kaip R1 |
| 13 (5) | Adreso klaida (angl. Address error) | Kaip R1 |
| 12 (4) | Sekos trynimo klaida (angl. Erase sequence error) | Kaip R1 |
| 11 (3) | CRC perdavimo klaida (angl. Communication CRC error) | Kaip R1 |
| 10 (2) | Negalima komanda (angl. Illegal command) | Kaip R1 |
| 9 (1) | (angl. Erase reset) | Kaip R1 |
| 8 (0) | Budėjimo režimas (angl. In idle state) | Kaip R1 |
| 7 | (angl. Out of range) | |
| 6 | (angl. Erase param) | An invalid selection, sectors or groups, for erase |
| 5 | (angl. Write protect violation) | The command tried to write a write protected block |
| 4 | (angl. Card ECC failed) | Card internal ECC was applied but failed to correct the data |
| 3 | (angl. CC error) | Internal card controller error |
| 2 | (angl. Error) | A general or an unknown error occurred during the operation |
| 1 | (angl. Write protect erase skip) | Only partial address space was erased due to existing WP blocks |
| 0 | Rezervuotas | Visada "0" |
- Kortelės pasirinkimo (chip select) signalas turi būti "1" (/CS yra invertuotas). Paleidžiam minimum 74 "apšildymo" impulsus į kortelę (reikalinga, kad užsipildytų vidiniai kortelės registrai). Dažniausiai yra siunčiama 10 kartų 0xFF reikšmė (viso gaunasi 80 impulsų).
- Aktyvuojam kortelė į /CS paduodami "0" (aktyvuotas) ir palaukiam 5ms (kad stabilizuotusi įtampa).
- Siunčiam kortelei CMD0 komandą (įskaitant argumentą, CRC, pradžios ir pabaigos bitus): 0x40 0x00 0x00 0x00 0x00 0x95.
- Siunčiam du baitus "tuščių" duomenų (du kartus po 0x00), kad gautume atsakymą.