Hola a todos!!
estoy intentando conectar una memoria via SPI a un dsPIC (en concreto estoy haciendo pruebas con el dsPIC33FJ32MC202), pero parece que soy incapaz de configurar correctamente el módulo SPI, vamos, que no me funciona :'(
La configuracion de los registros es la siguiente:
SPI1CON1 = 0000 0101 0010 0000
SPI1CON2 = 0
SPI1STAT = 0x8000
Y supongo que asigno bien los pines ya que esto, hasta ahora, siempre me ha funcionado... las patitas que asigno son:
SCK1OUT (el clock de salida)
SDO1 (salida, hacia la SDI del periférico)
SDI1 (entrada, del SDO del periférico)
un chip select
Y ahora va el problema, desistiendo de la memória, estoy haciendo pruebas con un potenciómetro digital (periférico más sencillito) con el siguiente código:
while(1){
PORTBbits.RB6 = 0; //el chip select
putcSPI1(0b0000000000000000); //poner el potenciómetro al mínimo
while(SPI1STATbits.SPITBF);
while(!DataRdySPI1());
x = ReadSPI1();
PORTBbits.RB6=1;
}
con un resultado nefasto...
las pruebas que he hecho son las siguientes:
1) Mirar la tension de la patita SCK1OUT. Está a 0V todo el tiempo, mucho me temo que aquí es donde está el problema, que no me sabe sacar el clock.
2) Poner la patita SDI del micro a VCC. En el registro SPI1BUF lee 0xFFFF así que de leer, sabe.
3) Coger el potenciómetro asecas, le pongo su SDI a VSS y hago yo de clock. Le meto los 16 "0" y bien que me pone el potenciómetro al mínimo, así que supongamos que el comando es correcto.
Este es todo mi problema :'(. Lo que mas sospecho es que soy incapaz de configurar el módulo SPI y que debe haber algo que se me escapa...
Espero que me podais ayudar.
Muchas gracias a todos!!