Autor Tema: Un ejemplo con SPI por favor.  (Leído 20223 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Un ejemplo con SPI por favor.
« en: 02 de Septiembre de 2009, 21:09:45 »
Hola, que tal muchachos?? Será que uno de ustedes me puede prestar un ejemplo en C con el uso del SPI y sus lineas, SDI, SDO y SCK?? es que nunca he trabajado con este tipo de comunicación... y Bueno no se usar sus instrucciones en C, he leído el datasheet del micro (16f88) y bueno me he informado de eso un poco, pero no logro saber como usar las instrucciones a la hora de programarlo, ya que pretendo hacer una comunicación con un conversor digital/analógico y bueno funciona con este protocolo!!!!

Le agradezco su aporte!

Atte: Enigma... La llanerita de Guayana :D
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Un ejemplo con SPI por favor.
« Respuesta #1 en: 02 de Septiembre de 2009, 21:12:56 »
Cual conversor A/D usas??
Has visto los ejemplos del compilador??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Re: Un ejemplo con SPI por favor.
« Respuesta #2 en: 03 de Septiembre de 2009, 00:20:58 »
Estoy usando el TLC5615.... y si los he visto, pero no he encontrado uno que e adapte a mis necesidades!!!! Alguno con el que me pueda guiar!

Atte: Enigma... La llanerita de Guayana :D
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Un ejemplo con SPI por favor.
« Respuesta #3 en: 03 de Septiembre de 2009, 08:43:14 »
Creo que deberías desarrollar una librería, asi te queda hecha y despues la compartes, je..je..

Aquí el PDF del conversor:  http://focus.ti.com/lit/ds/symlink/tlc5615.pdf

Y aquí tienes el diagrama de bloques.



El esquema de tiempos para la comunicación SPI...



Y que se debe tener en cuenta para realizarla...



Por ultimo, la única referencia encontrada sobre DACs en el foro de CCS... :mrgreen:

http://www.ccsinfo.com/forum/viewtopic.php?t=26055&highlight=tlc5615

Ya vi que Proteus lo trae, si vas poniendo aqui tus avances, es muy posible que pudiéramos ayudarte a desarrollarlo...

Saludos!! :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Re: Un ejemplo con SPI por favor.
« Respuesta #4 en: 03 de Septiembre de 2009, 16:26:07 »
Si ya me he leído eso, pero lo que me frega son las instrucciones en C... Una pregunta, Las instrucciones del SPI son la mismas que el I2C??, solo que n vez de usar I2C, coloco el SPI...??

Atte: Enigma... La llanerita de Guayana  :D
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Un ejemplo con SPI por favor.
« Respuesta #5 en: 03 de Septiembre de 2009, 17:10:45 »
Hay una ventaja en SPI, puedes hacerlo por software y adaptarlo a tu velocidad, si no tienes los pines de hardware libres, o si el dato es mayor a 8 bits te conviene esa forma.

Sugiero que mires la libreria del MCP3208 y su hoja de datos, alli veras seguramente la luz... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Un ejemplo con SPI por favor.
« Respuesta #6 en: 03 de Septiembre de 2009, 17:45:10 »
Para saber que funciones debes utilizar revisa la ayuda de CCS <F12>  :mrgreen:

Por ejemplo para configurar los pines, modo, si es por software, etc... se utiliza #USE SPI:

Ejemplo:
Código: C
  1. #use spi(MASTER,CLK=PIN_C3, DO=PIN_C5, DI=PIN_C4, BITS=8, MODE=3, FORCE_HW, stream=BUSSPI)

Para fijar la velocidad:
Código: C
  1. setup_spi(SPI_CLK_DIV_64);

Para recibir y enviar dato:

Código: C
  1. Dato_recibido=spi_xfer(BUSSPI,Dato_Enviar);

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Re: Un ejemplo con SPI por favor.
« Respuesta #7 en: 03 de Septiembre de 2009, 18:18:18 »
Si esa libreria la estuve revisando y berro me enrolle un poquito!!!!! Gracias Sucky por las instrucciones ahora me estoy orientando un poco!!!! y si lo voy a hacer por hardware MGLSOFT... Bueno voy a empezar con mi travesía a lo largo del mundo del SPI en C, vamos a ver que tal me va... Voy a ir posteando avances!!!

Atte: Enigma... La llanerita de Guayana :D
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Un ejemplo con SPI por favor.
« Respuesta #8 en: 03 de Septiembre de 2009, 18:55:18 »
En lo de hardware yo no tengo tanta experiencia, igual SPI no tiene comparación con I2C, es mucho mas flexible y rustico, con menos problemas.
Voy a seguir el tema a ver como crece, eso si deberías llevarnos informados a los curiosos!!! :D :D :D
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Re: Un ejemplo con SPI por favor.
« Respuesta #9 en: 03 de Septiembre de 2009, 20:59:58 »
Perdón me he equivocado es por software que lo voy a hacer....

Atte: Enigma... La llanerita de Guayana ;-)
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Re: Un ejemplo con SPI por favor.
« Respuesta #10 en: 03 de Septiembre de 2009, 21:36:52 »
Bueno he colocado estás instrucciones:

