====== SD-card ====== //Conhecimento prévio: [HW] [[pt:hardware:homelab:controller]]// Esta secção da biblioteca contém funções para uso do SD-card do HomeLab. ===== Tipos ===== * **//static FATFS FATFS_Obj//** - FATFS_Obj is FATFS data structure instance. Consists of drive identificators. * **//FIL fil_obj//** - Estrutura de dados do sistema de ficheiros onde guardar os identificadores dos ficheiros. * **//DSTATUS//** - Devolve os códigos para as funções do disco. * //RES_OK// - (0) Sucesso do procedimento. * //RES_ERROR// - (1) Erro de R/W. * //RES_WRPRT// - (2) Escrita protegida. * //RES_NOTRDY// - (3) Disco não pronto. * //RES_PARERR// - (4) Alguns parâmetros são falsos. * **//FRESULT//** - Códigos mais importantes devolvidos pelas funções associadas aos ficheiros. * //FR_OK// - (0) Sucesso do procedimento. * //FR_DISK_ERR// - (1) Erro no layer de I/O do disco. * //FR_INT_ERR// - (2) Erro geral do disco. * //FR_NOT_READY// - (3) Disco não pronto para procedimento. * //FR_NO_FILE// - (4) Ficheiro não encontrado. * //FR_NO_PATH// - (5) Endereço não encontrado. * //FR_INVALID_NAME// - (6) Formato do nome de ficheiro errado. * //FR_DENIED// - (7) Disco cheio. * //FR_EXIST// - (8) Acesso negado. * //FR_INVALID_OBJECT// - (9) Erro de ficheiro ou pasta. * //FR_WRITE_PROTECTED// - (10) Disco protegido contra escrita. * //FR_INVALID_DRIVE// - (11) Número do disco é falso. * //FR_NO_FILESYSTEM// - (13) Ficheiro em suporte FAT não encontrado. * //FR_TIMEOUT// - (15) Ligação ao disco falhou. * //FR_INVALID_PARAMETER// - (19) Alguns parâmetros são falsos. * **//ModeFlags//** - Modos possíveis para abrir ficheiros. * //FA_READ// - Ficheiro aberto em modo leitura. * //FA_WRITE// - Ficheiro aberto em modo escrita. * //FA_OPEN_EXISTING// - Abre ficheiro. Se não existe devolve código do erro. * //FA_OPEN_ALWAYS// - Abre ficheiro. Se não existe cria o ficheiro. * //FA_CREATE_NEW// - Cria novo ficheiro. Se ficheiro já existe devolve código do erro. * //FA_CREATE_ALWAYS// - Cria novo ficheiro. Se ficheiro já existe este é sobreposto pelo novo. ===== Funções ===== * **//DSTATUS disk_initialize (BYTE drv)//** \\ Inicializa o disco.Parâmetros: * //drv// - Número do disco. Na maior parte dos casos é 0. * Devolve código DSTATUS. * **//DSTATUS disk_status (BYTE drv)//** \\ Mostra o estado do disco. Parâmetros: * //drv// - Número do disco. Na maior parte dos casos é 0. * Devolve código DSTATUS. * **//FRESULT f_mount (BYTE Drive, FATFS* FileSystemObject)//** \\ Inicializa o sistema de ficheiros. Parâmetros: * //Drive// - Número do disco. Na maior parte dos casos é 0. * //FileSystemObject// - Apontador para o objecto do sistema de ficheiros. * Devolve códico FRESULT. * **//FRESULT f_open (FIL* FileObject, const TCHAR* FileName, BYTE ModeFlags)//** \\ Abre ou cria um ficheiro. Parâmetros: * //FileObject// - Apontador para o objecto do sistema de ficheiros. * //FileName// - Nome do ficheiro. * //ModeFlags// - Flag de modo de abertura. * Devolve códico FRESULT. * **//FRESULT f_close (FIL* FileObject)//** \\ Fecha ficheiro. Parâmetros: * //FileObject// - Apontador para o objecto do sistema de ficheiros. * Devolve códico FRESULT. * **//FRESULT f_read (FIL* FileObject, void* Buffer, UINT ByteToRead, UINT* ByteRead)//** \\ Lê o número de bytes requerido da memória. Parâmetros: * //FileObject// - Apontador para o objecto do ficheiro. * //Buffer// - Apontador para buffer onde guardar os dados. * //ByteToRead// - Número de ficheiros a ser lido. * //ByteRead// - Apontador para variável onde os bytes de leitura são devolvidos. * Devolve códico FRESULT. * **//FRESULT f_write (FIL* FileObject, const void* Buffer, UINT ByteToWrite, UINT* ByteWritten)//** \\ Escreve o número de bytes requeridos para um ficheiro. Parâmetros: * //FileObject// - Apontador para o objecto do ficheiro. * //Buffer// - Apontador para dados a serem escritos no ficheiro. * //ByteToWrite// - Número de bytes a serem escritos. * //ByteWritten// - Apontador para variável onde os bytes escritos são devolvidos. * Devolve códico FRESULT. * **//FRESULT f_sync (FIL* FileObject)//** \\ Escreve os dados dos buffers para um ficheiro para ficarem a salvo de uma quebra de energia. Usado em aplicações onde um ficheiro fica aberto por um período grande de tempo. Parâmetros: * //FileObject// - Apontador para o objecto do ficheiro. * Devolve códico FRESULT. * **//FRESULT f_mkdir (const TCHAR* DirName)//** \\ Cria pasta. Parâmetros: * //DirName// - Nome da pasta. * Devolve códico FRESULT. * **//FRESULT f_unlink (const TCHAR* FileName)//** \\ Apaga pasta ou ficheiro. Parâmetros: * //FileName// - Nome do objecto. *Devolve códico FRESULT. * **//FRESULT f_rename (const TCHAR* OldName, const TCHAR* NewName)//** \\ Renomeia ficheiro ou pasta. Parâmetros: * //OldName// - Nome antigo do objecto. * //NewName// - Nome novo do objecto. * Devolve códico FRESULT. * **//TCHAR* f_gets (TCHAR* Str, int Size, FIL* FileObject)//** \\ Lê uma string de um dado comprimento de um ficheiro. Parâmetros: * //Str// - Buffer onde guardar os dados lidos. * //Size// - Comprimento da string. * //FileObject// - Apontador para o objecto do ficheiro. * Returns Str buffer if successful. * **//int f_putc (TCHAR Chr, FIL* FileObject)//** \\ Aciciona um char ao ficheiro. Parâmetros: * //Chr// - Char a adicionar ao ficheiro. * //FileObject// - Apontador para o objecto do ficheiro. * Devolve 1 no caso de sucesso. * **//int f_printf (FIL* FileObject, const TCHAR* Foramt, ...)//** \\ Adiciona uma string formatada a um ficheiro. Parâmetros: * //FileObject// - Apontador para o objecto do ficheiro. * //Foramt// - Formato da string. * ... * Devolve o número de caracteres escritos no caso de sucesso. * **//DWORD f_tell (FIL* FileObject)//** \\ Posição do cursor no ficheiro. Parâmetros: * //FileObject// - Apontador para o objecto do ficheiro. * Devolve a posição de leitura/escrita do cursor no ficheiro como um apontador. * **//FRESULT f_lseek (FIL* FileObject,DWORD Offset)//** \\ Move o cursor para uma determinada posição no ficheiro. Parâmetros: * //FileObject// - Apontador para o objecto do ficheiro. * //Offset// - Posição desejada em bytes a partir do início do ficheiro. * Devolve códico FRESULT. ===== Exemplo ===== #include #include #include int main (void) { static FATFS FATFS_Obj; FIL fil_obj; // SD card initialization. disk_initialize(0); // File system initialization. f_mount(0, &FATFS_Obj); // Create text file "file.txt". f_open(&fil_obj, "/file.txt", FA_CREATE_NEW); // File to be open for writing. f_open(&fil_obj, "/file.txt", FA_WRITE); // Writing into file. f_printf(&fil_obj, "SD Card test"); // Close file. f_close(&fil_obj); }