управление устройствами SPI с помощью Arduino — разные напряжения

Моя плата Arduino использует 5 В для питания чипа atmega. Мне было интересно, есть ли что-то неправильное в питании моего atmega от 5 В, но, скажем, я питаю свой ЦАП MCP4922 от 3,3 В, имеет ли это значение? Просто я видел схемы, использующие одинаковые вольты для всех микросхем.

Пожалуйста, поделитесь таблицей данных или номером модели соответствующего ведомого устройства SPI. Некоторые устройства имеют 5-вольтовые входы, несмотря на то, что работают на 3,3 Вольта. Если это не так с вашим периферийным устройством, оно будет повреждено или уничтожено при подаче на входные линии 5 Вольт.
Ах хорошо. К счастью, он устойчив к 5v, только что проверил на себе. На самом деле устройство может питаться от 5,5 В (абсолютный максимум). Поэтому мой контакт vdd вынужден быть выше. Внезапно я получаю 4 В на моем mcp4922. хорошая работа, я не получил замену, тогда я подумал, что как-то поджарил его
На самом деле входы MCP4922 не рассчитаны на 5 Вольт, допустимые входные напряжения связаны с любым напряжением питания устройства: Все входы и выходы относительно AVSS-0,3V до VDD+0,3V . Если вы запустите его на 3,3 Вольта и подадите SPI MOSI и CLK на 5 Вольт, вы рискуете поджарить устройство. Должен ли я превратить это в ответ?
У NXP есть примечание к приложению, в котором обсуждаются решения этой проблемы.
@AnindoGhosh Да, ты должен.
@LeonHeller: ссылка на это примечание к приложению или номер документа?
@FedericoRusso Попробуйте примечание к приложению an97055

Ответы (3)

Это имеет значение. MCP4922 имеет предел входного напряжения VDD + 0,3 В на любых входных контактах. При напряжении 3,3 В все, что выше 3,6 В, вероятно, убьет чип . А Arduino ATMega имеет отсечку высокого уровня входного напряжения VDD * 0,6. При питании Arduino 5 В это означает, что он должен видеть как минимум 5 В * 0,6 = 3 В на входном контакте, чтобы правильно зарегистрироваться как логический ВЫСОКИЙ. Так что это должно работать в одну сторону, прежде чем вам нужно будет что-то добавить.

У Sparkfun есть хорошее руководство о том, как заставить его работать между двумя чипами при 5 В и 3,3 В, но все они требуют дополнительных компонентов (некоторых резисторов, диодов или MOSFET). Он также более подробно рассказывает об уровнях напряжения.

Но самое главное , зачем питать АЦП другим напряжением, чем Arduino, если у вас есть доступный источник 5 В? Это всего лишь гипотеза?

Есть несколько способов приспособиться к этому переходу уровня. Главное НЕ подавать 5 В на часть, работающую от 3 В или ниже (как указано выше). Таким образом, входы MCP4922 CS, SCK и SDI нуждаются во входных напряжениях, чтобы соответствовать его VDD. И если вы выбрали 3 В, это можно сделать с помощью резисторного делителя или 74HC4050 LVL CONVERTER , или SparkFun's Logic Level Converter , или SparkFun's PCA9306 Level Translator Breakout.

С другой стороны, допустимо, чтобы выход 3 В попадал на вход 5 В, если высокий уровень выхода микросхемы 3 В больше, чем минимальный уровень детектора входов High на входе микросхемы. Что часто бывает. Таким образом, вы часто видите детали, которые имеют один из вышеперечисленных шагов понижения уровня напряжения MOSI, SCK и CS, в то время как UpStep MISO отсутствует в Arduino.

Если ваше устройство не устойчиво к напряжению 5 В, чего нельзя сказать о MCP4922, не рекомендуется подключать входы/выходы 5 В к входам/выходам 3,3 В/В. Внутренние диоды могут помочь, но со временем устройство выйдет из строя. Лучше всего использовать методы для решения этой проблемы, такие как использование переключателей уровней.

ах лол. Вы думаете, что это жареный тогда, потому что выход на 100 мВ выше, чем расчетный выход по формуле на стр.18