主题中讨论的其他器件:AFE4404
您好!
请帮助客户解决问题。
当我将电路板连接到 PC 时、我可以看到绿色 LED 和红色 LED 正在工作、但当我处于捕获模式时、绿色 LED 正在工作。 此外、红色和红外 LED 信号实际上很低、几乎为0。 我阅读 SFH 7050数据表、了解所有 LED 的工作电流是多少、但即使正确配置 LED 也无法正常工作。 我附上一张图片。
此致、
Julie Ann
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.
您好!
请帮助客户解决问题。
当我将电路板连接到 PC 时、我可以看到绿色 LED 和红色 LED 正在工作、但当我处于捕获模式时、绿色 LED 正在工作。 此外、红色和红外 LED 信号实际上很低、几乎为0。 我阅读 SFH 7050数据表、了解所有 LED 的工作电流是多少、但即使正确配置 LED 也无法正常工作。 我附上一张图片。
此致、
Julie Ann
您好、Amy、
同一位客户仍然有问题。 我随函附上了以下详细信息。
我正在尝试使用 Arduino 板控制 AFE 4404 EVM。 但我的 I2C 通信有问题。 我在发送地址后恢复 ACK 脉冲、但似乎无法在器件中写入数据。
我已从 AFE 4404 EVM GUI 中复制配置寄存器。 电源如下:
RX_SUP=3.3V
IO_SUP=3.3V
TX_SUP=5V
I2C_SCL=4.8V
I2C_SDA=4.8V
I2C 时钟的工作频率为400kHz。
下面是我使用的代码:
#include /* I2*/ 字节 AFE_ADDR=0x58;/* AFE 地址*/ 字节 EEPROM_ADDR = 0x50;/* EEPROM 地址*/ int ADCRST=2;/* ADC_RDY*/ unsigned long EEPROM_Internal_ADDR=0;/内部 EEPROM 地址*/ int CLK=3; long Retal=0;/* intradc=0*;/in_dac _boo=0*// boo=0* intrl;// t_boo_boost=0* intrag_s*;t_boos=0* intradc = 0* int Leer=0; bool flag_adc=0;
const 字节 Pin_RESETZ=8;
#define RESETZ 0x0 /*重置值*/
******* 内部 AFE 寄存器******* /*ADC
读出寄存器*/
int Reg_lectura [6]={
/*AFE_LED2VAL*/ 0x2a、
/*AFE_ALED2VAL*/ 0x2b、
/*AFE_LED1VAL*/ 0x2C、
/*AFE_ALED1VAL*/ 0x2D、
/*AFE_LED2_ALED2VAL*/ 0x2E、
/*AFE_LED1_ALED1VAL*/ 0x2F
、};
/******* 内部 AFE 设置******* /
长设置[][2]={
/*注册*/ /*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 ADCRSTCT0*/ {0x15、 0x191}、
/* AFE4404 ADCRSTENDCT0*/ {0x16、 0x197},
/* AFE4404 ADCRSTCT1*/ {0x17、 0x5BE}、
/* AFE4404 ADCRSTENDCT1*/ {0x18、 0x5C4}、
/* AFE4404 ADCRSTCT2*/ {0x19、 0x9EB}、
/* AFE4404 ADCRSTENDCT2*/ {0x1A、 0x9F1}、
/* AFE4404 ADCRSTCT3*/ {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 中断******* /
pinMode (ADCRST、INPUT);/*当 ADC_RDY 产生脉冲时,该引脚连接到 ADC_RDY 以生成中断*/
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 重置*/
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;
}
}
/ //*
用户功能 */
********* /*Reset
function*/
void AFE_RESETZ_Init(){I2C_write(AFE_ADDR,
0x0, 0x0);
}/**用于
发送配置的函数*/
void AFE_Init_Settings(){
int i=0;
for (i=0;i<=43;i++){
I2C_WRITE (AFE_ADDR、设置[I][1]、设置[I][2]);
}
/*** 中断函数*** /
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;
}
/ //*
写入 I2C 上的 AFE */
********* /
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=
Transmission
(Serial.ACK);print.end.ACK (Serial Transmission);print.ACK (configdata)
/ //*
读取 I2C 上 AFE 的数据 */
********* /
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 ();
字节计数--;
M++;
}
返回(V_code);
}
/* 写入 I2C EEPROM */
********* /
空 EEPROMWritelong (字节 SLAVE_ADDRESS、unsigned long EEPROM_INTERNAL、int 值[])
{
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;
}
}
你知道会发生什么吗?
提前感谢您、Joan
感谢您的支持。