4 votos

Problema con la comunicación SPI entre Arduino/Atmega328P y frambuesa Pi

Tengo un Atmega328P chip (que se utiliza como una Arduino) que me gustaría conectar un Raspberry Pi a través de SPI.

Originalmente había un Atmega328P que se ejecutan en 3.3 V el uso de su sistema interno de 8MHz de cristal en lugar de hacerlo por el exterior de cristal de 16MHz. El Atmega fue impulsado desde la Raspberry Pi 3.3 v pin. Me podría conectar directamente MISO/MOSI/SCLK/CE0 pines entre los dos dispositivos y he utilizado con éxito la Pi como SPI maestro y el Atmega como SPI esclavo.

Ahora quiero usar un Atmega328 alimentado a 5V de CC externo (LM317, etc) usando un dispositivo de cristal de 16MHz. Obviamente, los 5V de pines Atmega no puedo hablar con el de 3.3 V Pi pines así que me puse un Bi-Direccional Nivel de Lógica del Convertidor (https://www.sparkfun.com/products/12009). Este es mi actual esquema:

Schematic

Mi SPI código ya no funciona y no estoy muy seguro de por qué. Es esta la forma correcta de conectar los 5V Atmega y 3.3 V Pi para la comunicación SPI? Me estoy perdiendo alguna de las conexiones?

ACTUALIZACIÓN: yo acabé tratando de salir de comunicación I2C y funcionó de inmediato, así que creo que voy a cambiar para que. Sólo necesitaba baja velocidad de comunicación entre el microcontrolador Atmega y Pi de modo que se adapte a mis necesidades. Algún día voy a tener que probar algunas de las siguientes sugerencias.

2voto

Adam Puntos 126

El problema con convertidores de nivel como es solo puede ir tan rápido. Tratar de ralentizar la velocidad SPI.

Si usted tiene un alcance, compruebe los niveles de las señales para asegurarse de que son bastante altos, especialmente el reloj de la línea, en ambos lados.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X