TI论坛
直播中

汪潇潇

8年用户 920经验值
私信 关注
[问答]

使用C8051F340控制INA226作为电压电流侦测器,造成01h/03h/04h读值为0的原因是什么?


  • 目前使用C8051F340控制INA226作为电压电流侦测器,可正常读取Bus Voltage register 02h,但是读取Shunt register 01h、current register 04h、power register 03h的读值皆为0。请问造成01h/03h/04h读值为0的原因为何?
    使用侦测电路架构为High side shunt型式。
    Shunt resistor阻值设定为2m ohm。
    schematic.pdf
    暂存器设定值参考下表进行设定:
    Register setting.pdf


    以下程式码为实际应用:
    void main()
    {
            Word RD_Word_Data = 0;
            //float RD_Word_Data1;
            Long A = 0;
            //Word A = 0;
            Byte cnt = 0;
            Byte j = 0;
            PCA0MD &= ~0x40;                        // clear watch dog
       PCA0MD = 0x00;
       Oscillator_Init();                     // OSC=48MHZ
            P1MDOUT = 0x7F;
            XBR1 = 0x40;

            //read bus voltage
            I2C_WR_Byte_Data(0x82,0x03,0x00,0x41,0x27); <=設定configuration register
            I2C_WR_Byte_Data(0x82,0x03,0x05,0x0A,0x00); <=設定calibration register
            I2C_WR_Byte_Data(0x82,0x01,0x02,0x00,0x00); <=設定Register Pointer
            RD_Word_Data = I2C_RD_Word_Data(0x83);       <=設定讀取位址

            //read shunt voltage
            I2C_WR_Byte_Data(0x82,0x03,0x00,0x41,0x27);
            I2C_WR_Byte_Data(0x82,0x03,0x05,0x0A,0x00);
            I2C_WR_Byte_Data(0x82,0x01,0x01,0x00,0x00);
            RD_Word_Data = I2C_RD_Word_Data(0x83);

            // read current
            I2C_WR_Byte_Data(0x82,0x03,0x00,0x41,0x27);
            I2C_WR_Byte_Data(0x82,0x03,0x05,0x0A,0x00);
            I2C_WR_Byte_Data(0x82,0x01,0x04,0x00,0x00);
            RD_Word_Data = I2C_RD_Word_Data(0x83);
            // read power
            I2C_WR_Byte_Data(0x82,0x03,0x00,0x41,0x27);
            I2C_WR_Byte_Data(0x82,0x03,0x05,0x0A,0x00);
            I2C_WR_Byte_Data(0x82,0x01,0x03,0x00,0x00);
            RD_Word_Data = I2C_RD_Word_Data(0x83);
    }

    void I2C_WR_Byte_Data(Byte Address, Byte Para_Count, Byte Para1, Byte Para2, Byte Para3)
    {
       Byte i = 0;

       I2C_Start();

       Write_Byte(Address);

            for (i=0; i

回帖(2)

h1654155275.5753

2024-12-3 09:50:13
请您做以下检查:
1、检测回路是否为完整回路,即是否有电流流过SR。
2、被检测回路是否和INA226共地,在您给出的电路图中没有表示出来。
3、I2C通信建议用示波器查看波形,查看波形是否存在干扰或时序是否正确。
举报

王超

2024-12-3 18:13:12
根据您提供的信息,您正在使用C8051F340微控制器来控制INA226作为电压和电流检测器。您提到可以正常读取Bus Voltage寄存器(02h),但是读取Shunt寄存器(01h)、电流寄存器(04h)和功率寄存器(03h)的读值都为0。以下是一些可能的原因:

1. INA226配置问题:请检查INA226的配置寄存器是否正确设置。根据您的电路架构(High side shunt),您需要确保配置寄存器中的相关位被正确设置。例如,您需要设置RPGA、BRNG、PGA、MODE等位。

2. INA226初始化问题:确保INA226已经被正确初始化。在初始化过程中,需要设置配置寄存器、Shunt寄存器和Bus Voltage寄存器。请检查您的代码是否正确执行了这些步骤。

3. 通信问题:请检查C8051F340与INA226之间的I2C通信是否正常。您可以尝试使用示波器检查I2C总线上的信号,以确保通信正常。

4. 硬件问题:请检查您的硬件连接是否正确。确保INA226的引脚连接正确,特别是Shunt电阻(2m ohm)的连接。此外,检查电源和地线是否正确连接。

5. 代码问题:请检查您的代码是否正确读取了INA226的寄存器。您可以尝试使用调试工具(如Keil uVision)来调试您的代码,以确保正确读取了寄存器值。

为了解决这个问题,您可以尝试以下步骤:

1. 检查INA226的配置寄存器设置,确保所有相关位都被正确设置。
2. 检查C8051F340与INA226之间的I2C通信是否正常。
3. 检查硬件连接,确保INA226的引脚连接正确。
4. 使用调试工具调试您的代码,确保正确读取了INA226的寄存器值。

希望这些建议能帮助您解决问题。如果您需要更多帮助,请提供更多详细信息,例如INA226的配置寄存器设置和您的代码。
举报

更多回帖

×
20
完善资料,
赚取积分