Autor Tema: Comunicacion SPI en PIC  (Leído 7100 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ingsevilla

  • PIC10
  • *
  • Mensajes: 1
Comunicacion SPI en PIC
« en: 06 de Julio de 2010, 08:49:21 »
Hola a todos,

Me encuentro realizando un proyecto de electronica, campo del que inicialmente no disponia de mucho conocimiento.
Me han dado una placa, que consta de un PIC 18F2680, un adaptador RS-232 (MAX323) y los componentes electronicos tipicos de cualquier circuito digital.

Para empezar, elegi para programar el compilador CCS version 4.104, y Proteus 7.6 para hacer ejercios de simulacion. Tambien dispongo de todo lo necesario para programar el PIC.

Tras unos dias de recopilacion y lectura de documentacion referente a la programacion de PIC's, pasamos a implementar pequeñas programitas para jugar con unos led's que conectamos a salidas del PIC. Posteriormente, tratamos con interrupciones del temporizador y del puerto RS-232.

A continuacion, queremos empezar a hacer cosas un poco mas complejas. El siguiente objetivo que nos hemos propuesto es realizar algun programa en el que probar la comunicacion mediante SPI, pero la verdad que estamos bastante perdidos con esto.

¿Alguien podria orientarme un poco sobre este tipo de comunicacion? Algun programa sencillo para probarlo, o algo para tener una idea de como funciona.

He leido que para que se produzca la comunicacion SPI es necesario un dispositivo maestro, y otro esclavo, por lo tanto, ¿es necesario programar un codigo para el maestro y otro para el esclavo?

Agradeceria mucho vuestras respuestas, por que me encuentro en una situacion en la que no se como avanzar.

Gracias de antemano, y un saludo


Desconectado tithanae

  • PIC16
  • ***
  • Mensajes: 109
Re: Comunicacion SPI en PIC
« Respuesta #1 en: 16 de Julio de 2010, 17:57:27 »
si vas a hacer la comunicacion entre dos pic si es necesario que programes en el maestro y el esclavo de lo contrario si vas a probar con una EEPROM o una LCD  solo programas el pic.

Esta es la configuracion del PIC que utilizo para una LCD con el pic a: #use delay(clock=64000000)

setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_XMIT_L_TO_H|SPI_CLK_DIV_16);

Es importante saber cual es el maximo y el minimo clock que soporta el dispositivo esclavo en este caso mi LCD soporta un maximo de 8MHZ por lo tanto 64/16 nos da 4MHZ por lo que funciona.

SPI_L_TO_H|SPI_XMIT_L_TO_H
Esta parte de la configuracion indica el modo de trabajo del modulo SPI (hay cuatro modos de trabajo) es para indicar el estado en reposo de las lineas de trasnmicion y que estado va a ser interpretasdo como uno logico.

Estas son la funciones que ocupo para escribir en la pantalla:
Código: [Seleccionar]
void _WriteCommand(int Comando) // Envia un Comando a la GLCD
{
  output_low(cs1);            // Selecciono GLCD
  output_low(A0);             // Selecciono Comando
  spi_write(Comando);         // Envio Comando
  output_high(A0);            // 
  output_high(cs1);           //
  output_high(res);           // Funcionamiento Normal
}
//------------------------------------------------------------------------
void _WriteData(int dato)
{
  output_low(cs1);            // Selecciono GLCD
  output_high(A0);            // Selecciono Dato
  spi_write(dato);            // Envio  Dato
  output_low(A0);
  output_high(cs1);
  output_high(res);            // Funcionamiento Normal
}

A0 y res el primero es para indicar si es dado o comando y res es el pin de reset del LCD asi que siempre esta en alto.
CS1 es el pin de seleccion de dispositivo asi que se lo coloca en bajo para seleccionar y luego en alto al fin de la escritura del dato.
Eso esto todo lo que hago para escribir en un LCD SPI.
Ojala te sirva de algo.

Desconectado fernandomt84

  • PIC10
  • *
  • Mensajes: 6
Re: Comunicacion SPI en PIC
« Respuesta #2 en: 25 de Agosto de 2010, 12:57:14 »
Quetal,

Algunos ADC como el ADS7884 utilizan SPI, comunicacion serial, estube viendo como comunicar con un PIC 18f2550 a traves de SPI, y este a la PC a traves de USB,
porque este ADC muestrea a 3Msps a una resolucion de 10 bits, y con una comunicacion serial solamente se lograria 115kbps,

En este caso, solo hace falta que uno sea maestro, el pic, y que lea la informacion del ADC, para leer estaria usando un comando parecido a el que pones arriba?

saludos!
gracias por adelantado!

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Comunicacion SPI en PIC
« Respuesta #3 en: 25 de Agosto de 2010, 13:24:57 »
Saludos

Aquí dos ejemplos de comunicación por la serie síncrona ( en modo SPI) con el 16F877.
« Última modificación: 25 de Agosto de 2010, 13:27:35 por Chenao »
Un saludo desde Pereira - Colombia