Comencé mi proyecto de interconectar MicroSD Card
con PIC32MX795F512L
. Para comenzar con esto, primero hice un programa para probar SPI protocol
en el que hice la prueba de bucle invertido acortando el SDO
& línea SDI
. Estaba funcionando bien. Luego seguí adelante y escribí un buen programa para la tarjeta de interfaz, pero incluso no pude inicializar la tarjeta. Así que pensé en comprar algunas herramientas como saleae logic y MicroSD Sniffer . Como es la primera vez que utilizo el analizador, entendemos que cuando iniciamos nuestro programa, al mismo tiempo tenemos que comenzar a capturar los datos en el analizador.
Con este entendimiento, probé UART
:
while(1)
{
putsUART1("Hello");
DelayMs(500);
}
Capturé esto en el analizador y todo estaba bien. Ahora pensé en capturar el programa de prueba de SPI loopback pero estoy viendo algunos datos aleatorios en el analizador. El siguiente es el código para ello:
void initSPI(void)
{
SPI1BRG = 71;
SPI1CONbits.MSTEN = 1; //MasterEnable
SPI1CONbits.CKE = 1; //CKE on. CKP OFF
SPI1CONbits.ON = 1; //SPI Module ON
}
unsigned char writeSPI(unsigned int b)
{
SPI1BUF=b; // write to buffer for TX
while( !SPI1STATbits.SPIRBF); // wait transfer complete
return(SPI1BUF);
}
y en la función principal, después de llamar a initSPI
, en while (1) estoy enviando datos al canal SPI:
while(1)
{
x = writeSPI(0x12);
}
Estoy enviando 0x12
. Entonces, en el analizador MOSI(SDO)
debería mostrar este valor, pero muestra algunos valores aleatorios. He conectado los pines correctamente y la configuración SPI en el analizador está de acuerdo con mi configuración en el código. Estoy capturando los datos para 1sec
y velocidad en 24MS/s
. También quiero saber cómo puedo verificar a qué frecuencia se está ejecutando el protocolo SPI. Cualquier ayuda.!