Moderadores: 51, guest2003, Renie, gpenga
Caso você queira utilizar o SD para trocar informações com o PC em um microcontrolador bixado, existe alguns recursos que você deve lançar mão.
O método mais simples é você utilizar apenas um arquivo no SDCARD. Assim você conseguirá escrever no cartão com MCU e ler no PC depois, sem sequer implementar uma linha de código de FAT-16.
Você precisa para isso:
- configurar o tamanho de bloco para 1 byte (CUIDADO: não são todos os cartões SD/MMC que suportam isso!)
-No PC, você formata o cartão, cria um único arquivo enorme nele contendo uma string logo no inicio, que seria a marcação pro mcu localizar. Essa marcação poderia ser a string ":\inicio".
- quando o MCU inicia o cartão, ele varre todos os blocos do cartão (em sequencia) procurando a string de marcação inicial. Uma vez encontrada, o MCU sabe que a partir daquele endereço de bloco ele pode escrever que estará dentro do arquivo ainda e não irá corromper a FAT-16.
Esse método funciona bem e não irá corromper a FAT-16 desde que você não escreva além do limite do arquivo. Uma vez formatado ou com o cartão "limpo", quando um arquivo é criado, todos os seus clusteres estarão em sequencia no cartão. Então basta encontrar o primeiro setor que é onde tá escrito a string de inicio.
Eu sugiro criar um arquivo com o tamanho máximo possível no cartão.
A vantagem é que você não escreve uma linha de código de FAT-16, mas as desvantagens são:
- lento, pois tamanho de bloco de 1 byte deixa o pacote com um overhead desfavorável.
- não será compatível com todos os cartões SD.
- Como o cartão SD utiliza memória FLASH, escrever 1 byte muitas vezes significa escrever um bloco interno inteiro da flash (geralmente de 4K), logo, se você fizer uma escrita byte a byte, quando tiver preenchido os primeiros 4K, toda essa área já terá sido gravada 4 mil vezes. Se você considerar que os fabricantes geralmente especificam 100 mil gravações, você tem ai um pequeno problema de vida útil.
O tamanho de bloco de 1 byte pode até ser maior, caso seu MCU tenha memóiria ram suficiente pra gerenciar isso e o SD aceite o tamanho.
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante