Buenas gente,
estoy realizando un proyecto en el que necesito realizar una comunicación mediante un puerto SPI de mi PIC32MX460F512L y necesito ayuda.
Estoy utilizando la herramienta harmony de microchip pero me gustaría aprender a manejarla con las librerías dinamicas e lugar de las static qque he venido utilizando hasta ahora.
La verdad es que no encuentro mucha información por internet, así que si alguién conoce la herramienta le agradecería que contestara.
hasta el momento siguiendo las instrucciones que se dan dentro de la librería que se incluye en el proyecto de forma automática al general el código con harmony he llegado a inicializar el puerto y abrirlo.
sysObj.spiObjectIdx0 = DRV_SPI_Initialize(DRV_SPI_INDEX_0, (const SYS_MODULE_INIT * const)&drvSpi0InitData);
DRV_HANDLE handle;
handle = DRV_SPI_Open( DRV_SPI_INDEX_0, DRV_IO_INTENT_WRITE );
if( DRV_HANDLE_INVALID == handle )
{
// Unable to open the driver
Lcd_envia(1,1);
Lcd_Out(2,1,"ERROR FATAL");
delay_ms(300);
}
Pero a la hora de compilar el siguiente paso que se supone sería realizar la escritura en el puerto para realizar un envío, utilizando el código que da la librería aparecen varios errores.
#define MY_BUFFER_SIZE 5
char myReadBuffer[MY_BUFFER_SIZE], myWriteBuffer[MY_BUFFER_SIZE], state = 0;
DRV_SPI_BUFFER_HANDLE bufferHandle;
switch ( state )
{
case 0:
// PUT API returns data in any case, it is up to the user to use it
bufferHandle = DRV_SPI_BufferAddWriteRead( handle, myWriteBuffer, 5,
myReadBuffer, 5, NULL, NULL );
state++;
break;
case 1:
if(DRV_SPI_BUFFER_STATUS_SUCCESS & DRV_SPI_BufferStatus( bufferHandle ) )
{
state++;
Lcd_envia(1,1);
Lcd_Out(2,1,"todo enviado");
delay_ms(300);
// All transmitter data has been sent.
}
break;
}
La etiqueta DRV_SPI_BUFFER_STATUS_SUCCESS no se encuenra definida y no encuentro el valor que debería tener, estoy suponiendo que debería ser un 1 pero no veo que funcione. De todas formas no estoy seguro de que ejecutando únicamente esta instrucción se produzca el envío. Creo que se debe utilizar otra que es DRV_SPI_Tasks ( object );
La verdad es que ando algo perdido, agradecería cualquier información.
Un saludo