第三代测试机编程手册  1.0
载入中...
搜索中...
未找到
PMUModule.h 文件参考

PMU控制接口 更多...

枚举

enum  PMU_FIXREAD { PMU_FIXREAD_NORMAL = 0 , PMU_FIXREAD_BUSY , PMU_FIXREAD_TIMEOUT }
 

函数

void PMU_Init (void)
 开启模拟电源之后,重复复位50次pmu开关,确保为复位状态
 
void PMU_Reset (void)
 所有PMU通道复位到默认状态
 
void PMU_SetOutputPort (uint8_t outport)
 设置PMU输出端口. 内置500us延时
 
void PMU_Disable (void)
 设置PMU输出引脚浮空, 并且将PMU的输出电压设置为0V
 
void PMU_SetFloat (void)
 设置PMU的输出引脚浮空, 会进行下面的自动操作!!!!
 
void PMU_SetOut (uint8_t mode, float set_mv_ua, uint8_t rangeV, uint8_t rangeI)
 PMU输出.使用该函数自动 Enable PMU
 
void PMU_SetClamp (float clamplRatio, float clamphRatio)
 设置钳位. 该函数设置比例之后,根据输出模式和档位自动设置钳位值.
 
void PMU_OnlyVoltmeter (void)
 使用该函数之后, 只有PMU的电压表能够读取到正确值, 电流表或者DPS通道几将会读取不到正确值. 但是使用该函数可以让读取到的数据值较为稳定
 
void PMU_OnlyAmmeter (void)
 使用该函数之后, 只有PMU的电流表能够读取到正确值, 电压表或者DPS通道几将会读取不到正确值. 但是使用该函数可以让读取到的数据值较为稳定
 
void PMU_NormalMeter (void)
 使所有表的数据更新恢复正常. DPS所有通道和PMU的电流电压都能够正确读取
 
float PMU_ReadVoltmeter (uint8_t unit)
 读取测量电压
 
float PMU_ReadVoltmeterStatic (uint8_t unit)
 精度更高的方式读取PMU的电压值, 内置750us延时
 
float PMU_ReadVoltmeterFixed (uint16_t diffVal, uint16_t timeout_ms, uint8_t unit, uint8_t *err)
 固定通道读取电压表,能得到更高精度的测量值. 连续读取一系列的值, 如果连续读取4次的值之间的差值都小于diffVal,则认为读取成功.
 
float PMU_ReadAmmeter (uint8_t unit)
 读取测量电流
 
float PMU_ReadAmmeterStatic (uint8_t unit)
 精度更高的方式读取PMU的电流值, 内置750us延时
 
float PMU_ReadAmmeterFixed (uint16_t diffVal, uint16_t timeout_ms, uint8_t unit, uint8_t *err)
 固定通道读取电流表,能得到更高精度的测量值. 连续读取一系列的值, 如果连续读取4次的值之间的差值都小于diffVal,则认为读取成功.
 
float PMU_ReadTemperture (void)
 读取pmu的adc芯片的温度
 
float PMU_RecordReadVoltmeter (uint8_t ch, uint8_t unit)
 录波调用的电压测量函数
 
float PMU_RecordReadAmmeter (uint8_t ch, uint8_t unit)
 录波调用的电流测量函数
 

详细描述

PMU控制接口

版本
0.1
日期
2023-08-16
作者
fyuan (20879.nosp@m.3439.nosp@m.@qq.c.nosp@m.om)

枚举类型说明

◆ PMU_FIXREAD

枚举值
PMU_FIXREAD_NORMAL 

正常

PMU_FIXREAD_BUSY 

处于忙状态, 本次读取不执行

PMU_FIXREAD_TIMEOUT 

超时

函数说明

◆ PMU_Reset()

void PMU_Reset ( void  )

所有PMU通道复位到默认状态

  1. 模式为FV模式
  2. 输出端口为外部端口
  3. 输出电压为2.5V
  4. 输出电流为20mA
  1. 通路断开,输出引脚浮空

◆ PMU_SetOutputPort()

void PMU_SetOutputPort ( uint8_t  outport)

设置PMU输出端口. 内置500us延时

参数
outport
  • PMU_PORT_INT: PMU连接到 TIO_PIN0 ~ TIO_PIN31 通道的其中一个
  • PMU_PORT_EXT: PMU使用TIO端口中的PMU通道,而非TIO_PIN0 ~ TIO_PIN31
示例
example_pmu.c , 以及 example_tio.c.

◆ PMU_Disable()

void PMU_Disable ( void  )

设置PMU输出引脚浮空, 并且将PMU的输出电压设置为0V

  1. 会先使用 PMU_SetFloat 将PMU输出引脚浮空
  2. 会将PMU输出自动设置为0v
示例
example_pmu.c.

◆ PMU_SetFloat()

void PMU_SetFloat ( void  )

设置PMU的输出引脚浮空, 会进行下面的自动操作!!!!

  1. 会将PMU切换到内部输出通道 使用 PMU_SetOutputPort 完成, 因此有500us延时
  2. 会关闭所有TIO引脚的模拟开关, 下一次要使用TIO的模拟功能的时候,需要重新使用 TIO_OnlyToPMU 函数使能
注解
特别注意, 该函数会自动将PMU切换到内部端口.并且端口所有TIO的模拟功能. TIO_DisableToPMU
示例
example_pmu.c.

◆ PMU_SetOut()

void PMU_SetOut ( uint8_t  mode,
float  set_mv_ua,
uint8_t  rangeV,
uint8_t  rangeI 
)

