My arduino board uses 5v to power the atmega chip. I was wondering is there any thing wrong with powering my atmega at 5v but say I power my MCP4922 dac at 3.3v does it matter? It just that I've seen schematics that use the same volts for all ic's
-
\$\begingroup\$ Please share the datasheet or model number of the SPI slave device in question. Some devices have 5 Volt tolerant inputs, despite running at 3.3 Volts. If this is not the case with your peripheral, it will be damaged or destroyed by driving the input lines with 5 Volts. \$\endgroup\$Anindo Ghosh– Anindo Ghosh2013年02月04日 19:52:32 +00:00Commented Feb 4, 2013 at 19:52
-
\$\begingroup\$ ah ok. Luckily it is 5v tolerant just checked for myself. The device can actually be powered by 5.5v(absolute max) So is that why my vdd pin is forced to be higher. All of a sudden I get 4v across my mcp4922. good job I didn't get a replacement then I thought I toasted it some how \$\endgroup\$Ageis– Ageis2013年02月04日 20:00:22 +00:00Commented Feb 4, 2013 at 20:00
-
4\$\begingroup\$ Actually the inputs of the MCP4922 are not 5 Volt tolerant, the acceptable input voltages are linked to whatever voltage the device is supplied at: All inputs and outputs w.r.t AVSS–0.3V to VDD+0.3V. If you run it at 3.3 Volts and provide SPI MOSI and CLK at 5 Volts, you risk frying the device. Should I make this into an answer? \$\endgroup\$Anindo Ghosh– Anindo Ghosh2013年02月04日 20:05:26 +00:00Commented Feb 4, 2013 at 20:05
-
\$\begingroup\$ NXP has an app note discussing solutions to this problem. \$\endgroup\$Leon Heller– Leon Heller2013年02月04日 20:33:13 +00:00Commented Feb 4, 2013 at 20:33
-
\$\begingroup\$ @AnindoGhosh Yea you should. \$\endgroup\$Passerby– Passerby2013年02月04日 20:39:34 +00:00Commented Feb 4, 2013 at 20:39
3 Answers 3
It does matter. The MCP4922 has a input voltage limit of VDD + 0.3v on any input pins. At 3.3v power, anything above 3.6v will probably kill the chip. And the Arduino ATMega has a Input Voltage Level High cutoff of VDD * 0.6. At 5v Arduino power, that means it needs to see at least 5v * 0.6 = 3v on a input pin to properly register as a logic HIGH. So this should work one way before you need to add things.
Sparkfun has a nice tutorial on how to get it to work between two chips at 5v and 3.3v, but they all require extra components (some resistors or diodes, or a mosfet). It also goes more in depth about the voltage levels.
But the most important thing is why power the ADC at a different voltage than the Arduino, if you have the 5v source available? Is this just a hypothetical?
There are several ways to accommodation this level transition. Key is NOT to put 5V into a part running at 3V or something lower (as stated above). So the MCP4922 inputs of CS, SCK and SDI all need there input volatages to match its VDD. And if you chose that to be 3V, this can be done using a Resistor Divider or 74HC4050 LVL CONVERTER, or SparkFun's Logic Level Converter or SparkFun's PCA9306 Level Translator Breakout
On the flip side it is acceptable for a 3V's output to go into the 5V's input, as long as the High Level of the 3V chip's output is greater than the minimum level of the inputs High detector of the chip's input. Which is often the case. So you often see parts that have one of the above Voltage Level Down Steps MOSI, SCK and CS, while there is no UpStep of the MISO, into the Arduino.
Unless your device is 5V tolerant, which the MCP4922 isn't, it is not a good idea to connect 5V I/O to 3.3V I/O. The internal diodes may help, but with time the device will get destroyed. It's best to use techniques for dealing with this such as using level shifters.
-
\$\begingroup\$ ah lol. Do you think it's fried then because the output is 100mV higher than the calculated output using the formula on pg18 \$\endgroup\$Ageis– Ageis2013年02月04日 20:58:37 +00:00Commented Feb 4, 2013 at 20:58
Explore related questions
See similar questions with these tags.