Página 1 de 1

Problemas com o SD card para LPC1769

MensagemEnviado: 06 Jul 2012 14:48
por Paulo
Boa tarde, pessoal!

Estou utilizando o código de exemplo da embedded artists para acesso ao SD card, mas estou tendo problemas.

Estou usando a placa LPCXpresso com o micro LPC1769 juntamente com a base board da embedded artists. Meu cartão SD é um san disk de 2GB.

O código de exemplo que estou usando é um fornecido por eles (LPCXpresso) chamado mmc_fat ele faz uso das bibliotecas:
- CMSISv1p30_LPC17xx
- MCU_Lib
- EaBaseBoard_Lib
- FatFs_SD_Lib

Pelos testes que fiz o micro está enviando normalmente um comando via SPI na inicialização para iniciar o cartão SD, porém o mesmo não responde.

Alguém já usou esse exemplo com essa placa (ou outra) e pode me dar alguma ajuda/dica? Agradeço por qualquer apoio.

Até +...
Paulo

MensagemEnviado: 13 Jul 2012 07:46
por tronico
Que testes você fez para comprovar a inicialização do SD?

Talvez não seja o caso, mas algum tempo atrás me deparei com alguns cartões que não funcionavam, não havia resposta para o comando ACMD41 na inicialização do SD. A solução foi alterar o driver. Você já testou com outros cartões?

MensagemEnviado: 13 Jul 2012 08:02
por Paulo
tronico escreveu:Que testes você fez para comprovar a inicialização do SD?

Talvez não seja o caso, mas algum tempo atrás me deparei com alguns cartões que não funcionavam, não havia resposta para o comando ACMD41 na inicialização do SD. A solução foi alterar o driver. Você já testou com outros cartões?


A LIB está enviando o comando 0x40 na inicialização e aguardando um retorno do cartão SD que não ocorre.

Já testei com outro cartão, inclusive um outro de 2GB SDC, ou seja, já testei com SDC e SDHC. Já formatei em FAT 16, FAT 32, com tamanhos de blocos variáveis, etc.

O que notei de estranho é que na inicialização o micro envia esse dado de inicialização pelo MOSI e gera o clock no SCK, até aí OK, porém depois que ele envia esse dado o clock para de ser gerado juntamente com o término do dado, e a LIB fica agurdando um retorno do SD, mas o clock deveria continuar a ser gerado para que o cartão respondesse, correto?

A LIB que estou usando é essa: http://elm-chan.org/fsw/ff/00index_e.html

Agradeço por qualquer dica/ajuda.

Até +...
Paulo D.

MensagemEnviado: 13 Jul 2012 08:08
por fabim
Paulo, eu ajudei um veadinho com um problema parecido com esse a alguns anos.
O problema é que o drive estava escrito para uma frequência de 48mhz, e estávamos operando em uma frequência de 100mhz.
Os cartões SD, tem um detalhe que na inicialização, o clock não pode operar em uma frequência maior que 400khz+/-.
Ai eu depois de mexer em quase absolutamente tudo, resolvi mexer no clock, e descobri no drive que na inicialização, nos primeiros 8words de clock, no soft reset, e nos CMD de config, o clock tem que estar bem baixinho, coisa de uns 200khz mais ou menos, e não pode esquecer que assim que alimentar o SD tem que tuxar alguns clocks na linha para acordar ele. Após toda a configuração ter sido feita, ai tu pode tuxar clock sem dó nele!!

Tenta ai e depois nos dê o feedback !!

MensagemEnviado: 13 Jul 2012 10:32
por denis
Paulo,

Qual é o retorno do CMD0 ?
Tem que retornar 0x01, significa que o cartão está em Idle State.

Verifique se o clock está configurado para 400Khz.

MensagemEnviado: 13 Jul 2012 15:17
por Paulo
denis escreveu:Paulo,

Qual é o retorno do CMD0 ?
Tem que retornar 0x01, significa que o cartão está em Idle State.

Verifique se o clock está configurado para 400Khz.


fabim e denis,

Valeu pelas dicas, mas não adiantaram, pelo menos até o momento. :(

Sobre o clock estava configurado com 1MHz, fiz testes com 200KHz e 400KHz e nada, o resultado foi o mesmo.

denis, sobre sua pergunta, ele não responde nada, é enviado o comando para o cartão, mas ele não responde nada.

Pessoal, agradeço por qualquer outra dica;

Até +...

Paulo D.

MensagemEnviado: 13 Jul 2012 15:32
por denis
Conferiu o pino do Select?

MensagemEnviado: 13 Jul 2012 16:12
por Paulo
denis escreveu:Conferiu o pino do Select?


Sim, está em 1, ou seja, selecionado.

MensagemEnviado: 13 Jul 2012 16:19
por denis
Paulo escreveu:
denis escreveu:Conferiu o pino do Select?


Sim, está em 1, ou seja, selecionado.



É o contrário, quando o host está conversando com o cartão do Select fica em 0.

MensagemEnviado: 13 Jul 2012 17:04
por Paulo
denis escreveu:
Paulo escreveu:
denis escreveu:Conferiu o pino do Select?


Sim, está em 1, ou seja, selecionado.



É o contrário, quando o host está conversando com o cartão do Select fica em 0.


Denis,

Valeu pela dica, você matou.

Na verdade o software (LIB) estava correto, ou seja, estava colocando o select em 0, porém a placa LPCXpresso que recebemos aqui veio com uma barra de pinos soldada que dá contato na placa base board, e essas placas já foram usadas (não sei por quem), daí fui seguindo o pino mediante a sua dica e vi que o micro estava colocando em 0, tudo OK, porém os caras soldaram essa barra de pino tão bem, mas tão bem que estava com solda fria das piores e não passava o 0 pra placa debaixo, daí como tem um pull up na parada ele ficava em 1 o tempo todo, soldei a barra de pinos novamente e tudo funcionou. É brincadeira.

Denis, mais uma vez, valeu pela dica, pois a partir dela, encontrei o problema.

Esse fórum é fera mesmo, fiquei um tempo fora dos embarcados trabalhando somente com alto nível e agora retornei para os embarcados e consequentemente voltei a frequentar esse fórum que sempre recomendei, pois o pessoal aqui é fera.

Pessoal, obrigado a todos pelas dicas e sugestões.

Até +...

Paulo D.