Autor Tema: SPI POR SOFTWARE  (Leído 7437 veces)

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

Desconectado GRUNFELD69

  • PIC10
  • *
  • Mensajes: 37
SPI POR SOFTWARE
« en: 24 de Julio de 2013, 20:37:01 »
Buenas noches:

Alguien podria ayudarme con una comunicacion SPI donde los pines de MISO, CS Y CLK no son los asignados por default en hardware???

Desconectado luchi94

  • PIC10
  • *
  • Mensajes: 17
Re:SPI POR SOFTWARE
« Respuesta #1 en: 30 de Julio de 2018, 17:18:07 »
Hola que ta?veo que no tuviste respuesta. Yo tengo el mismo problema, me podrías dar una mano?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:SPI POR SOFTWARE
« Respuesta #2 en: 30 de Julio de 2018, 18:20:24 »
Depende del compilador que usen, pero codigos de SPI por software hay en todos lados, si usan CCS al seleccionar otro pin que no es el correspondiente en hardware, solo el compilador adjunta el codigo para que funcione como software.

Desconectado luchi94

  • PIC10
  • *
  • Mensajes: 17
Re:SPI POR SOFTWARE
« Respuesta #3 en: 22 de Agosto de 2018, 10:28:59 »
Hola KILLERJC. Disculpa por la demora, te comento un poco. Estoy queriendo hacer un sistema de adquisición de datos con el rc522 (RFID) y un modulo te tarjeta micro SD. Donde en la tarjeta se crea un archivo .txt. Tengo todos los sensores andando por separado pero cuando los quiero juntar a todos no puedo hacer que funcionen juntos, ya que todos se conectan por el bus SPI.
Quisiera saber si me podrías dar una mano.
Todo esta andando con librerías que usan el bus SPI por hardware, no se como usar el bus SPI por software uso el compilador CCS y estoy trabajando con el pic 18F44550.

Muchísimas gracias de antemano y perdón por no contestar antes.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:SPI POR SOFTWARE
« Respuesta #4 en: 22 de Agosto de 2018, 10:53:33 »
Que tal luchi94,

Si los sensores que estas usando son SPI deberian tener algun pin de seleccion como SS, CS, CE, u otro nombre. Para que puedas tener varios dispositivos colgados en el bus usas ese pin para seleccionar el dipositivo con el que vas a trabajar (leerlo o escribirlo). Es decir necesitas un pin extra por cada sensor, lector RFID, memoria, etc. que sirve como chip select. De otro modo no podras trabajar con todos ellos juntos en el mismo bus. Por esllo es que no entiendo tu necesidad de usar SPI por software, cuando todo se podrias realizar con el SPI por hardware.

Espero que ese sea el problema, pero ayudaría si colocaras algún esquemático o diagrama para entender mejor lo que estas haciendo.

elreypic.

Desconectado luchi94

  • PIC10
  • *
  • Mensajes: 17
Re:SPI POR SOFTWARE
« Respuesta #5 en: 22 de Agosto de 2018, 11:13:38 »
Que tal luchi94,

Si los sensores que estas usando son SPI deberian tener algun pin de seleccion como SS, CS, CE, u otro nombre. Para que puedas tener varios dispositivos colgados en el bus usas ese pin para seleccionar el dipositivo con el que vas a trabajar (leerlo o escribirlo). Es decir necesitas un pin extra por cada sensor, lector RFID, memoria, etc. que sirve como chip select. De otro modo no podras trabajar con todos ellos juntos en el mismo bus. Por esllo es que no entiendo tu necesidad de usar SPI por software, cuando todo se podrias realizar con el SPI por hardware.

Espero que ese sea el problema, pero ayudaría si colocaras algún esquemático o diagrama para entender mejor lo que estas haciendo.

elreypic.


Hola ELEREYPIC2 en efecto, ambos "sensores" (lo pongo entre comillas porque no se si son o no sensores ) tienen la patilla de CS. Al inicio de cada rutina, por ej al inicio de la rutina de RC522 pongo a 0 el pin CS de dicho sensor y cuando termino pongo a 1 el mismo pin, pero en algo estoy fallando porque no me estarían a andando todos los sensores juntos.  Sera porque el rc522 trabaja con 3.3V y tengo puesto un divisor resistivo a la salida del pic?
No se si me estoy explicando bien, cuando llego a casa subo una imagen de como tengo las conexiones y el código, por ahi me podes dar una mano.
« Última modificación: 22 de Agosto de 2018, 11:19:53 por luchi94 »

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:SPI POR SOFTWARE
« Respuesta #6 en: 22 de Agosto de 2018, 12:56:57 »
Bueno, el RC522 no es un sensor, es un lector de RFID de alta frecuencia; 13.56MHz. Que Sirve para leer tags (tarjetas y/o llaveros) MIFARE.

