Autor Tema: Dudas sobre registros relacionados con comunicación SPI  (Leído 3638 veces)

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

Desconectado rage78

  • PIC10
  • *
  • Mensajes: 9
Dudas sobre registros relacionados con comunicación SPI
« en: 13 de Marzo de 2010, 08:00:26 »
Hola compañeros.

Estoy intentando descifrar un poco como establecer una comunicación SPI entre mi microcontrolador (PIC18F6622) y un chip de RFID.
Os expongo mis dudas respeto a la funcionalidad de determinados bits de registro, para ver si alguien puede prender luz a mis penumbras.

REGISTRO SSPxSTAT
Bit7: SMP
     SMP=1: Los datos se muestran al final del tiempo de salida
     SMP=0: Los datos se muestran a la mitad del tiempo de salida
     Pregunta: ¿Que diferencia a nivel pràctico existe entre una u otra opción?
Bit6: CKE
     Entiendo que en combinación del bit CKP (registro SSPxCON1) conseguimos 4 modos de funcionamiento. Lo que no tengo muy claro es cual de esos 4 modos
     es el que más me beneficia.
     Debo decir que el chip con el que me comunico tiene como condición de inicialización para que pueda escribir en él, que:
      - Se  produzca una transición LOW_to_HIGH en la línea DIN(entrada de datos) del chip mientras la senyal SCLK(reloj) está a nivel HIGH
        Nota: LOW=0 HIGH=1
      - Mirando el cronograma (modo master) creo que el modo 00 es el que necesito, donde se transmite en el flanco de subida del clock, siendo nivel idle=0.
        Esto veo que también va relacionado con el bit SMP (concepto que aún no entiendo su función).
     Pregunta: ¿Estoy equivocado en lo expuesto?

REGISTRO SSPxCON1
Bit7: WC
     Sirve para indicar si se intenta escribir sobre el buffer cuando este aún está transmitiendo el byte anterior
     Pregunta1: ¿Debo entenden que mi función debe controlar dicho bit, antes de transmitir cualquier dato?
     Pregunta2: ¿Que funcionalidad puede tener el hecho de poder borrar dicho bit?
Bit3-0: SSPM
     Teniendo claro que quiero usar el modo Master y que he escogido un cristal de 16 MHz para el PIC.
     Pregunta: ¿De los modos posibles, en que me fijo para decantarme por uno u otro modo? Está claro que cuanto menor sea T mayor tasa de información, pero
      me gustaría saber que influencias negativas me pueden reportar.
     - TMR2 output/2
     - Fosc/64 --> 4us
     - Fosc/16 --> 1us
     - Fosc/4 --> 250ns

Muchas gracias por todo.
Saludos!

micronoob

  • Visitante
Re: Dudas sobre registros relacionados con comunicación SPI
« Respuesta #1 en: 13 de Marzo de 2010, 09:19:32 »
Hola ,

SMP permite seleccionar la modalidad de muestra de tu modulo SPI hay aparatos que transmiten con muestra central  sincronizados con el medio periodo y otros sincronizados con el inicio del periodo




CKE por lo mismo  de que hay diferente tipos de hardware puedes alinear tu transmisión con la descrita da el fabricante  del modulo con que quieres comunicarte
esto no influye en  las prestaciones de tu comunicación



el WC es otra cosa jejej
ya se a que te refieres WC o bit de colisión sirve porque para evitar sobrescribir datos en el buffer, como el mismo datasheet de  dice borras los datos en el buffer antes de escribir otro o limpiar después de escribir lo dos métodos son validos

aqui un ejemplo de escritura

Código: [Seleccionar]
//8bits method with flush buffer
#define writeXSFHSPI(x) \  
                   FLASH_SSPBUF = x; \     //pones el dato en el buffer
                   while(!FLASH_SPI_IF); \  //esperas que acabe
                   DummyMaster = FLASH_SSPBUF; \    //limpias el buffer
                   FLASH_SPI_IF = 0; //limpias el flag


