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.

AFE4404EVM: The red and IR Leds signals are really low being almost 0

Part Number: AFE4404EVM
Other Parts Discussed in Thread: AFE4404

Hi,

Please help the customer's issue.

When I connect the board to the PC I can see green led and red led is working but when I'm in capture mode just green led is working. Furthermore, the red and IR leds signals are really low being almost 0. I read SFH 7050 datasheet to know which is the working current for all leds but even configurating the leds correctly does not work. I attach a picture.

Best regards,

Julie Ann

  • Julie,

    Green LED captures HR much easier than red. You may want to try to pump up the LED current and gain stages in order to see HR for red LED
  • Thank you for your answer. I incresed up the red and IR LEDs current and I got a better response. Hovewer  the noise is quite high  and not always with the same average, at some momens the noise is higher than the others(I'm using the pc battery supply). Could I get a better response ? I attach you a picture.

     Thank you in advance, Joan

  • Joan,

    Noise can depend on many things while you are measuring. Try not plugging in the PC, which I think you did. Try the test setup in a different location. For more information on testing the device and EVM, you can look at the User's Guide and datasheet.

  • Hi Amy,

    The same customer still have problem. I have attached the details below.

    I'm trying to control the AFE 4404 EVM with and Arduino board. But I'm having problems with I2C communication. I recive the ACK pulse after sending the address, but it seems I can not write data in the device.

    I copyed the configuration registers from the AFE 4404 EVM gui. The power supply are as follow:

    RX_SUP=3.3V

    IO_SUP=3.3V

    TX_SUP=5V

    I2C_SCL=4.8V

    I2C_SDA=4.8V

    I2C clock is working at 400kHz.

    here is de code I am using:

    #include <Wire.h>   /* I2C*/
    
    
    byte AFE_ADDR=0x58; /* AFE ADDRESS*/
    byte EEPROM_ADDR = 0x50;/* EEPROM ADDRESS*/
    int ADCRST=2; /*ADC_RDY*/
    unsigned long EEPROM_Internal_ADDR=0;/*Internal EEPROM address*/
    int CLK=3;
    long retVal=0; /* LEDs value*/
    int cont_ADC=0; /* ADC_RDY cont*/
    int V_code[3]; /*used as a DAC buffer*/
    bool flag_RESETZ=0;
    bool flag_INIT=0;
    bool flag_loop=0;
    bool trans_end=0;
    int dato[3];
    int LEER=0;
    bool flag_ADC=0;
    const byte Pin_RESETZ=8;
    #define RESETZ 0x0 /*Reset value*/
    /***********Internal AFE Registers ***********/ 
    
    
    
    /*ADC read out registers*/
    int Reg_lectura[6]={
    
    /*AFE_LED2VAL*/                     0x2a,
    /*AFE_ALED2VAL*/                    0x2b,
    /*AFE_LED1VAL*/                     0x2c,
    /*AFE_ALED1VAL*/                    0x2d,
    /*AFE_LED2_ALED2VAL*/               0x2e,
    /*AFE_LED1_ALED1VAL*/               0x2f,
    };
    
    /***********Internal AFE settings ***********/ 
    
    long Settings[][2]={         
                 
                                       /*Register*/            /*Data*/ 
    /*AFE4404  CONTROL0                   {0x0,                 0x1},*/
    /*AFE4404 LED2STC*/                   {0x1,                 0x64},
    /*AFE4404 LED2ENDC*/                  {0x2,                 0x18F},
    /*AFE4404 LED1LEDSTC*/                {0x3,                 0x322},
    /*AFE4404 LED1LEDENDC*/               {0x4,                 0x4B1},
    /*AFE4404 ALED2STC*/                  {0x5,                 0x1F5},
    /*AFE4404 ALED2ENDC*/                 {0x6,                 0x320},
    /*AFE4404 LED1STC*/                   {0x7,                 0x386},
    /*AFE4404 LED1ENDC*/                  {0x8,                 0x4B1},
    /*AFE4404 LED2LEDSTC*/                {0x9,                 0x0},
    /*AFE4404 LED2LEDENDC*/               {0xA,                 0x18F},
    /*AFE4404 ALED1STC*/                  {0xB,                 0x517},
    /*AFE4404 ALED1ENDC*/                 {0xC,                 0x642},
    /*AFE4404 LED2CONVST*/                {0xD,                 0x199},
    /*AFE4404 LED2CONVEND*/               {0xE,                 0x5BC},
    /*AFE4404 ALED2CONVST*/               {0xF,                 0x5C6},
    /*AFE4404 ALED2CONVEND*/              {0x10,                0x9E9},
    /*AFE4404 LED1CONVST*/                {0x11,                0x9F3},
    /*AFE4404 LED1CONVEND*/               {0x12,                0xE16},
    /*AFE4404 ALED1CONVST*/               {0x13,                0xE20},
    /*AFE4404 ALED1CONVEND*/              {0x14,                0x1243},
    /*AFE4404 ADCRSTSTCT0*/               {0x15,                0x191},
    /*AFE4404 ADCRSTENDCT0*/              {0x16,                0x197},
    /*AFE4404 ADCRSTSTCT1*/               {0x17,                0x5BE},
    /*AFE4404 ADCRSTENDCT1*/              {0x18,                0x5C4},
    /*AFE4404 ADCRSTSTCT2*/               {0x19,                0x9EB},
    /*AFE4404 ADCRSTENDCT2*/              {0x1A,                0x9F1},
    /*AFE4404 ADCRSTSTCT3*/               {0x1B,                0xE18},
    /*AFE4404 ADCRSTENDCT3*/              {0x1C,                0xE1E},
    /*AFE4404 PRPCOUNT*/                  {0x1D,                0x9C3F},
    /*AFE4404 CONTROL1*/                  {0x1E,                0x103},
    /*AFE4404 TIAGAIN*/                   {0x20,                0x8003},
    /*AFE4404 TIA_AMB_GAIN*/              {0x21,                0x3},
    /*AFE4404 LEDCNTRL*/                  {0x22,                0x14D3F},
    /*AFE4404 CONTROL2*/                  {0x23,                0x104018},
    /*AFE4404 CLKDIV1*/                   {0x29,                0x0},
    /*AFE4404 LED2VAL                     {0x2A,                0x8DA5},
    /*AFE4404 ALED2VAL                    {0x2B,                0x10600},
    /*AFE4404 LED1VAL                     {0x2C,                0x74C0},
    /*AFE4404 ALED1VAL                    {0x2D,                0x5FAF},
    /*AFE4404 LED2-ALED2VAL               {0x2E,                0xFF8400},
    /*AFE4404 LED1-ALED1VAL               {0x2F,                0x1605},*/
    /*AFE4404 CONTROL3*/                  {0x31,                0x20},
    /*AFE4404 PDNCYCLESTC*/               {0x32,                0x1563},
    /*AFE4404 PDNCYCLEENDC*/              {0x33,                0x991F},
    /*AFE4404 PROG_TG_STC*/               {0x34,                0x0},
    /*AFE4404 PROG_TG_ENDC*/              {0x35,                0x0},
    /*AFE4404 LED3LEDSTC*/                {0x36,                0x191},
    /*AFE4404 LED3LEDENDC*/               {0x37,                0x320},
    /*AFE4404 CLKDIV2*/                   {0x39,                0x0},
    /*AFE4404 OFFDAC*/                    {0x3A,                0x0},
    
                                  
                                   
     
    };
    void setup() {
      
      Serial.begin(9600);
      
    /***********ADC interrupt ***********/ 
      pinMode(ADCRST, INPUT);/*This pin is conected to ADC_RDY to generate an interrupt when ADC_RDY make a pulse*/
      attachInterrupt(digitalPinToInterrupt(ADCRST), Interrupt1, RISING);
    /***********Configuración I2c***********/   
      Wire.begin();
      Wire.setClock(400000);/*(400kHz)*/
    
    
        pinMode(Pin_RESETZ,OUTPUT);
      
    
      digitalWrite(Pin_RESETZ,LOW);
      delay(50);
      digitalWrite(Pin_RESETZ,HIGH);
        
       /*AFE reset*/  
       flag_RESETZ=0;
       Serial.print("flag_RESETZ=");
       Serial.print(flag_RESETZ);
       
       AFE_RESETZ_Init(); 
    
       flag_RESETZ=1;
       Serial.print("flag_RESETZ=");
       Serial.print(flag_RESETZ);
      
       /*AFE init*/ 
       flag_INIT=0;
       Serial.print(";flag_INIT=");
       Serial.println(flag_INIT);
      
       AFE_Init_Settings();
      
       flag_INIT=1;
       Serial.print(";flag_INIT=");
       Serial.println(flag_INIT);
      
    }
    
    void loop() {
      
      if(flag_ADC==1){
      Read_ADC();
      cont_ADC++;
      Serial.print(";cont_ADC=");
      Serial.println(cont_ADC);
      flag_ADC=0;
    }
     
    }
    
    /**********************************************************************************************************/
    /*                                         USER FUNCTIONS                                                 */
    /**********************************************************************************************************/
    
    
    /*Reset function*/
    void AFE_RESETZ_Init(){
     
      I2C_write(AFE_ADDR, 0x0, 0x0);
      
    }
    /*Function to send the configuration*/  
    void AFE_Init_Settings(){
      int i=0;
      for(i=0;i<=43;i++){
        
       I2C_write(AFE_ADDR,Settings[i][1], Settings[i][2]);
      }
      
      
    }
    /***********Interrupt function***********/ 
    void Interrupt1(){
       
      flag_ADC=1;
    }
    void Read_ADC(){
      int j=0;
      for(j=0;j<=5;j++){
        I2C_read(AFE_ADDR,Reg_lectura[j],3);
        EEPROMWritelong(EEPROM_ADDR,EEPROM_Internal_ADDR, V_code); 
    
          
    }
       j=0;
          
    }
    
    /**********************************************************************************************************/
    /*                              Write to AFE on I2C                                                       */
    /**********************************************************************************************************/
    void I2C_write (int slave_address, byte reg_address, unsigned long configData)
    {
     
      int ACK;
      Wire.beginTransmission( slave_address);
      Wire.write(reg_address);
      Wire.write( (configData >> 16) & 0xFF);
      Wire.write( (configData >> 8) & 0xFF);
      Wire.write( (configData) & 0xFF);
      ACK=Wire.endTransmission();
      Serial.print(";Wire end transmission=");
      Serial.print(ACK);
     
      
      
     
    }
    /**********************************************************************************************************/
    /*                              Read Data of AFE on I2C                                                   */
    /**********************************************************************************************************/
    char I2C_read(int slave_address, unsigned long reg_address, int byteCount)
    {
      
      int m=0;
      Wire.beginTransmission(slave_address);
      Wire.write(reg_address);
      Wire.endTransmission();
      Wire.requestFrom(slave_address, 3);
      while(Wire.available() && (byteCount != 0))
      {
        V_code[m]=Wire.read();
        
        byteCount--;
        m++;
      }
      
      
      return (V_code);
      
    }
    
     
      
    /*                              Write I2C EEPROM                                                   */
    /**********************************************************************************************************/
    
    void EEPROMWritelong( byte slave_address,unsigned long EEPROM_internal, int value[])
          {
          int k=0;
             
          for(k=0;k<=2;k++){
            Wire.beginTransmission(slave_address);
            Wire.write(EEPROM_internal);
            Wire.write(value[k]);
            Wire.endTransmission();
            EEPROM_Internal_ADDR=EEPROM_Internal_ADDR+1;
            
            }
             
    }

    Do you know what can happend?

    Thank you in advance, Joan

    Thank you for your support.

  • Hi Julie,

    It seems like the I2C lines are being pulled up to 5V.
    AFE4404 IO_SUP voltage level is 3.3V.
    I2C lines must be pulled up to IO_SUP voltage level.