controlar dispositivos SPI usando Arduino - diferentes voltajes

Mi placa arduino usa 5v para alimentar el chip atmega. Me preguntaba si hay algún problema con encender mi atmega a 5v, pero digamos que enciendo mi MCP4922 dac a 3.3v, ¿importa? Es solo que he visto esquemas que usan los mismos voltios para todos los circuitos integrados

Comparta la hoja de datos o el número de modelo del dispositivo esclavo SPI en cuestión. Algunos dispositivos tienen entradas tolerantes a 5 voltios, a pesar de funcionar a 3,3 voltios. Si este no es el caso con su periférico, se dañará o destruirá al alimentar las líneas de entrada con 5 voltios.
ah bien Afortunadamente, es tolerante a 5v, solo lo comprobé por mí mismo. El dispositivo en realidad puede ser alimentado por 5.5v (máximo absoluto) Entonces, es por eso que mi pin vdd se ve obligado a ser más alto. De repente tengo 4v en mi mcp4922. buen trabajo, no obtuve un reemplazo, entonces pensé que lo brindé de alguna manera
En realidad, las entradas del MCP4922 no son tolerantes a 5 voltios, los voltajes de entrada aceptables están vinculados a cualquier voltaje al que se suministre el dispositivo: Todas las entradas y salidas van de AVSS–0.3V a VDD+0.3V . Si lo ejecuta a 3,3 voltios y proporciona SPI MOSI y CLK a 5 voltios, corre el riesgo de freír el dispositivo. ¿Debo convertir esto en una respuesta?
NXP tiene una nota de aplicación que analiza las soluciones a este problema.
@AnindoGhosh Sí, deberías.
@LeonHeller: ¿enlace a esa nota de aplicación o número de documento?
@FedericoRusso Pruebe la nota de la aplicación an97055

Respuestas (3)

Si importa. El MCP4922 tiene un límite de voltaje de entrada de VDD + 0.3v en cualquier pin de entrada. A una potencia de 3.3v, cualquier cosa por encima de 3.6v probablemente matará el chip . Y el Arduino ATMega tiene un corte de nivel alto de voltaje de entrada de VDD * 0.6. Con una potencia de Arduino de 5v, eso significa que necesita ver al menos 5v * 0.6 = 3v en un pin de entrada para registrarse correctamente como un ALTO lógico. Entonces esto debería funcionar de una manera antes de que necesite agregar cosas.

Sparkfun tiene un buen tutorial sobre cómo hacer que funcione entre dos chips a 5v y 3.3v, pero todos requieren componentes adicionales (algunas resistencias o diodos, o un mosfet). También profundiza más en los niveles de voltaje.

Pero lo más importante es ¿por qué alimentar el ADC a un voltaje diferente al del Arduino, si tiene la fuente de 5v disponible? ¿Es esto sólo una hipótesis?

Hay varias formas de adaptarse a esta transición de nivel. La clave NO es poner 5V en una parte que funciona a 3V o algo más bajo (como se indicó anteriormente). Por lo tanto, las entradas MCP4922 de CS, SCK y SDI necesitan voltajes de entrada para coincidir con su VDD. Y si elige que sea de 3 V, esto se puede hacer usando un divisor de resistencia o un CONVERTIDOR DE LVL 74HC4050 , o el convertidor de nivel lógico de SparkFun o el desglose del traductor de nivel PCA9306 de SparkFun.

Por otro lado, es aceptable que una salida de 3 V entre en la entrada de 5 V, siempre que el nivel alto de la salida del chip de 3 V sea mayor que el nivel mínimo de las entradas del detector alto de la entrada del chip. Que es a menudo el caso. Por lo tanto, a menudo ve partes que tienen uno de los pasos de descenso de nivel de voltaje anteriores MOSI, SCK y CS, mientras que no hay UpStep de MISO, en Arduino.

A menos que su dispositivo sea tolerante a 5V, lo cual no ocurre con el MCP4922, no es una buena idea conectar E/S de 5V a 3.3VI/O. Los diodos internos pueden ayudar, pero con el tiempo el dispositivo se destruirá. Es mejor usar técnicas para lidiar con esto, como el uso de cambiadores de nivel.

ah jajaja ¿Crees que está frito porque la salida es 100 mV más alta que la salida calculada usando la fórmula en la página 18?