Página 1 de 1

PROBLEMA SPI1 LPC2478 {RESOLVIDO}

MensagemEnviado: 02 Fev 2011 10:03
por fabim
Pessoal.
Estou desde antonti, me batendo com um chip dedicado para touch screem, ADS7843.
Pois bem, a porqueira não estava funcionando ai depois descobri que era por causa do maldito FIO4MASK, que o bit do P4.19 tinha que estar a zero pra eu poder usar a la vontré.
Fora que estava testando o bit busy de forma incorreta, e estava atropelando os bytes.

Resolvi tudo, e agora to me batendo com o seguinte.

Código: Selecionar todos
 ADS7843       -------     LPC2478
 DOUT                          MISO  "SSP1"
 DIN                             MOSI  "SSP1"
 DCLK                           SCK    "SSP1"
 CS                              P4.19
 


O PCLK ta rodando a 36mhz.
E estão aqui as configurações.

Código: Selecionar todos
  SSP1Init( void ){
 
  //liga clock SSP1
  PCONP |= (1 << 10);
 
 
  //configura pinos P4-20.SCK-22.MISO-23.MOSI para função SPI
  PINSEL9 |= (1<<15 |1<<14 |1<<13 |1<<12 |1<<9 |1<<8)  ;
  //configura pino P4-19-21 para função pino para CS do touch screem e memoria AT45.
  PINSEL9 &= ~(1<<6|1<<7|1<<10|1<<11);
  //configura direção IO dos pinos
  //pinos P4-19=CS.touch,20=SCK,21=CS.at45,23=MOSI como saida
   FIO4DIR |= (1<<19|1<<20|1<<21|1<<23);
  //pino P4-22=MISO como entrada
   FIO4DIR &= ~(1<<22);

   FIO4MASK &= ~(1<<19|1<<21|1<<22);
  //coloca CS do touch como 1
   desel_tch;
   FIO4SET  = 1<<21; //CS.AT45 = 1 desel

      
  /* Set DSS data to 8-bit, Frame format SPI, CPOL = 0, CPHA = 0, and SCR is 15 */
  SSP1CR0 = 0x0707;

  /* SSPCPSR clock prescale register, master mode, minimum divisor is 0x02 */
  SSP1CPSR = 0x0C;

     
  /* Device select as master, SSP Enabled, loopback operational mode */
  SSP1CR1 = SSPCR1_LBM | SSPCR1_SSE;
  /* Set SSPINMS registers to enable interrupts */
  /* enable all error related interrupts */
  SSP1IMSC = 0x00;
 
}


e aqui esta a forma que eu estou fazendo para ler o ADS7843.


Código: Selecionar todos
char touch_H, touch_L;


  FIO4PIN &= ~(1<<19);//CS.ADS7843 = 0

    for(i=0;i<4;i++){;}
   
      SSP1DR = read_x;//envia comando para ler X
   while ( (SSP1SR & SSPSR_BSY) );
                for(i=0;i<100;i++){;}
   dummy = SSP1DR;// limpa lixo
   
   SSP1DR = 0x00;//envia bummy para gerar clock
                while ( (SSP1SR & SSPSR_BSY) );
   for(i=0;i<10;i++){;}
                 touch_H = SSP1DR;//pega high

               SSP1DR = 0x00;//envia dummy para gerar clock
                while ( (SSP1SR & SSPSR_BSY) );
   for(i=0;i<10;i++){;}
                touch_L = SSP1DR; //pega low

        FIO4PIN |= 1<<19;
    contador = 0; //CS.ADS7843 = 1


O que ocorre é que:
O ADS esta respondendo ao comando, tudo bunitinho pois estou aferindo com o osciloscopio, só que o arm. Seja qual for o valor que eu mando como dummy, ele não pega o byte que o ads responde, ele simplesmente pega o ultimo valor que ele escreveu no DR ou seja, o dummy.

Alguém ja passou por isto ? tem alguma sugestão ?

MensagemEnviado: 02 Fev 2011 14:29
por fabim
um bit perdido apenas, agora resolveu..

Maldito loop back dos caralhos !!!!

MensagemEnviado: 03 Fev 2011 07:19
por proex
Bom, depois que mandei exemplo do meu codigo, depois que te disse pra tirar aquela maldita exclamacao no while, ficou facil achar o problema né? :lol:

MensagemEnviado: 03 Fev 2011 08:08
por fabim
proex escreveu:Bom, depois que mandei exemplo do meu codigo, depois que te disse pra tirar aquela maldita exclamacao no while, ficou facil achar o problema né? :lol:


Pior não é isso, sabe o que é pior ?

Lembra aquele codigo do wiznet que eu mudei do 2368 pro 1768 e não funcionou o wiznet ?
Fui ver o drive que eu adaptei, e todos os LCD_SSP->SSP1SR & busy, estão com " ! "...
Muito provavelmente aquela placa pode estar funcionando com o wiznet...

MensagemEnviado: 03 Fev 2011 08:33
por proex
No codigo do Wiznet que te mandei não tinha o ponto de exclamação nessa linha de comando.

Foi vc quem detonou meu código.

As MINHAS rotinas de SPI funcionam muito bem obrigado.

MensagemEnviado: 03 Fev 2011 08:35
por fabim
fui confirmar, num tinha exclamação não

MensagemEnviado: 14 Fev 2011 10:08
por jeanfernandes
kkkkkkkkkkkkkkkkk, eu to com um problema no I2C do Cortex, e com certeza deve ser algo perto dessas coisas, mas nao de ! , mas de resposta do chip. mo doideira isso.

MensagemEnviado: 14 Fev 2011 12:38
por Djalma Toledo Rodrigues
pô!

Fabim!

como!

da!

uma!

dessa!

Abraço!

DJ!

P.S. ___!___
:D !

P. S. 2 Felizmente resolto !