PMU输出.使用该函数自动 Enable PMU

参数
mode工作模式
  • PMU_MODE_FVCI: 输出电压,钳电流
  • PMU_MODE_FICV: 输出电流,钳电压
set_mv_ua
  • FVCI模式下: 设置电压输出值,单位 mv ,范围: 由档位确定,比如5v档位,允许输入值为 -5000mv~5000mv
  • FICV模式下: 设置电流输出值,单位 ua ,范围: 由档位确定,比如10ma档位,允许输入值为 -10000ua~10000ua
rangeV
  • PMU_RNGV_5V = 5v档
  • PMU_RNGV_10V = 10v档
rangeI
  • PMU_RNGI_20UA = 20ua档
  • PMU_RNGI_200UA = 200ua档
  • PMU_RNGI_2MA = 2ma档
  • PMU_RNGI_20MA = 20ma档
  • PMU_RNGI_200MA = 200ma档
示例
example_pmu.c , 以及 example_tio.c.

◆ PMU_SetClamp()

void PMU_SetClamp ( float  clamplRatio,
float  clamphRatio 
)

设置钳位. 该函数设置比例之后,根据输出模式和档位自动设置钳位值.

参数
clamplRatio下钳位比例 范围 -1~1
clamphRatio上钳位比例 范围 -1~1
  • FVCI模式,计算方式
    • 下钳位 = PMU_SetOut 中的 rangeI * clamplRatio
    • 上钳位 = PMU_SetOut 中的 rangeI * clamphRatio
  • FICV模式,计算方式
    • 下钳位 = PMU_SetOut 中的 rangeV * clamplRatio
    • 上钳位 = PMU_SetOut 中的 rangeV * clamphRatio
示例
example_pmu.c , 以及 example_tio.c.

◆ PMU_ReadVoltmeter()

float PMU_ReadVoltmeter ( uint8_t  unit)

读取测量电压

参数
unit
  • VUNIT_UV = uv
  • VUNIT_MV = mv
  • VUNIT_V = v
返回
float 结果
示例
example_pmu.c.

◆ PMU_ReadVoltmeterStatic()

float PMU_ReadVoltmeterStatic ( uint8_t  unit)

精度更高的方式读取PMU的电压值, 内置750us延时

参数
unit
  • VUNIT_UV = uv
  • VUNIT_MV = mv
  • VUNIT_V = v
返回
float 电压值
示例
example_pmu.c.

◆ PMU_ReadVoltmeterFixed()

float PMU_ReadVoltmeterFixed ( uint16_t  diffVal,
uint16_t  timeout_ms,
uint8_t  unit,
uint8_t *  err 
)

固定通道读取电压表,能得到更高精度的测量值. 连续读取一系列的值, 如果连续读取4次的值之间的差值都小于diffVal,则认为读取成功.

参数
diffVal允许的电压稳定后的adc采集跳动值.
  • 该值最大范围 2~65535; 正常情况下设置为 2~10; 一般设置为3即可;
  • 该值对应的电气意义为: 电压值 = 电压档位量程 / 65535 * diffVal;
timeout_ms超时时间
unit单位码
err返回错误标志 PMU_FIXREAD
返回
float 结果

◆ PMU_ReadAmmeter()

float PMU_ReadAmmeter ( uint8_t  unit)

读取测量电流

参数
unit
  • IUNIT_NA = na
  • IUNIT_UA = ua
  • IUNIT_MA = ma
  • IUNIT_A = a
返回
float 结果
示例
example_pmu.c.

◆ PMU_ReadAmmeterStatic()

float PMU_ReadAmmeterStatic ( uint8_t  unit)

精度更高的方式读取PMU的电流值, 内置750us延时

参数
unit
  • IUNIT_NA = na
  • IUNIT_UA = ua
  • IUNIT_MA = ma
  • IUNIT_A = a
返回
float 电流值
示例
example_pmu.c.

◆ PMU_ReadAmmeterFixed()

float PMU_ReadAmmeterFixed ( uint16_t  diffVal,
uint16_t  timeout_ms,
uint8_t  unit,
uint8_t *  err 
)

固定通道读取电流表,能得到更高精度的测量值. 连续读取一系列的值, 如果连续读取4次的值之间的差值都小于diffVal,则认为读取成功.

参数
diffVal允许的电流稳定后的adc采集跳动值.
  • 该值最大范围 2~65535; 正常情况下设置为 2~10; 一般设置为3即可;
  • 该值对应的电气意义为: 电流值 = 电流档位量程 / 65535 * diffVal;
timeout_ms超时时间,单位ms,一般来说电流稳定时间为1~3ms,所以可以设置为5ms
unit单位码
err返回错误标志 PMU_FIXREAD
返回
float 结果

◆ PMU_ReadTemperture()

float PMU_ReadTemperture ( void  )

读取pmu的adc芯片的温度

返回
float 温度值 单位:摄氏度 (°C)

◆ PMU_RecordReadVoltmeter()

float PMU_RecordReadVoltmeter ( uint8_t  ch,
uint8_t  unit 
)

录波调用的电压测量函数

参数
ch占位变量,无意义
unitPMU_ReadVoltmeter 中的一样
返回
float 结果

◆ PMU_RecordReadAmmeter()

float PMU_RecordReadAmmeter ( uint8_t  ch,
uint8_t  unit 
)

录波调用的电流测量函数

参数
ch占位变量,无意义
unitPMU_ReadAmmeter 中的一样
返回
float 结果