setup_spi(SPI_MASTER | SPI_L_TO_H | SPI_CLK_DIV_4);

#use spi(MASTER,CLK=PIN_B4, DO=PIN_B2, DI=PIN_B1, BITS=8, MODE=3, FORCE_HW, stream=BUSSPI)

y para enviar el dato al conversor he usado está instrucción...

spi_write( dato );

Donde dato es la variable que recojo del conversor analógico digital del pic, es decir:

dato=(ADC*5)/255;                  // Convierto a analógico

Ahora no estoy un poco clara con la conexión del TLC5615 con el pic...

Según el datasheet del conversor, pues

DIN    Es la entrada serial
SCLK Es la entrada serial del reloj
CS es el Chip select y se activa en bajo
DOUT es el dato de salida en serial para encadenar con otro chip
AGND La tierra analógica
REFIN Es la entrada de referncia
OUT Salida analogica de voltaje del DAC
VDD y el VCC

O.k, no se si mi conexión al pic está bien, como dije nunca he usado este protocolo.... Pero lo tengo conectado de está manera:

SCLK del conversor, al CLK del pic.
 CS  del conversor a tierra.
DIN  a SDO del pic....

Ahora el SDI del pic no se conecta=???

Bueno lo tengo así y pues mido la salida del conversor (OUT), que deberia estar en analógica, y pues no sale nada de nada!!!!! está en cero!

El REFIN lo tengo a tierra!!

Que cosa estoy haciendo mal o que burrada estoy haciendo???

Atte: Enigma... La llanerita de Guayana  ;-)

No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Un ejemplo con SPI por favor.
« Respuesta #11 en: 03 de Septiembre de 2009, 23:04:52 »
Hola.

Si usas el SPI por software, no debes configurarlo con la función setup_spi(), ya que ésta última es para configurar el módulo SPI siempre y cuando el PIC  lo posea.

El pin del PIC que mencionas, si no lo configuras y  no lo necesitas, pues, no lo conectas. Yo he usado ese pin para habiltar o deshabilitar el dispositivo.

Saludos
El papel lo aguanta todo

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Un ejemplo con SPI por favor.
« Respuesta #12 en: 03 de Septiembre de 2009, 23:05:59 »
Sube un esquemático para ver como estas haciendo bien las conexiones, pero seria así:

PIC                Conversor

SCL                SCL
SDI                SDO
SDO               SDI
PIN_CS          CS


Después, si colocas stream=BUSSPI usa spi_xfer para enviar y recibir el dato  ;-)
No contesto mensajes privados, las consultas en el foro

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Re: Un ejemplo con SPI por favor.
« Respuesta #13 en: 03 de Septiembre de 2009, 23:24:17 »
Ahhh o.k, gracias por la aclaración MLO_ no sabia que el pin SDI funcionaba dandole valor de estado!!!!

 Lo que pasa Sucky es que enl conversor no tiene ni SDI ni SDO, por eso estoy confundida!!!!

Aquí está el diagrama!





Ya va sucky disculpame el no entender esto, de verdad, es que he leido tantas cosas que ya estoy que se me cruzan todas las instrucciones... el stream=BUSSPI usa spi_xfer para enviar y recibir el dato , es decir, uso esto en ves del write_spi(dato);


Atte: Enigma... La llanerita de Guayana ;-)
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Un ejemplo con SPI por favor.
« Respuesta #14 en: 04 de Septiembre de 2009, 00:18:05 »
Hola.

Mira, por ejemplo, la conexión de un LTC con el PIC via SPI:



Con esos tres pines se configura toda la comunicación SPI del dispositivo.

Saludos
El papel lo aguanta todo