¿Puedo usar I2C y SPI al mismo tiempo con PIC16F1503?

2

Soy nuevo en los microcontroladores Microchip y estoy buscando un dispositivo de muy bajo costo con I2C y SPI. Quiero conectar un I2C (ADC) y un dispositivo SPI (LCD).

Encontré este dispositivo de muy bajo costo:

Sin embargo, parece que I2C y SPI comparten el mismo hardware.

Pregunta: ¿Puedo usar hardware I2C y SPI en un circuito?

    
pregunta Kamil

3 respuestas

4

Estoy de acuerdo con la publicación de @ Olin. Al mismo tiempo, hay otro punto de vista en el que I 2 C o SPI para implementar en software y cuál en hardware.

I 2 El bus C tiene una velocidad máxima más baja que SPI. El bus I 2 típico tiene una velocidad de datos máxima de 400 kbps **. SPI típico puede funcionar fácilmente a 4 Mbps. Algunas aplicaciones requieren transferencia de alta velocidad sobre SPI. Por ejemplo: tarjetas SD, comunicaciones por radio. Un SPI golpeado un poco sería demasiado lento. Como resultado, el SPI tendría que implementarse con el hardware MSSP, y el I 2 C más lento se implementaría en el software.

A veces la velocidad no es importante. Por ejemplo, un esclavo del bus genera datos lentamente, por lo que la velocidad del bus no es el factor limitante.

** Hay versiones de alta velocidad de I2C, pero son muy comunes en el momento de escribir.

    
respondido por el Nick Alexeev
6

Sí, puede usar esta parte para conducir un bus IIC y un bus SPI en el mismo circuito. Sin embargo, no puede (razonablemente) usar el único módulo MSSP de este dispositivo para controlar ambos buses.

Mi solución recomendada es usar el MSSP para hacer IIC y hacer el SPI mediante el bing de bits de firmware de pines de E / S separados. SPI es un protocolo muy muy fácil de implementar cuando usted es el maestro, y parece que lo es. Dado que el maestro es dueño del reloj, no hay problema si su código SPI se interrumpe y se insertan demoras arbitrarias. Echa un vistazo a cómo funciona SPI. Realmente es muy simple y fácil de implementar directamente en el firmware.

Por supuesto, podría hacer el IIC en firmware y dejar que el MSSP administre el bus SPI. He escrito ambos, y SPI es más fácil de hacer en firmware que en IIC, así que dejaría que el MSSP se encargara de IIC. IIC no es difícil, pero es un poco más difícil de hacer con firmeza.

    
respondido por el Olin Lathrop
1

Aunque en el párrafo que enfatizó, usan la palabra and :

  

El módulo MSSP puede funcionar en uno de los dos modos :

     
  • Interfaz Periférica Serial (SPI)
  •   
  • Circuito inter-integrado (I2C ™)
  •   

Hoja de datos , página 164.

Pero puede implementar el protocolo I2C por software en otros pines.

Sin embargo:

  

Normalmente puedes mezclar I2C y SPI en los mismos pines. I2C solo hace algo entre START y STOP.

Según enlace

También verifique esto: I2C y SPI, si comparten la misma conexión, ¿existe o no un conflicto?

    
respondido por el Cornelius

Lea otras preguntas en las etiquetas