stm32g030f6p6读取ina3221

uint16_t INA3221_GetShuntVoltage(uint8_t channel)
{
    uint32_t temp = 0;
    switch (channel)
    {
    case 1:
        temp = INA3221_ReadData(INA3221_ADDR, INA3221_CH1SHUNT_REG);
        break;
    case 2:
        temp = INA3221_ReadData(INA3221_ADDR, INA3221_CH2SHUNT_REG);
        break;
    case 3:
        temp = INA3221_ReadData(INA3221_ADDR, INA3221_CH3SHUNT_REG);
        break;
    default:
        break;
    }
		
    if (temp & 0x8000)
        temp = ~(temp - 1);
		//   // 1 LSB = 40uV
    return (uint16_t)(temp>>3)*40;
}

参考:https://www.ti.com/lit/ds/symlink/ina3221.pdf

注意 1lsb是40uv,需要乘以40uv,得到的单位是是uV,除以取样电阻就是电流

((float)INA3221_GetShuntVoltage(i+1))/1000/1000/0.005; //current_A

uint16_t INA3221_GetVoltage(uint8_t channel)
{
    uint32_t temp = 0;
    switch (channel)
    {
    case 1:
        temp = INA3221_ReadData(INA3221_ADDR, INA3221_CH1BUS_REG);
        break;
    case 2:
        temp = INA3221_ReadData(INA3221_ADDR, INA3221_CH2BUS_REG);
        break;
    case 3:
        temp = INA3221_ReadData(INA3221_ADDR, INA3221_CH3BUS_REG);
        break;
    default:
        break;
    }
    if (temp & 0x8000)
        temp = ~(temp - 1);
    return (uint16_t)(temp>>3)*8;
}

电压同理 1lsb 8mV,右移三位再乘8 其实就是寄存器值

(float)INA3221_GetVoltage(i+1)/1000; //voltage_V

相关推荐

  1. stm32g030f6p6读取ina3221

    2024-06-07 11:00:04       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-07 11:00:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-07 11:00:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-07 11:00:04       87 阅读
  4. Python语言-面向对象

    2024-06-07 11:00:04       96 阅读

热门阅读

  1. Emacs Verilog Mode 简单使用指南

    2024-06-07 11:00:04       28 阅读
  2. 五八 && 领岳科技面经 2024.06.06

    2024-06-07 11:00:04       19 阅读
  3. PyTorch学习(12):PyTorch的张量相乘(torch.matmul)

    2024-06-07 11:00:04       29 阅读