Esto asumiendo que tienes un CS para cada lector y no un solo CS para ambos lectores, corecto?
Si es así el problema pudiera radicar en el divisor de tensión que estás usando en el pin de SDO del microcontrolodar y el pin del MOSI del lector por lo de los 3.3V de operación del lector. Y te puedo decir casi con seguridad que ahí radica el problema.

Si es que no, es decir si estás usando un solo CS para ambos lectores, es ahí que radica tu problema. Tienes que seleccionar a cada lector de forma individual mediante de su propio CS.

Espero el esquemático para tener un mejor análisis de lo que estás haciendo.

elreypic.

Desconectado luchi94

  • PIC10
  • *
  • Mensajes: 17
Re:SPI POR SOFTWARE
« Respuesta #7 en: 23 de Agosto de 2018, 22:21:01 »


Esto asumiendo que tienes un CS para cada lector y no un solo CS para ambos lectores, corecto?
Si es así el problema pudiera radicar en el divisor de tensión que estás usando en el pin de SDO del microcontrolodar y el pin del MOSI del lector por lo de los 3.3V de operación del lector. Y te puedo decir casi con seguridad que ahí radica el problema.

elreypic.

Ahí esta la imagen. Las resistencias están puestas para lograr los 3.3V para el RC522. Creería que esta bien, pero bueno puede que este mal el circuito.
Si querés te paso el código que estoy usando.
Como decís que realice la conexión?
Repito, cuando uso el lector RFID y el módulo SD por separados andan los dos re bien.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:SPI POR SOFTWARE
« Respuesta #8 en: 24 de Agosto de 2018, 12:48:36 »
Defintivamente ahí está el problema.
En estos caso no es recomendable el usar los divisores de tensión para realizar la conversión del bus de datos. Tienes que usar

1) Usar un trasnceiver como convertidor de nivel que puede ser el SN74LVC245A
2) Usar un convertido de nivel como el MAX3390E que está diseñado para SPI

También puedes usar los convertidores bidireccionales a transistores que son muy baratos como:
https://www.addicore.com/Logic-Level-Converter-Bi-Directional-5V-to-3-3V-p/227.htm

Una posible solución o digamos mejor experimento es que elimines solamente el divisor de tension del pin SO o MISO hacia el SDI del microcontrolador y dejar solamente los divisores de tensión de MOSI, SCK y el CS del lector. Pero como digo, sería solo para experimentar.

Saludos y espero que esto te ayude a resolver tu problema.

elreypic.

Desconectado luchi94

  • PIC10
  • *
  • Mensajes: 17
Re:SPI POR SOFTWARE
« Respuesta #9 en: 24 de Agosto de 2018, 15:04:51 »
Gracias, lo voy a probar. Pero te hago otra pregunta, porque cuando los uso por separado andan los dos y cuneado los junto no?
Esta tarde/noche pruebo en quitar el divisor en el pin y te comento que paso.
Muchísimas gracias!!

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:SPI POR SOFTWARE
« Respuesta #10 en: 24 de Agosto de 2018, 17:44:47 »
No estoy muy seguro, ya que necesitaría hacer un análisis con un analizador lógico de tu circuito para ver los niveles que hay cuando los dos estan operando. Pero creo pensar que el problema radica en la "carga" que hay en el alguna linea de datos, el MISO o el MOSI, o aun el CLK, ya que ahora estas agregando resistencias y aunque no se ve pero tambien hay capacitancias parasíticas dentro de los resistores que afectan la carga que ve el master (en este caso el PIC). Eso deforma las señales o niveles en el bus SPI y los hace indefinidos. Es por eso que a primera instancia lo que se me ocurre es eliminar ese divisor de tension la linea de datos del MISO, ya que cuando se activa el lector su nivel es de 3.3V y eso es todavia reconible como 1 en una lógica de 5V.

Elreypic.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:SPI POR SOFTWARE
« Respuesta #11 en: 24 de Agosto de 2018, 20:51:18 »
Que tal luchi94,

Navegando por la web me encontré un documento en donde usan el lector RFID con un arduino (que abundan por internet). Usan la alimentación de 3.3V para alimentar el lector RFID, pero el bus de datos lo manejan directamente con los pines de salida del arduino (que en realidad es un AVR), pero el arduino está alimentado con 5V, lo que quiere decir que el bus SPI está en niveles de 5V, es decir MOSI, SCK y SS o CS estan a niveles de 5V y solamente el MISO tiene niveles de 3.3V.

Lo que quiere decir que tu aplicación podría funcionar quitando los divisores de tensión y conectado directamente tu lector y la tarjeta SD al bus SPI sin nada extra. Puedes hacer esa prueba si lo crees conveniente. Si le quieres hechar un vistazo a este documento pdd:

