Estoy buscando que un puerto serie SPI se ejecute en un PIC32 (PIC32MX360F). ¿Alguien puede indicarme algunos buenos recursos sobre cómo hacer esto para que un novato pueda averiguarlo? Estoy usando el kit de inicio PIC32 y tengo una tabla de salida PIC32 de Digi-Key.
Este es el código que he estado usando ... lo encontré en el manual de la familia PIC32.
#include <p32xxxx.h>
int main(void){
int rData;
IEC0CLR=0x03800000; // disable all interrupts
SPI1CON = 0; // Stops and resets the SPI1.
rData=SPI1BUF; // clears the receive buffer
IFS0CLR=0x03800000; // clear any existing event
IPC5CLR=0x1f000000; // clear the priority
IPC5SET=0x0d000000; // Set IPL=3, Subpriority 1
IEC0SET=0x03800000; // Enable RX, TX and Error interrupts
SPI1BRG=207; // use FPB/4 clock frequency
SPI1STATCLR=0x40; // clear the Overflow
SPI1CON=0x8220; // SPI ON, 8 bits transfer, SMP=1, Master mode
// from now on, the device is ready to transmit and receive data
SPI1BUF='A'; // transmit an A character
while(1){
SPI1BUF= 'A'; // transmit an A character
while(i < 10000){i++;}
i = 0;
}
}
¿Cómo configuro la velocidad de transmisión? Supongo que tiene algo que ver con SPI1BRG
EDITAR:
Gracias a tcrosley siento que estoy más cerca de poder comunicarme con mi pic32. Cambié SPI1BRG a 207. Según mis cálculos, esto establecerá la velocidad en baudios en aproximadamente 9600.
Fsck = Fpb / (2 (SPIxBRG +1)) = 4MHZ / (2 * (207 + 1)) = 9615
Estoy tratando de ver la salida en el picchip con HyperTerminal. Los ajustes que estoy usando son:
Baud: 9600
Data bits: 8
Parity: None
Stop bits: 1
Flow Control: None
Los pines que estoy usando son:
93 - connected to db9 3
95 - connected to db9 2
y db9 5 está conectado a tierra de las placas ...
Ahora estoy obteniendo una salida, lo cual es bueno, pero desafortunadamente es basura. mi salida en HyperTerminal sale como un montón de corazones: S ahora siento que mi pic32 se está burlando de mí