MP2980 Demo board Question

Where is the software located? The link in the documentation doesn’t work. I would also like to talk to engineering about using this power supply for a production board my team is working on.

Arduino sketch for controlling this demo board.

#include <Wire.h>

//A5 = SCL and A5 = SDA on Aruduino UNO

//define the I2C address

int PS_Address = 0x60;

//define the register locations

#define REF_LSB 0x00

#define REF_MSB 0x01

#define CONTROL1 0x02

#define CONTROL2 0x03

#define ILIM 0x04

#define INT_STATUS 0x05

#define INT_MASK 0x06

void setup() {

Wire.begin();

//Initiate the wire library

Serial.begin(9600);

delay(100); //Enable Measurement

//Write all the registers

//Take voltage times 100 convert it to binary. First 8 bits go into MSB and bottom 3 bits go into LSB. For example about

//16V * 100 = 1600 or 0b11001000000 FSB = 11001000 LSB = 000 The FB voltage divider is not quite 100:1 so it will be off a bit

Wire.beginTransmission(PS_Address);

Wire.write(REF_LSB);

Wire.write(0b00000111);

Wire.endTransmission();

Wire.beginTransmission(PS_Address);

Wire.write(REF_MSB);

Wire.write(0b11001000);

Wire.endTransmission();

//Control 1 needs to be 0xFF or 0b11111111 for voltage control to be enabled. Some of the bits might be able to be 0 but I

//didn’t take the time to determine which one was setting the output.

Wire.beginTransmission(PS_Address);

Wire.write(CONTROL1);

Wire.write(0b011111111);

Wire.endTransmission();

//Stuck with the default

Wire.beginTransmission(PS_Address);

Wire.write(CONTROL2);

Wire.write(0b10000101);

Wire.endTransmission();

//8steps current limit for this device.

//0x111=6.8A, 0x110 = 6.2A, 0x101 = 5.6A, 0x100 = 5.0A, 0x011=4.5A, 0x010=3.8A, 0x001=3.8A, 0x000=2.6A

//Finger resolution requires the MP2984 with ILIM set to 0x111 and use of the PWM pin.

Wire.beginTransmission(PS_Address);

Wire.write(ILIM);

Wire.write(0b00000000); //Setting to 2.6A

Wire.endTransmission();

}

void loop() {

//Verify the registers are set correctly by reading them all back over and over

Wire.beginTransmission(PS_Address);

Wire.write(REF_LSB);

Wire.endTransmission();

Wire.requestFrom(PS_Address,1);

Serial.print("REF_LSB (Register 0x00): ");

Serial.println(Wire.read(),BIN);

Wire.beginTransmission(PS_Address);

Wire.write(REF_MSB);

Wire.endTransmission();

Wire.requestFrom(PS_Address,1);

Serial.print("REF_MSB (Register 0x01): ");

Serial.println(Wire.read(),BIN);

Wire.beginTransmission(PS_Address);

Wire.write(CONTROL1);

Wire.endTransmission();

Wire.requestFrom(PS_Address,1);

Serial.print("CONTROL1 (Register 0x02): ");

Serial.println(Wire.read(),BIN);

Wire.beginTransmission(PS_Address);

Wire.write(CONTROL2);

Wire.endTransmission();

Wire.requestFrom(PS_Address,1);

Serial.print("CONTROL2 (Register 0x03): ");

Serial.println(Wire.read(),BIN);

Wire.beginTransmission(PS_Address);

Wire.write(ILIM);

Wire.endTransmission();

Wire.requestFrom(PS_Address,1);

Serial.print("ILIM (Register 0x04): ");

Serial.println(Wire.read(),BIN);

Wire.beginTransmission(PS_Address);

Wire.write(INT_STATUS);

Wire.endTransmission();

Wire.requestFrom(PS_Address,1);

Serial.print("INT_STATUS (Register 0x05): ");

Serial.println(Wire.read(),BIN);

Wire.beginTransmission(PS_Address);

Wire.write(INT_MASK);

Wire.endTransmission();

Wire.requestFrom(PS_Address,1);

Serial.print("INT_MASK (Register 0x06): ");

Serial.println(Wire.read(),BIN);

delay(10000);

}

Hi Eric,

You can utilize Virtual Bench Pro 4.0 GUI with the MP2980.
Virtual Bench Pro 4.0 (monolithicpower.com)

Best Regards,
Yu