- 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 :)