Lectura de transmisión SPI en el analizador lógico

0

Estoy intentando usar un Analog Discovery 2 para leer las transmisiones SPI de mi mbed.

Código:

#include "mbed.h"
#include "LPC17xx.h"


void init() {
LPC_PINCON->PINSEL0 |= 0xC0000000;  //Pin P0.15 allocated to function 4 SCLK
LPC_PINCON->PINSEL1 |= 0x03<<0; //Pin P0.16 allocated to function 4 NSS
LPC_PINCON->PINSEL1 |= 0x03<<2; //Pin P0.17 allocated to function 4 MISO
LPC_PINCON->PINSEL1 |= 0x03<<4; //Pin P0.18 allocated to function 4 MOSI
//p0.15, P0.18. P0.23 are outputs
LPC_GPIO0->FIODIR |= (1<<15)| (1<<18)| (1<<23);
LPC_SC->PCONP |= 1 <<8; //enable POWER to SPI (redundant following reset)
LPC_SC->PCLKSEL0 |= 1<<16;  //pclk = cclk
LPC_SPI->SPCCR |= 8;    //clock divider
LPC_SPI->SPCR |= 3<<3;  //clock phase
LPC_SPI->SPCR |= 1<< 5; //master mode
int dummy=LPC_SPI->SPSR;
}
int main () {   

init();
while(1) {   
LPC_GPIO0->FIOCLR = 1<<23;  //select slave
LPC_SPI->SPDR = 0x5A;   //write willl initiate transfer
while (!(LPC_SPI->SPSR & (1<<7)));  //wait until transfer complete
LPC_GPIO0->FIOSET = 1<<23;  //release slave

wait(0.5);

LPC_GPIO0->FIOCLR = 1<<23;  //select slave
LPC_SPI->SPDR = 143;   //write willl initiate transfer
while (!(LPC_SPI->SPSR & (1<<7)));  //wait until transfer complete
LPC_GPIO0->FIOSET = 1<<23;  //release slave
}
}

He intentado leer el resultado generado de lo anterior con un éxito limitado. En todos los casos, los datos y las líneas de reloj simplemente subirán hasta que se reinicie el mbed.

Sin embargo, cuando elimino la espera (0.5); llame, obtengo las lecturas correctas en la pantalla.

¿Alguien puede explicar por qué la función de espera () hace que el analizador no lea las transmisiones correctamente?

    
pregunta 19172281

0 respuestas

Lea otras preguntas en las etiquetas