por lo de la frequencia  deberias ver en el datasheet de tu modulo haber que velocidad suporta y tu te adeguas a ella el hecho que tu eres master
no quiere decir que todo el hardware que conectes puede ir a tu velocidad hay unos limites dectados del tipo de hardware CMOS , TTL ,74LS ,etc.


saludos.


« Última modificación: 13 de Marzo de 2010, 09:31:46 por micronoob »

Desconectado rage78

  • PIC10
  • *
  • Mensajes: 9
Re: Dudas sobre registros relacionados con comunicación SPI
« Respuesta #2 en: 13 de Marzo de 2010, 17:19:06 »
Gracias micronoob.

Hoy he estado mirando información sobre el chip que tengo que controlar y en un foro en concreto he visto que no se controla con una comunicación serie específica como es la SPI.

Al tener las siguientes líneas pensé que se podía hacer con SPI
SCLK Clock
DIN Data Input
DOUT Data Output

Pero por lo visto, debo controlar yo mismo las comunicaciones pues no utiliza un estandard de comunicaciones serie
Link donde encontré la información

Por lo que he leído en el datasheet del chip, tengo que sincronizar el clock del oscilador, con el envio de datos.
¿Esto puedo hacerlo con alguna de las opciones disponibles en el PIC? Entiendo que la idea sería enviar tramas de bits, justo en el momento en que el clock está a nivel alto.

Te paso la información del datasheet, por si te puede servir de referencia.

The communication between the HTRC110 and the microcontroller is done via a three wire digital
interface. The interface is operated by the following signals:
 
SCLK      Clock
DIN        Data Input
DOUT 
 
Data Output
 
SCLK and DIN are realized as Schmitt-Trigger inputs. DOUT is an open drain output with internal
pullup resistor.
 
Every communication between HTRC110 and microcontroller begins with an initialization of the
serial interface. The interface initialization condition is a low-to-high transition of the signal DIN
while SCLK is high.






Desconectado reiniertl

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Dudas sobre registros relacionados con comunicación SPI
« Respuesta #3 en: 14 de Marzo de 2010, 14:26:08 »
Creo que tendrás que escribirte una librería propia

De todos modos mira a ver cómo fucniona la UART de un PIC en modo sincrónico (no el modo para implementar RS232 sino el otro). Es posible que te sirva, lástima que tendrías que sacrificar la UART para eso. Yo que tú me escribo mi librería y listo, total no es un protocolo complicado.

Saludos
Reinier

Desconectado rage78

  • PIC10
  • *
  • Mensajes: 9
Re: Dudas sobre registros relacionados con comunicación SPI
« Respuesta #4 en: 14 de Marzo de 2010, 16:17:21 »
Creo que tendrás que escribirte una librería propia

De todos modos mira a ver cómo fucniona la UART de un PIC en modo sincrónico (no el modo para implementar RS232 sino el otro). Es posible que te sirva, lástima que tendrías que sacrificar la UART para eso. Yo que tú me escribo mi librería y listo, total no es un protocolo complicado.

Saludos
Reinier

Voy a mirarme lo que me has comentado a ver que tal sale.

Muchas gracias por la ayuda Reinier.

Saludos


Desconectado horval

  • PIC10
  • *
  • Mensajes: 5
Re: Dudas sobre registros relacionados con comunicación SPI
« Respuesta #5 en: 18 de Marzo de 2010, 14:10:58 »
Una consulta aparte: Es posible utilizar en simultáneo la USART y la SPI en un pic 16f877a?
Qué pic puede funcionar con las dos?

Desde ya muchas gracias

horval

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Dudas sobre registros relacionados con comunicación SPI
« Respuesta #6 en: 18 de Marzo de 2010, 21:24:02 »
Hola horval, si los dos perifericos pueden trabajar juntos en el PIC16F877A, a excepcion de los PICs con USB com el PIC18F4550 creo que todos los que tienen SPI y USART pueden hacerlos funcionar al mismo tiempo.

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Dudas sobre registros relacionados con comunicación SPI
« Respuesta #7 en: 19 de Marzo de 2010, 03:41:30 »
Efectivamente, mientras las señales TX/RX y SCK/SDO/SDI no se pisen se pueden usar a la vez.