5.7 KiB
MCP4725 Module
Since | Origin / Contributor | Maintainer | Source |
---|---|---|---|
2017-05-10 | dnc40085 | dnc40085 | mcp4725.c |
This module provides access to the MCP4725 12-bit Digital to Analog Converter.
!!!important: VDD is the power supply pin for the device. The voltage at the VDD pin is used as the supply input as well as the DAC reference input. The power supply at the VDD pin should be clean as possible for good DAC performance.
!!!note: The MCP4725 device address contains four fixed bits ( 1100 = device code) and three address bits (A2, A1, A0). The A2 and A1 bits are hard-wired during manufacturing, and A0 bit is determined by the logic state of A0 pin. The A0 pin can be connected to VDD or VSS , or actively driven by digital logic levels. The address pin(A0) can be actively driven by a GPIO to act as a chip select, allowing more than 2 devices to be used on the same bus.
mcp4725.read()
Gets contents of the dac register and EEPROM.
Syntax
mcp4725.read({[a0], [a1], [a2]})
Parameters
A0
Address bit 0. This bit is user configurable via MCP4725 pin 6(A0). (valid states: 0 or 1) (default: 0)A1
Address bit 1. This bit is hard-wired during manufacture. (valid states: 0 or 1) (default: 0)- Note: Modules purchased from Adafruit have this bit(A1) set high(1).
A2
Address bit 2. This bit is hard-wired during manufacture. (valid states: 0 or 1) (default: 0)
Returns
cur_pwrdn
Current power down configuration value.cur_val
Current value stored in dac register.eeprom_pwrdn
Power down configuration stored in EEPROM.eeprom_val
DAC value stored in EEPROM.eeprom_state
EEPROM write status0
EEPROM write is incomplete.1
EEPROM write has completed
por_state
Power-On-Reset status;0
The MCP4725 is performing reset and is not ready.1
The MCP4725 has successfully performed reset.
Example
-- Get current configuration using default i2c address 0x60(A0=0, A1=0, A2=0).
do
local ID = 0
local SDA = 6
local SCL = 5
i2c.setup(ID, SDA, SCL, i2c.SLOW)
local cur_pwrdn, cur_val, eeprom_pwrdn, eeprom_val, eeprom_state, por_state = mcp4725.read()
print("\n Current configuration:\n\tpower down value: "..cur_pwrdn.."\n\tdac value: "..cur_val)
print(" Configuration stored in EEPROM:\n\tpower down value: "..eeprom_pwrdn.."\n\tdac value: "..eeprom_val)
print(" EEPROM write state: "..(eeprom_state==1 and "Completed" or "incomplete"))
print(" Power-On-Reset state: "..(por_state==1 and "Completed" or "incomplete"))
end
-- Get current configuration using default i2c address 0x60(A0=0, A1=0, A2=0).
-- The MCP4725's address pin(A0) is being driven with gpio 4(pin 2).
do
local ID = 0
local SDA = 6
local SCL = 5
local mcp4725_chip_sel = 2
i2c.setup(ID, SDA, SCL, i2c.SLOW)
gpio.mode(mcp4725_chip_sel, gpio.OUTPUT, gpio.PULLUP)
gpio.write(mcp4725_chip_sel, 1)
local cur_pwrdn, cur_val, eeprom_pwrdn, eeprom_val, eeprom_state, por_state = mcp4725.read({A0=1})
gpio.write(mcp4725_chip_sel, 0)
print("\n Current configuration:\n\tpower down value: "..cur_pwrdn.."\n\tdac value: "..cur_val)
print(" Configuration stored in EEPROM:\n\tpower down value: "..eeprom_pwrdn.."\n\tdac value: "..eeprom_val)
print(" EEPROM write state: "..(eeprom_state==1 and "Completed" or "incomplete"))
print(" Power-On-Reset state: "..(por_state==1 and "Completed" or "incomplete"))
end
See also
mcp4725.write()
Write configuration to dac register or dac register and eeprom.
Syntax
mcp4725.write({[a0], [a1], [a2], value, [pwrdn], [save]})
Parameters
A0
Address bit 0. This bit is user configurable via MCP4725 pin 6(A0). (valid states: 0 or 1) (default: 0)A1
Address bit 1. This bit is hard-wired during manufacture. (valid states: 0 or 1) (default: 0)- Note: Modules purchased from Adafruit have this bit(A1) set high(1).
A2
Address bit 2. This bit is hard-wired during manufacture. (valid states: 0 or 1) (default: 0)value
The value to be used to configure DAC (and EEPROM). (Range: 0 - 4095)pwrdn
Set power down bits.mcp4725.PWRDN_NONE
MCP4725 output enabled. (Default)mcp4725.PWRDN_1K
MCP4725 output disabled, output pulled to ground via 1K restistor.mcp4725.PWRDN_100K
MCP4725 output disabled, output pulled to ground via 100K restistor.mcp4725.PWRDN_500K
MCP4725 output disabled, output pulled to ground via 500K restistor.
save
Save pwrdn and dac values to EEPROM. (Values are loaded on power-up or during reset.)true
Save configuration to EEPROM.false
Do not save configuration to EEPROM. (Default)
Returns
nil
Example
-- Set current configuration using default i2c address 0x60(A0=0, A1=0, A2=0).
do
local ID = 0
local SDA = 6
local SCL = 5
i2c.setup(ID, SDA, SCL, i2c.SLOW)
mcp4725.write({value=2048})
end
-- Set current configuration and save to EEPROM using default i2c address 0x60(A0=0, A1=0, A2=0).
do
local ID = 0
local SDA = 6
local SCL = 5
i2c.setup(ID, SDA, SCL, i2c.SLOW)
mcp4725.write({value=2048, save=true})
end
-- Set current configuration using default i2c address 0x60(A0=0, A1=0, A2=0).
-- The MCP4725's address pin(A0) is being driven with gpio 4(pin 2).
do
local ID = 0
local SDA = 6
local SCL = 5
local mcp4725_chip_sel = 2
i2c.setup(ID, SDA, SCL, i2c.SLOW)
gpio.mode(mcp4725_chip_sel, gpio.OUTPUT, gpio.PULLUP)
gpio.write(mcp4725_chip_sel, 1)
mcp4725.read({A0=1, value})
gpio.write(mcp4725_chip_sel, 0)
end