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.

[参考译文] AFE4300:在AFE4300通电后,VLDO为0V

Guru**** 2531950 points
Other Parts Discussed in Thread: AFE4300

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/565046/afe4300-vldo-is-0v-after-powering-up-the-afe4300

部件号:AFE4300

您好,

我们使用参考设计为AFE4300制造PCB。 首先检查,我在AVCC和RESET(Bar)引脚(测量值)上提供了3.3V电压,AVSS引脚已正确接地, 因此我希望VLDO引脚为我显示1.7V电压。 但是在VLDO上看不到1.7V,它显示为0V。 我检查了引脚18和引脚80上的电压,正确地看到3.3V,但我没有看到VLDO。 我缺少什么?

1)是否必须具备CLK才能获得VLDO?  

2)我是否应该在SPI行上写入任何内容以获取VLOD?

我们还可以做哪些其他基本检查来查看AFE是否已通电? 请帮助

此致,

Shankar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Shankar:

    默认情况下,所有信号链均未通电,因此在VLDO时不会获得1.7V电压。
    要使VLDO作为1.7 ,您必须启用体重秤,您可以通过将0x6005写入device_control1寄存器(即 0x09)。

    此致,
    Prabin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Prabin,

    感谢您的回复。 我尝试这样做,device_control1总是返回-1。 是否可以进行任何检查以查看主板是否正常?

    我还应该使用什么SPI模式? AM使用Arduino与传感器通信。

    1)在AVCC上应用3.3V,在RST上应用3.3V
    2)来自函数发生器的1 MHz脉冲应用于CLK (我已将所有三个信号都接地)
    3)我尝试了2MHz的SCLK,也尝试过250kHz,但没有工作

    即使是硬件流检查。 据我所见,如果我们能正常通电并且针脚连接正确,SPI通信就不会失败。

    任何调试线索都将非常有帮助。

    此致,
    Shankar
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Shankar:

    请解释一下"device_control1正在返回-1"的含义。 设备不会返回任何注册写入内容。
    您应该使用SPI模式1 (即 SCLK的空闲状态=低,数据在上升沿更改,数据在下降沿捕获)。
    在写入DEVICE_control1时能否探测所有4个SPI信号?
    此外,您还可以在设备通电时测量电源电流。

    此致,
    Prabin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Prabin,

    对不起,我没有提到。 在写入后正在读取SPI上的数据,使用SPI.Read Just检查设备是否通电,实际上是在 循环中连续读取DEVICE_control1。 我根据数据表使用了SPI模式1。 我探测了数据通道,并看到数据已正确发送(首先将0x05写入  device_control1)

    奇怪的是  ,从device_control1读取的第一个值按预期返回5,但随后变为0 (有时为-1或其它垃圾值)。 我还尝试了一个晶体振荡器的时钟频率,它产生的正是1MHz,但仍然没有运气。

     尚未测量电流。 另一个问题是,大多数控制器上的所有引脚都产生5V电压,GPIO用于RST和slaveselect引脚。 它们还包含5V电压。 这是否会成为问题?

    此致,

    Shankar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是简单代码AM正在尝试

    void writeRegister (unsigned char地址,unsigned int数据)

    unsigned char firstByte =(unsigned char)(data >> 8);
    unsigned char secondByte =(unsigned char)数据;

    SPI.beginTransaction(AFESettings);
    DigitalWrite (SlaveSelectPIn,低);
    SPI.transfer (地址);
    //发送2个要写入的字节
    SPI.transfer (firstByte);
    SPI.transfer (secondByte);
    DigitalWrite (SlaveSelectPIn,高);
    SPI.endTransaction();
    }

    void initAFE4300()

    writeRegister (MISC1_register,0x0000);
    writeRegister (MISC2_register,0xFFFF);
    writeRegister (MISC3_register,0x0030);
    writeRegister (device_control_1,0x6005);//启动称重模式
    }
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Shankar:

    如数据表中所述,"一旦您阅读了寄存器,就必须使用读取值将其写回"。 这说明了这样一个事实,即仅第一次按预期读取DEVICE_control1。

    请尝试以下操作:

    1. 在与AFE4300相同的电压下运行MCU (即 3.3V)。 这将排除不正确的电压是可能的原因。
    2. 在传输寄存器地址之前,确保Slave_Select引脚为低电平。 此外,在数据的最后一个字节被传输后,它还应保持较低的状态一段时间(SCLK的~循环)。

    DigitalWrite (SlaveSelectPIn,低);

    延迟

    SPI.transfer (地址);

    //发送2个要写入的字节

    SPI.transfer (firstByte);

    SPI.transfer (secondByte);

    延迟

    DigitalWrite (SlaveSelectPIn,高);

    此致,

    Prabin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Prabin,

    非常感谢,让我进入第2级。 现在可以打开器件电源,并在VLDO引脚上读取1.6V的电压。

    下一步,我尝试为称重前端加电并启动ADC。 但是,经过几次尝试,我仍然看不到ADC上的任何内容。 此外,RDY (bar)始终保持高电平,不会中断我的控制器。 下面是我正在使用的代码。 我已将一个50mV的分压器连接到INP1和INM1。 分压器ckt使用VLDO供电。 我检查过SPI时钟和数据,它们都正常。 事实上,在下面的代码中,我写了,读回来确认,然后再写一次,我发现这是有效的,但不知怎么的,ADC不能启动。

    可能是什么问题? 如何进行调试?

    void initWeighScale()

    serial.println ("初始化称重器");
    writeRegister (device_control_1,0x6005);//启动称重信号链
    serial.println (readRegister (device_control_1));
    writeRegister (device_control_1,0x6005);//启动称重信号链

    writeRegister (ADC_CONTINT_REGISTER,0x4140);//差分测量模式,32 SPS
    serial.println (readRegister (ADC_CONTINT_REGISTER));
    writeRegister (ADC_CONTINT_REGISTER,0x4140);

    writeRegister (ADC_CONTINT_REGISTER_2,0x0000);//ADC选择磅秤的输出
    serial.println (readRegister (ADC_CONTINT_REGISTER_2);
    writeRegister (ADC_CONTINT_REGISTER_2,0x0000);

    writeRegister (weight_scale_control,0x0000);//增益= 1 DAC偏移= 0
    serial.println (readRegister (weight_scale控制));
    writeRegister (weight_scale_control,0x0000);

    writeRegister (BCM_DAC_FREQ,0x0040);//频率=默认值
    writeRegister (device_control_2,0x0000);
    writeRegister (IQ_MODE_ENABLE,0x0000);//禁用IQ模式
    writeRegister (ISW_Matrix,0x0000);//通道IOUTP1和IOUTN0
    writeRegister (VSW_Matrix,0x0000);//通道VSENSEP1和VSENSEN0
    }

    此致,

    Shankar