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.

I have some question about AFE4490

Other Parts Discussed in Thread: AFE4490

 - What happen if i generate 5v input to AFE_PDN pin ?

 - When i generate voltage input to afe4490, 5v and 3.3v. I measure frequency of CLCKOUT pin(30), Its should be 4 MHz. Am i right?

 - I use the arduino  uno as a microcontroller and i run my code. In the serial monitor, It shows SOMI pin doesn't connect. I have no idea what happen. What can i do?

Here is my code

//#include <intrinsics.h>
#include <string.h>
#include "AFE4490.h"
#include <SPI.h>


const int SOMI = 12; //data out connect to MISO
const int SIMO = 11; //data in connect to MOSI //butuh logic level converter
const int SCLK = 13;
const int SPISTE = 10; //butuh logic level converter
int ADC_RDY = 8;
int ADC_RESET = 7;

int count = 0;

//function declarations
//void AFE4490EnableInterrupt (void);
//void AFE4490DisableInterrupt (void);
void AFE4490Write (uint8_t address, uint32_t data);
uint32_t AFE4490Read (uint8_t address);
void SPIInit (void);

bool flag = true;

void setup()
{
Serial.begin(115200);

pinMode (SOMI,INPUT);
pinMode (SPISTE,OUTPUT);
pinMode (SCLK, INPUT);
pinMode (SIMO, OUTPUT);
pinMode (ADC_RDY, INPUT);
pinMode (ADC_RESET , INPUT);
//digitalWrite(ADC_RDY,HIGH);
//digitalWrite(ADC_RESET,HIGH);
delay(1000);
//pinMode (CLKOUT, INPUT); 
//pinMode (AFEADCRDY, OUTPUT);
//pinMode (AFEPDNZ, OUTPUT); 

//digitalWrite (SPISTE, HIGH);
//digitalWrite (SCLK,HIGH);
//digitalWrite (SIMO, 0X00000000);
//digitalWrite (AFEPDNZ, HIGH); 

AFE4490Init (); 
//AFE4490DisableInterrupt();

while(flag)
{
Serial.println(count);
delay(500);

Serial.print("Red Data:"); 
Serial.println(AFE4490Read(LED2VAL)); 
Serial.print("Red Ambi Data:"); 
Serial.println(AFE4490Read(ALED2VAL)); 
Serial.print("Red Different:");
Serial.println(AFE4490Read(LED2ABSVAL));
Serial.print("IR Data:"); 
Serial.println(AFE4490Read(LED1VAL)); 
Serial.print("IR Ambient:"); 
Serial.println(AFE4490Read(ALED1VAL)); 
Serial.print("IR Different:"); 
Serial.println(AFE4490Read(LED1ABSVAL)); 
count++;
//flag = false;
}
while(1);
//AFE4490EnableInterrupt ();
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void loop()
{
delay (1000);
}


/*
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void AFE4490EnableInterrupt (void)
{
digitalWrite(AFEADCRDY, HIGH);
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void AFE4490DisableInterrupt (void)
{
digitalWrite(AFEADCRDY,LOW);
}
*/
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void AFE4490Init (void)

Serial.println("AFE4490 Initialization Starts"); 
AFE4490Write(CONTROL0, 0x000000);
AFE4490Write(CONTROL1, 0x000101);
AFE4490Write(CONTROL2, 0x000000); // Disable crystal, we supply 8MHz directly 
AFE4490Write(PRPCOUNT, 0X001F3F);

AFE4490Write(LED2STC, 0X001770); //timer control
AFE4490Write(LED2ENDC,0X001F3E); //timer control
AFE4490Write(LED2LEDSTC,0X001770); //timer control
AFE4490Write(LED2LEDENDC,0X001F3F); //timer control
AFE4490Write(ALED2STC, 0X000000); //timer control
AFE4490Write(ALED2ENDC, 0X0007CE); //timer control
AFE4490Write(LED2CONVST,0X000002); //timer control
AFE4490Write(LED2CONVEND, 0X0007CF); //timer control
AFE4490Write(ALED2CONVST, 0X0007D2); //timer control
AFE4490Write(ALED2CONVEND,0X000F9F); //timer control

AFE4490Write(LED1STC, 0X0007D0); //timer control
AFE4490Write(LED1ENDC, 0X000F9E); //timer control
AFE4490Write(LED1LEDSTC, 0X0007D0); //timer control
AFE4490Write(LED1LEDENDC, 0X000F9F); //timer control
AFE4490Write(ALED1STC, 0X000FA0); //timer control
AFE4490Write(ALED1ENDC, 0X00176E); //timer control
AFE4490Write(LED1CONVST, 0X000FA2); //timer control
AFE4490Write(LED1CONVEND, 0X00176F); //timer control
AFE4490Write(ALED1CONVST, 0X001772); //timer control
AFE4490Write(ALED1CONVEND, 0X001F3F); //timer control

AFE4490Write(ADCRSTCNT0, 0X000000); //timer control
AFE4490Write(ADCRSTENDCT0,0X000000); //timer control
AFE4490Write(ADCRSTCNT1, 0X0007D0); //timer control
AFE4490Write(ADCRSTENDCT1, 0X0007D0); //timer control
AFE4490Write(ADCRSTCNT2, 0X000FA0); //timer control
AFE4490Write(ADCRSTENDCT2, 0X000FA0); //timer control
AFE4490Write(ADCRSTCNT3, 0X001770); //timer control
AFE4490Write(ADCRSTENDCT3, 0X001770);

AFE4490Write(CONTROL2,0x020200); // Disable crystal, 0.5V TX_REF 
AFE4490Write(LEDCNTRL,0x008080); // LED_RANGE=100mA, LED=50mA 
AFE4490Write(CONTROL1,0x000103); // Timers ON, average 3 samples 
AFE4490Write(CONTROL0,0x000001); // Switch to READ mode 

delay(1000);
Serial.println("AFE4490 Initialization Done"); 
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void SPIInit (void)

SPI.setClockDivider (SPI_CLOCK_DIV128);
SPI.setDataMode (SPI_MODE0);
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void AFE4490Write (uint8_t address, uint32_t data)
{
Serial.print ("[SPI to 0x");
Serial.print (address);
Serial.print ("] ");
if (digitalRead (SOMI) == HIGH){
SPIInit(); 
SPI.begin();
digitalWrite (SPISTE, LOW);
SPI.transfer (address);
Serial.print ("\t");
SPI.transfer ((data>>16)&0XFF);
Serial.print ((data>>16)&0XFF, HEX);
Serial.print ("\t");
SPI.transfer ((data>>8)&0XFF);
Serial.print ((data>>8)&0XFF, HEX);
Serial.print ("\t");
SPI.transfer (data &0XFF);
Serial.print (data &0XFF, HEX);
Serial.println ();
digitalWrite (SPISTE, HIGH); 
SPI.end();

else
{
Serial.println ("SOMI is NOT CONNECTED!!!!");
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
uint32_t AFE4490Read (uint8_t address)

SPIInit();
uint32_t data = 0;
digitalWrite (SPISTE, LOW);
SPI.begin();
SPI.transfer (address);
Serial.print ("\t");
Serial.print (address);
Serial.print ("\t");
data |= (SPI.transfer (0) <<16);
Serial.print (data,HEX);
Serial.print ("\t");
data |= (SPI.transfer (0) <<8);
Serial.print (data,HEX);
Serial.print ("\t");
data |= SPI.transfer (0);
Serial.print (data,HEX);
Serial.print ("\t");
digitalWrite (SPISTE, HIGH);
SPI.end();
return data;
}

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Here is my .h file

 

#ifndef AFE4490_H_

#define AFE4490_H_

 

#include <stdio.h>

//#include <types.h>

 

/* Register definitions */

 

#define CONTROL0                           0x00

#define LED2STC                              0x01

#define LED2ENDC                           0x02

#define LED2LEDSTC                       0x03

#define LED2LEDENDC                    0x04

#define ALED2STC                            0x05

#define ALED2ENDC                         0x06

#define LED1STC                              0x07

#define LED1ENDC                           0x08

#define LED1LEDSTC                       0x09

#define LED1LEDENDC                    0x0a

#define ALED1STC                            0x0b

#define ALED1ENDC                         0x0c

#define LED2CONVST                      0x0d

#define LED2CONVEND                   0x0e

#define ALED2CONVST                    0x0f

#define ALED2CONVEND 0x10

#define LED1CONVST                      0x11

#define LED1CONVEND                   0x12

#define ALED1CONVST                    0x13

#define ALED1CONVEND 0x14

#define ADCRSTCNT0                      0x15

#define ADCRSTENDCT0  0x16

#define ADCRSTCNT1                      0x17

#define ADCRSTENDCT1  0x18

#define ADCRSTCNT2                      0x19

#define ADCRSTENDCT2  0x1a

#define ADCRSTCNT3                      0x1b

#define ADCRSTENDCT3  0x1c

#define PRPCOUNT                          0x1d

#define CONTROL1                           0x1e

#define SPARE1                                0x1f

#define TIAGAIN                                0x20

#define TIA_AMB_GAIN     0x21

#define LEDCNTRL                           0x22

#define CONTROL2                           0x23

#define SPARE2                                0x24

#define SPARE3                                0x25

#define SPARE4                                0x26

#define SPARE4                                0x26

#define RESERVED1                        0x27

#define RESERVED2                        0x28

#define ALARM                                  0x29

#define LED2VAL                               0x2a

#define ALED2VAL                            0x2b

#define LED1VAL                               0x2c

#define ALED1VAL                            0x2d

#define LED2ABSVAL                       0x2e

#define LED1ABSVAL                       0x2f

#define DIAG                                      0x30

 

#endif /* AFE4490_H_ */

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 THANK YOU FOR YOUR HELP :)