====== SD kaart ====== //Seotud mooduliga: [HW] [[et:hardware:homelab:controller]]// See teegi osa sisaldab Kodulabori SD kaardi kasutamise funktsioone. ===== Andmetüübid ===== * **//static FATFS FATFS_Obj//** - FATFS_Obj on FATFS andmestruktuuri instants. Sisaldab ketaste identifikaatoreid. * **//FIL fil_obj//** - Failisüsteemi andmestruktuur, kuhu salvestatakse failide identifikaatorid. * **//DSTATUS//** - Koodid, mida kettaga seotud funktsioonid tagastavad. * //RES_OK// - (0) Toiming õnnestus. * //RES_ERROR// - (1) R/W viga. * //RES_WRPRT// - (2) Kirjutuskaitstud. * //RES_NOTRDY// - (3) Ketas ei ole valmis. * //RES_PARERR// - (4) Mõni parameetritest on vale. * **//FRESULT//** - Tähtsamad koodid, mida failidega seotud funktsioonid tagastavad. * //FR_OK// - (0) Toiming õnnestus. * //FR_DISK_ERR// - (1) Ketta I/O kihi viga. * //FR_INT_ERR// - (2) Üldine ketta viga. * //FR_NOT_READY// - (3) Ketas ei ole toiminguks valmis. * //FR_NO_FILE// - (4) Faili ei leitud. * //FR_NO_PATH// - (5) Aadressi ei leitud. * //FR_INVALID_NAME// - (6) Vale faili nimeformaat. * //FR_DENIED// - (7) Ketas on täis. * //FR_EXIST// - (8) Juurdepääs on keelatud. * //FR_INVALID_OBJECT// - (9) Faili / kausta objekt on vigane. * //FR_WRITE_PROTECTED// - (10) Ketas on kirjutuskaitstud. * //FR_INVALID_DRIVE// - (11) Ketta number on vale. * //FR_NO_FILESYSTEM// - (13) Toetatud FAT failisüsteemi ei leitud. * //FR_TIMEOUT// - (15) Kettaga ei saadud ühendust. * //FR_INVALID_PARAMETER// - (19) Mõni parameeter on vale. * **//ModeFlags//** - Faili võimalikud avamisrežiimid. * //FA_READ// - Fail avatakse lugemisrežiimis. * //FA_WRITE// - Fail avatakse kirjutusrežiimis. * //FA_OPEN_EXISTING// - Avab faili. Kui faili ei ole, siis tagastatakse veakood. * //FA_OPEN_ALWAYS// - Avab faili. Kui faili ei ole, siis loob selle. * //FA_CREATE_NEW// - Loob uue faili. Kui fail on juba olemas, siis tagastatakse veakood. * //FA_CREATE_ALWAYS// - Loob uue faili. Kui fail on juba olemas, siis kirjutatakse see üle. ===== Funktsioonid ===== * **//DSTATUS disk_initialize (BYTE drv)//** \\ Seadistab ketta. Parameetrid: * //drv// - Ketta number. Enamus juhtudel 0. * Tagastab DSTATUS koodi. * **//DSTATUS disk_status (BYTE drv)//** \\ Näitab ketta olekut. Parameetrid: * //drv// - Ketta number. Enamus juhtudel 0. * Tagastab DSTATUS koodi. * **//FRESULT f_mount (BYTE Drive, FATFS* FileSystemObject)//** \\ Seadistab failisüsteemi. Parameetrid: * //Drive// - Ketta number. Enamus juhtudel 0. * //FileSystemObject// - Viit failisüsteemi objektile. * Tagastab FRESULT koodi. * **//FRESULT f_open (FIL* FileObject, const TCHAR* FileName, BYTE ModeFlags)//** \\ Avab või loob faili. Parameetrid: * //FileObject// - Viit failisüsteemi objektile. * //FileName// - Faili nimi. * //ModeFlags// - Avamisrežiimi lipp. * Tagastab FRESULT koodi. * **//FRESULT f_close (FIL* FileObject)//** \\ Suleb faili. Parameetrid: * //FileObject// - Viit failisüsteemi objektile. * Tagastab FRESULT koodi. * **//FRESULT f_read (FIL* FileObject, void* Buffer, UINT ByteToRead, UINT* ByteRead)//** \\ Loeb failist etteantud arv baite andmeid. Parameetrid: * //FileObject// - Viit failiobjektile. * //Buffer// - Viit puhvrile, kuhu kirjutatakse loetud andmed. * //ByteToRead// - Loetavate baitide arv. * //ByteRead// - Viit muutujale, kuhu tagastatakse loetud baidid. * Tagastab FRESULT koodi. * **//FRESULT f_write (FIL* FileObject, const void* Buffer, UINT ByteToWrite, UINT* ByteWritten)//** \\ Kirjutab faili etteantud arv baite andmeid. Parameetrid: * //FileObject// - Viit failiobjektile. * //Buffer// - Viit andmetele, mis kirjutatakse faili. * //ByteToWrite// - Kirjutatavate baitide arv. * //ByteWritten// - Viit muutujale, kuhu tagastatakse kirjutatud baidid. * Tagastab FRESULT koodi. * **//FRESULT f_sync (FIL* FileObject)//** \\ Kirjutab puhvrites olevad andmed fail, et vähendada andmekadu voolukatkestuse korral. Kasutatakse rakendustes, kus fail on väga pikka aega avatud. Parameetrid: * //FileObject// - Viit failiobjektile. * Tagastab FRESULT koodi. * **//FRESULT f_mkdir (const TCHAR* DirName)//** \\ Loob kausta. Parameetrid: * //DirName// - Kausta nimi. * Tagastab FRESULT koodi. * **//FRESULT f_unlink (const TCHAR* FileName)//** \\ Kustutab faili või kausta. Parameetrid: * //FileName// - Objekti nimi. * Tagastab FRESULT koodi. * **//FRESULT f_rename (const TCHAR* OldName, const TCHAR* NewName)//** \\ Nimetab faili või kausta ümber. Parameetrid: * //OldName// - Objekti vana nimi. * //NewName// - Objekti uus nimi. * Tagastab FRESULT koodi. * **//TCHAR* f_gets (TCHAR* Str, int Size, FIL* FileObject)//** \\ Loeb failist etteantud pikkusega stringi. Parameetrid: * //Str// - Puhver, kuhu loetud andmed salvestatakse. * //Size// - Stringi pikkus. * //FileObject// - Viit failiobjektile. * Tagastab Str puhvri, kui oli edukas. * **//int f_putc (TCHAR Chr, FIL* FileObject)//** \\ Lisab faili tähemärgi. Parameetrid: * //Chr// - Tähemärk, mis lisatakse faili. * //FileObject// - Viit failiobjektile. * Tagastab 1, kui oli edukas. * **//int f_printf (FIL* FileObject, const TCHAR* Foramt, ...)//** \\ Lisab faili vormindatud stringi. Parameetrid: * //FileObject// - Viit failiobjektile. * //Foramt// - Stringi formaat. * ... * Tagastab kirjutatud märkide arvu, kui oli edukas. * **//DWORD f_tell (FIL* FileObject)//** \\ Kursori asukoht failis. Parameetrid: * //FileObject// - Viit failiobjektile. * Tagastab viitena lugemis/kirjutamiskursori asukoha failis. * **//FRESULT f_lseek (FIL* FileObject,DWORD Offset)//** \\ Viib kursori sooovitud asukohta failis. Parameetrid: * //FileObject// - Viit failiobjektile. * //Offset// - Soovitud asukoht baitides faili algusest. * Tagastab FRESULT koodi. ===== Näide ===== #include #include #include int main (void) { static FATFS FATFS_Obj; FIL fil_obj; // SD kaardi initsialiseerimine. disk_initialize(0); // Failisüsteemi initsialiseerimine. f_mount(0, &FATFS_Obj); // Tekitatakse tekstifail "fail.txt". f_open(&fil_obj, "/fail.txt", FA_CREATE_NEW); // Fail avatakse kirjutusreziimis. f_open(&fil_obj, "/fail.txt", FA_WRITE); // Faili kirjutamine. f_printf(&fil_obj, "SD Card test"); // Faili sulgemine f_close(&fil_obj); }