por chipselect » 24 Nov 2006 10:05
Fabio
A maioria dos SD podem operar até no máximo com 3,6V. Não use divisor resistivo pra gerar 3,3V pq vc vai ter muita dor de cabeça com isso.
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.
Proex, como é esse seu método de acesso linear do SD? Isso eu não conhecia, só conheço tamanho de bloco = 1 byte e o modo de memória dos Compact Flash