Problemas com o SD card para LPC1769

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

Problemas com o SD card para LPC1769

Mensagempor Paulo » 06 Jul 2012 14:48

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
"Se o teu sonho for maior que ti, Alonga tuas asas, Esgarça os teus medos, Amplia o teu mundo, Dimensiona o infinito, E parte em busca da estrela... " (Trecho de Voa - Ivan Lins / Leda Selma)
Avatar do usuário
Paulo
Byte
 
Mensagens: 421
Registrado em: 07 Nov 2006 07:26

Mensagempor tronico » 13 Jul 2012 07:46

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?
tronico
Byte
 
Mensagens: 112
Registrado em: 08 Set 2011 07:48
Localização: Blumenau SC

Mensagempor Paulo » 13 Jul 2012 08:02

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.
"Se o teu sonho for maior que ti, Alonga tuas asas, Esgarça os teus medos, Amplia o teu mundo, Dimensiona o infinito, E parte em busca da estrela... " (Trecho de Voa - Ivan Lins / Leda Selma)
Avatar do usuário
Paulo
Byte
 
Mensagens: 421
Registrado em: 07 Nov 2006 07:26

Mensagempor fabim » 13 Jul 2012 08:08

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 !!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor denis » 13 Jul 2012 10:32

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.
denis
Byte
 
Mensagens: 257
Registrado em: 06 Mar 2007 12:29
Localização: Americana - SP

Mensagempor Paulo » 13 Jul 2012 15:17

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.
"Se o teu sonho for maior que ti, Alonga tuas asas, Esgarça os teus medos, Amplia o teu mundo, Dimensiona o infinito, E parte em busca da estrela... " (Trecho de Voa - Ivan Lins / Leda Selma)
Avatar do usuário
Paulo
Byte
 
Mensagens: 421
Registrado em: 07 Nov 2006 07:26

Mensagempor denis » 13 Jul 2012 15:32

Conferiu o pino do Select?
denis
Byte
 
Mensagens: 257
Registrado em: 06 Mar 2007 12:29
Localização: Americana - SP

Mensagempor Paulo » 13 Jul 2012 16:12

denis escreveu:Conferiu o pino do Select?


Sim, está em 1, ou seja, selecionado.
"Se o teu sonho for maior que ti, Alonga tuas asas, Esgarça os teus medos, Amplia o teu mundo, Dimensiona o infinito, E parte em busca da estrela... " (Trecho de Voa - Ivan Lins / Leda Selma)
Avatar do usuário
Paulo
Byte
 
Mensagens: 421
Registrado em: 07 Nov 2006 07:26

Mensagempor denis » 13 Jul 2012 16:19

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
Byte
 
Mensagens: 257
Registrado em: 06 Mar 2007 12:29
Localização: Americana - SP

Mensagempor Paulo » 13 Jul 2012 17:04

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.
"Se o teu sonho for maior que ti, Alonga tuas asas, Esgarça os teus medos, Amplia o teu mundo, Dimensiona o infinito, E parte em busca da estrela... " (Trecho de Voa - Ivan Lins / Leda Selma)
Avatar do usuário
Paulo
Byte
 
Mensagens: 421
Registrado em: 07 Nov 2006 07:26


Voltar para ARM

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x