This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LM4970 problem , keep getting NACK after sending address

Other Parts Discussed in Thread: LM4970

Hello,

I have a LM4970 that i am programming using an Arduino,

I have the LM4970 connected correctly to the Arduino, (Vdd and I2CVdd is tied together , GND to GND, SDA and SCL is correctly connected, the ADR pin is tied to GND)

There is power going across the LM4970, 5v ish, no power on the ADR pin, etc...

For the life of me i cannot get the LM4970 to accept its own address, im sending over 0x7A, and i keep getting a NACK, 

I've even trying sending over every possible combination of I2C Address, and all of them got a NACK response, anyone have any idea? I have attached my code

8255.lm4970.txt

#include <Wire.h>                // for I2C

// defines for LM4970
#define LM4970_ADDR_0      0x7A  // first 7 bits of address 0 (ADR = LOW)
#define LM4970_ADDR_1      0x7B  // first 7 bits of address 1 (ADR = HIGH)

#define LM4970_MODE_NORM   0x00  // power up, normal I2C, no random
#define LM4970_MODE_RAND   0x04  // power up, normal I2C, random
#define LM4970_FREQ        0x50  // 6.3kHz High Pass / 15kHz PWM
#define LM4970_PATT_AUDIO  0x60  // pattern gen by audio input
#define LM4970_PATT_I2C    0x61  // pattern gen by I2C - all off
#define LM4970_CURR        0xAA  // 1x current (21mA)on LED 1-3
#define LM4970_GAIN        0xEA  // gain = 10dB / midband = medium


byte LM4970_Address = LM4970_ADDR_0; // using address 0 (ADR = LOW)

void setup() {
  Wire.begin(); 
  LM4970_Hello();                          // light up some LEDs in I2C mode
  LM4970_Init();                           // set for audio control of LEDs
}

void loop(){
  
}

void LM4970_Init(){  // Init based on #defines above
  Wire.beginTransmission(LM4970_Address);
  Wire.write(LM4970_MODE_NORM);             // set the mode
  Wire.write(LM4970_FREQ);                  // set the freq
  Wire.write(LM4970_PATT_AUDIO);            // set the pattern
  Wire.write(LM4970_CURR);                  // set the current
  Wire.write(LM4970_GAIN);                  // set the gain  
  Wire.endTransmission(); 
  delay(5);                                // safety - may not be needed
}

void LM4970_I2C_Led(boolean LED1,boolean LED2,boolean LED3){ // I2C control of LEDs
  byte pattern = LM4970_PATT_I2C;          // pattern set to I2C control - all off
  pattern |= LED1 << 1;                    // shift in status for LED1
  pattern |= LED2 << 2;                    // shift in status for LED2
  pattern |= LED3 << 3;                    // shift in status for LED3
  Wire.beginTransmission(LM4970_Address);
  Wire.write(pattern);                      // send the command for the LEDs to light
  Wire.write(LM4970_CURR);                  // set the current
  Wire.endTransmission(); 
  delay(5);                               // safety - may not be needed
}

void LM4970_Hello(){
  LM4970_I2C_Led(true,false,false);        // turn on LED-1
  delay(500);
  LM4970_I2C_Led(false,true,false);        // turn on LED-2
  delay(500);
  LM4970_I2C_Led(false,false,true);        // turn on LED-1
  delay(500);
  LM4970_I2C_Led(true,true,true);          // turn on all 3
  delay(1000);
  LM4970_I2C_Led(false,false,false);       // turn em off
  delay(1000);
}