https://uc8ad74bd532477aed7dccabf2f4.dl.dropboxusercontent.com/cd/0/inline2/AOyyzrWqPb0tC-Y9Cm8WLJ-YQPX6_jTK61w5FdjUh26JxG02-518kFySJZdVJL_zLaGS6xYBu8ubvWEyCtntXWgv72hS5X0ZfIjlK2VQcaa-r-QyaSC_wgWuCejRFXhgGAPbYgNEUq4wcV0a0e1ZUusGqZBdv2FHmMEDcAwr-G9cWmMvy-aldA9ZLLGU2wr3rFR9vv5rBhnc4xYP5NHOXAO38EkJjdbMVKGF_7CJjGzBqoevHnMKkhD_0V89cUGy_xLspM2ivXeHdhdMOzTQDYjkTN_CIz30l4aWZRRRsdU4RCo-J_cd0BcJOFYo2IFysYTOpGwy02YdfP2bsLCpZPr_M7cFNi_SNDMC0eQvNPqwFAdLSULtR3kIur7kMzCp-eSSohVrGMq3G9OtuwMwRZoEstu5WZaGTbeUuxrYwyDfmpWYesjR37BKua305wCxnz4/file

igual y te sirve y yo no tienes que usar ningun convertidor de nivel lógico.

Acabo de recordar que lo he probado, busqué mi lector y mi arduino. Encontrado el circuito ensamblado y bingo. Funciona a la perfección, lo que quiere decir que hay una gran posibilad que te funcione también.

Saludos,

elreypic.
« Última modificación: 24 de Agosto de 2018, 20:57:44 por elreypic2 »

Desconectado luchi94

  • PIC10
  • *
  • Mensajes: 17
Re:SPI POR SOFTWARE
« Respuesta #12 en: 28 de Agosto de 2018, 09:39:25 »
Buen día  elreypic2. Definitivamente tengo un problema con el pin MISO, ya que cuando levanto el pin del moldulo SD el RC522 anda bien, pero si tengo conectados los dos juntos no hay forma de que ande.
Ya probé en poner le pin MISO directamente sin el divisor resistivo y tampoco funciona.

Con el modulo SD no tengo problemas, el problema me lo genera el RC522.

Adjunto mi código por las dudas que tenga un error 

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:SPI POR SOFTWARE
« Respuesta #13 en: 28 de Agosto de 2018, 12:45:09 »
Buen día  elreypic2. Definitivamente tengo un problema con el pin MISO, ya que cuando levanto el pin del moldulo SD el RC522 anda bien, pero si tengo conectados los dos juntos no hay forma de que ande.
Ya probé en poner le pin MISO directamente sin el divisor resistivo y tampoco funciona.

Con el modulo SD no tengo problemas, el problema me lo genera el RC522.

Adjunto mi código por las dudas que tenga un error

Que tal luchi94,

En el código principal no veo ningún problema. Pero sería bueno revisar las funciones de la librerias solo para detectar cual es el estado final que dejan estas despues de realizar alguna operación.

Por ejemplo, veo que tu código lo que hace es que desactiva la SD poniendo el CS en bajo (puerto RB2=0) y entonces inicializas el RFID reader. Luego realizas un bucle en el cual preguntas si se ha detectado algún tag, si es así realiza la lectura del UID y ahí es que necesitamos saber cual es el estado del MFRC522_CS (puerto RB5) y así entonces asegurar su deshabilitación. Me imagino que ya has hecho varias pruebas, pero te sugeriría que hiceras la siguiente. Con el SD conectado al microcontrolador excepto el CS del SD conectado a VDD para asegurar que está deshabilitado, y sin ningún divisor de voltaje conecta el RFID reader (el RC522) directamente al PIC y realiza la lectura de algún tag mostrándolo en el puerto serial. Si esto funciona, entonces el problema no es el RC522 sino más bien el problema sería el CS, ya sea del RC522 o del SD.

Ojalá me pudieras compartir las librerías que usas para el SD y el RC522 y hecharles un vistazo. Si no las quieres colgar aquí, envíame un mensaje privado y ahí coloca las librerías.

Esto me parece más un problema de harware que de software, pero vamos a tratar de encontrar algún problema en el software primero. Si no es así procederemos a modificar el hardware.

saludos,

elreypic.

Desconectado luchi94

  • PIC10
  • *
  • Mensajes: 17
Re:SPI POR SOFTWARE
« Respuesta #14 en: 28 de Agosto de 2018, 13:08:07 »
Ahí te mande una mensaje, pasame tu correo que te mando todo lo que tengo.
No es que no lo quiera subir, sino que no puedo subir todo junto, no me deja subir los archivos .rar, perdón soy nuevo en el foro.