SPI Comunicación mediante el programa PIC como un maestro

A

Awan

Guest
Hola;

Estoy tratando de enviar datos desde PIC16F88 a un esclavo JENNIC Microcontrolador.

PIC16F88 sólo se pueden enviar 8 bits de datos sobre la SPI de una sola vez.Pero para JENNIC para recibir datos, primero debe conseguir 0x02 (la situación) y 0x00 (cero de relleno para JENNIC para responder) y luego se espera que la longitud de los datos que se envían antes de que los datos reales pueden ser enviados.

No estoy seguro pero, i dont recibir datos sobre JENNIC, ¿Puede alguien por favor me guía en esto.¿Podría ser que el CFP envía datos a través de SPI en 8bits y JENNIC espera una ráfaga continua.Puedo enviar datos como estos:

SSPBUF = 0x02, / / Estado de JENNIC para recibir datos
while (BF);
= prueba SSPBUF;

SSPBUF = 0x00; / / Cero relleno para JENNIC para responder
while (BF);
= prueba SSPBUF;

SSPBUF = 0x01; / / se envía 32 bits de longitud de la palabra
while (BF);
= prueba SSPBUF;

SSPBUF = 0x01; / / Siguiente 4 bits de datos
while (BF);
= prueba SSPBUF;

SSPBUF = 0x02;
while (BF);
= prueba SSPBUF;

SSPBUF = 0x03;
while (BF);
= prueba SSPBUF;

SSPBUF = 0x04;
while (BF);
= prueba SSPBUF;

Gracias,

 
Toda la comunicación SPI ocurre en 8 o 9 bits, 9 bits es un caso especial para la comprobación de errores.Así que 8 bits = 1byte funcionará.

Ambos controladores deben tener la misma configuración para el SPI, la misma velocidad (en baudios), la misma longitud de la palabra (8 o 9 bits), el mismo número de bits de parada, etc

Una vez que esté seguro de que ambos tienen la misma configuración, la conexión de hardware debería ser correcto también.

Después de que el protocolo entre JENNIC y el controlador de PIC debe ser correcta.

Con base en sus comentarios:

SSPBUF = 0x02, / / Estado de JENNIC para recibir datos
while (BF);
= prueba SSPBUF;

Aquí están esperando JENNIC para responder:
SSPBUF = 0x00; / / Zero relleno para JENNIC para responder
while (BF);
= prueba SSPBUF;

Pero usted no está leyendo la información de nuevo para asegurarse de que algún tipo de comunicación ha sido establecida.

Vamos a suponer que la comunicación entre los controladores es exitosa

A continuación, supongamos que para enviar byte cuántos serán enviados.Así que si se va a enviar 5 bytes de datos que debe enviar:
SSPBUF = 0x05; / / 5 bytes a enviar
while (BF);
= prueba SSPBUF;

A continuación, le enviaremos 5 bytes, lo que son los valores.

Espero que esto puede ayudar, tal vez usted puede incluir más información.

 

Welcome to EDABoard.com

Sponsor

Back
Top