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

TMU操作接口. 更多...

枚举

enum  E_TMU_CH { TMU_CH0 = 0 , TMU_CH1 }
 TMU的通道选择 更多...
 
enum  E_TMU_PORT { TMU_PORT_PTIO = 0 , TMU_PORT_MMCX }
 TMU的输入接口选择 更多...
 
enum  E_TMU_RES { TMU_RESIS_1MR = 0 , TMU_RESIS_50R }
 阻抗选择 更多...
 
enum  E_TMU_GAIN { TMU_GAIN_G2 = 0 , TMU_GAIN_G10 }
 增益选择,主要是为了限制电压 更多...
 
enum  E_TMU_TRIG { TMU_TRIG_Falling = 0 , TMU_TRIG_Rising }
 触发方式 更多...
 
enum  E_TMU_MEAWAY { TMU_MEAWAY_T = 0 , TMU_MEAWAY_M }
 测量方法 更多...
 
enum  E_TMU_MODE {
  TMU_MODE_OFF = 0 , TMU_MODE_PERIOD , TMU_MODE_DUTY , TMU_MODE_PULSE ,
  TMU_MODE_TIME , TMU_MODE_MUX , TMU_MODE_SPIKE , TMU_MODE_MAXMINFRE ,
  TMU_MODE_TIMELY
}
 TMU测量模式 更多...
 
enum  E_TMU_SEQ { TMU_MUX_CH0S = 0 , TMU_MUX_CH1S }
 混合测量模式下,指定测量顺序 更多...
 
enum  E_TMU_CMP { TMU_CMP_START = 0 , TMU_CMP_END }
 VTL或者VTH 更多...
 
enum  E_TMU_STATE { TMU_LOW = 0 , TMU_HIGH }
 电平状态 更多...
 

函数

void TMU_Reset (void)
 TMU设置为复位状态
 
void TMU_Enable (E_TMU_CH ch)
 开启TMU通道
 
void TMU_Disable (E_TMU_CH ch)
 关闭TMU通道
 
void TMU_SetInputPort (E_TMU_PORT port)
 设置信号输入端口. 该函数内置2ms延时.
 
void TMU_ChannelConfig (E_TMU_CH ch, E_TMU_RES resis, E_TMU_GAIN gain)
 配置一个通道的阻抗和增益
 
void TMU_SetFilter (E_TMU_CH ch, uint16_t ns)
 设置触发比较器的抖动滤波时间
 
void TMU_MeasurePeriodTway (E_TMU_CH ch, E_TMU_TRIG startTrig, float startTrig_mv, uint32_t measureTime_us)
 T法测量周期的配置函数.T法是指:指定测量时间进行测量.一般用于知道周期信号持续时间的情况
 
void TMU_MeasurePeriodMway (E_TMU_CH ch, E_TMU_TRIG startTrig, float startTrig_mv, uint16_t measureCount)
 M法测量周期的配置函数. M法是指:指定测量脉冲个数进行测量.一般用于大概知道有多少个脉冲的情况.
 
void TMU_MeasureDutyTway (E_TMU_CH ch, E_TMU_TRIG startTrig, float startTrig_mv, uint32_t measureTime_us)
 T法测量占空比的配置函数.T法是指:指定测量时间进行测量.一般用于知道周期信号持续时间的情况
 
void TMU_MeasureDutyMway (E_TMU_CH ch, E_TMU_TRIG startTrig, float startTrig_mv, uint16_t measureCount)
 M法测量占空比的配置函数.M法是指:指定测量脉冲个数进行测量.一般用于大概知道有多少个脉冲的情况.
 
void TMU_MeasurePulse (E_TMU_CH ch, E_TMU_TRIG startTrig, float startTrig_mv, uint32_t measureTime_us)
 测量脉冲个数
 
void TMU_MeasureTime (E_TMU_CH ch, E_TMU_TRIG startTrig, float startTrig_mv, E_TMU_TRIG endTrig, float endTrig_mv)
 测量 startTrig 和 endTrig 之间的时间
 
void TMU_MeasureMux (E_TMU_SEQ chSequence, E_TMU_TRIG muxFirstTrig, float muxFirstTrig_mv, E_TMU_TRIG muxSecondTrig, float muxSecondTrig_mv)
 双通道混合测量测量.可用于测量相位差之类的.测得时间为: 先触发通道触发时刻 和 后触发通道触发时刻 之间的时间
 
void TMU_MeasureSpike (E_TMU_CH ch, float LTrig_mv, float HTrig_mv, uint32_t measureTime_us)
 尖峰测量模式,判断在指定电压区间是否出现过信号
 
void TMU_MeasureMaxMinFre (E_TMU_CH ch, E_TMU_TRIG startTrig, float startTrig_mv, uint16_t measureCount)
 测量一个频率不固定的信号中的最大频率端和最小频率端
 
void TMU_MeasureTimely (E_TMU_CH ch, E_TMU_TRIG stopTrig, float stopTrig_mv)
 测量从调用 TMU_TriggerMeasure 到设置的触发条件的时间
 
void TMU_MeasureDisable (E_TMU_CH ch)
 禁止通道 ch 进行测量
 
void TMU_MeasureTrigger (uint16_t timeout_ms)
 触发一次测量.使用该函数,会让调用上面函数配置为了某种测量模式的通道进行测量. 如果只想有一个通道进行测量,可以使用 TMU_MeasureDisable 禁止某个通道的测量. 测量结束之后,通道的配置参数不会发生改变,可以继续使用该函数开启触发下一次测量.
 
float TMU_GetMeasureResult (E_TMU_CH ch, uint8_t unit, uint8_t *err)
 读取测量结果.该函数会进入阻塞状态. 最大阻塞时间
 
float TMU_GetDuty (E_TMU_CH ch, uint8_t *err)
 获取测量的占空比
 
uint32_t TMU_GetPulse (E_TMU_CH ch, uint8_t *err)
 获取脉冲个数
 
uint8_t TMU_GetSpike (E_TMU_CH ch, uint8_t *err)
 获取尖峰测量模式下的尖峰状态
 
void TMU_GetMaxMinFre (E_TMU_CH ch, float *maxFre, float *minFre, uint8_t *err)
 获取一个信号的最大频率和最小频率
 
E_TMU_STATE TMU_GetLevelStatues (E_TMU_CH ch, E_TMU_CMP cmps)
 获取比较器的电压
 
E_TMU_GAIN TMU_GetGainStatues (E_TMU_CH ch)
 获取ch 当前设置的增益系数
 
void TMU_Test (void)
 

详细描述

TMU操作接口.

版本
0.1
日期
2023-08-16
作者
fyuan (20879.nosp@m.3439.nosp@m.@qq.c.nosp@m.om)
  • 第一次使用流程
    1. TMU_Enable 开启TMU通道
    2. TMU_SetInputPort 设置信号输出端口
    3. TMU_ChannelConfig 配置信号阻抗和增益
    4. TMU_MeasureXxxxxxxx 配置测量模式
    5. TMU_MeasureTrigger 触发测量
    6. TMU_GetMeasureResult 读取测量结果
  • 说明
    • 如果不改变通道的配置参数和测量模式,可以重复调用 TMU_MeasureTrigger 和 TMU_GetMeasureResult来读取测量值
    • 如果同时配置了TMU0和TMU1, 调用TMU_MeasureTrigger时会同时启动两个通道的测量.
    • 同时使用了两个通道之后, 想只用一个通道, 需要调用 TMU_MeasureDisable 禁止某个通道的测量. 否则,调用 TMU_MeasureTrigger 时会同时启动两个通道的测量. 如果有一个通道又没有信号的话,那么那个通道就会超时.但是另外一个有信号的通道任然能得到正确的值.

枚举类型说明

◆ E_TMU_CH

enum E_TMU_CH

TMU的通道选择

枚举值
TMU_CH0 

TMU通道0

TMU_CH1 

TMU通道1

◆ E_TMU_PORT

enum E_TMU_PORT

TMU的输入接口选择

枚举值
TMU_PORT_PTIO 

使用TIO端口中的TMU通道

TMU_PORT_MMCX 

使用MMCX端口

◆ E_TMU_RES

enum E_TMU_RES

阻抗选择

枚举值
TMU_RESIS_1MR 

1MR

TMU_RESIS_50R 

50R

◆ E_TMU_GAIN

enum E_TMU_GAIN

增益选择,主要是为了限制电压

枚举值
TMU_GAIN_G2 

X2, 使用该设置,输入信号电压范围为: -5V ~ +5V

TMU_GAIN_G10 

X10, 使用该设置,输入信号电压范围为: -25V ~ +25V

◆ E_TMU_TRIG

enum E_TMU_TRIG

触发方式

枚举值
TMU_TRIG_Falling 

上升沿触发

TMU_TRIG_Rising 

下降沿触发

◆ E_TMU_MEAWAY

测量方法

枚举值
TMU_MEAWAY_T 

T法测量:测量指定时间内有多少个周期,返回结果取总时间/周期数

TMU_MEAWAY_M 

M法测量:测量M周期的总时间,返回结果取总时间/周期数

◆ E_TMU_MODE

enum E_TMU_MODE

TMU测量模式

枚举值
TMU_MODE_OFF 

关闭测量

TMU_MODE_PERIOD 

周期测量,返回周期值

TMU_MODE_DUTY 

占空比测量,返回高电平时间/(高电平+低电平时间)

TMU_MODE_PULSE 

脉宽测量,返回指定时间内的脉冲个数

TMU_MODE_TIME 

时间测量,返回开始触发到结束触发之间的时间

TMU_MODE_MUX 

混合测量,返回先触发通道到后触发通道之间的时间

TMU_MODE_SPIKE 

尖峰测量,返回指定的测量时间内, 是否出现尖峰

TMU_MODE_MAXMINFRE 

最大最小频率测量,返回指定的测量时间内, 最大频率和最小频率

TMU_MODE_TIMELY 

立即测量,返回从调用TMU_MeasureTrigger到出现配置的触发条件的时间

◆ E_TMU_SEQ

enum E_TMU_SEQ

混合测量模式下,指定测量顺序

枚举值
TMU_MUX_CH0S 

TMU0先触发

TMU_MUX_CH1S 

TMU1先触发

◆ E_TMU_CMP

enum E_TMU_CMP

VTL或者VTH

枚举值
TMU_CMP_START 

开始比较电平(VTL)

TMU_CMP_END 

结束比较电平(VTH)

◆ E_TMU_STATE

电平状态

枚举值
TMU_LOW 

低电平

TMU_HIGH 

高电平

函数说明

◆ TMU_Reset()

void TMU_Reset ( void  )

TMU设置为复位状态

  • 使能:关闭(TMU_Disable)
  • 通道:两个TMU通道都会复位
  • 输出端口: TMU_PORT_MMCX
  • 阻抗: TMU_RESIS_1MR
  • 增益: TMU_GAIN_G10

◆ TMU_Enable()

void TMU_Enable ( E_TMU_CH  ch)

开启TMU通道

参数
ch要开启的通道 E_TMU_CH
示例
example_tmu.c.

◆ TMU_Disable()

void TMU_Disable ( E_TMU_CH  ch)

关闭TMU通道

参数
ch要关闭的通道 E_TMU_CH
示例
example_tmu.c.

◆ TMU_SetInputPort()

void TMU_SetInputPort ( E_TMU_PORT  port)

设置信号输入端口. 该函数内置2ms延时.

参数
port详见 E_TMU_PORT
示例
example_tmu.c.

◆ TMU_ChannelConfig()

void TMU_ChannelConfig ( E_TMU_CH  ch,
E_TMU_RES  resis,
E_TMU_GAIN  gain 
)

配置一个通道的阻抗和增益

参数
ch要配置的通道 E_TMU_CH
resis阻抗参数 E_TMU_RES
gain增益参数 E_TMU_GAIN
示例
example_tmu.c.

◆ TMU_SetFilter()

void TMU_SetFilter ( E_TMU_CH  ch,
uint16_t  ns 
)

设置触发比较器的抖动滤波时间

参数
chE_TMU_CH
ns滤波时间,单位ns,
  • 可设置范围 20~2550

◆ TMU_MeasurePeriodTway()

void TMU_MeasurePeriodTway ( E_TMU_CH  ch,
E_TMU_TRIG  startTrig,
float  startTrig_mv,
uint32_t  measureTime_us 
)

T法测量周期的配置函数.T法是指:指定测量时间进行测量.一般用于知道周期信号持续时间的情况

参数
ch要进行测量的通道 E_TMU_CH
startTrig开始触发的方式 E_TMU_TRIG
startTrig_mv开始触发的电平,单位mv.
measureTime_us测量持续时间.最后的测量结果 = measureTime_us / 测得的周期数.
  • 单位 us
  • measureTime_us 范围: 0 <= measureTime_us <= 2^25

◆ TMU_MeasurePeriodMway()

void TMU_MeasurePeriodMway ( E_TMU_CH  ch,
E_TMU_TRIG  startTrig,
float  startTrig_mv,
uint16_t  measureCount 
)

M法测量周期的配置函数. M法是指:指定测量脉冲个数进行测量.一般用于大概知道有多少个脉冲的情况.

参数
ch要进行测量的通道 E_TMU_CH
startTrig开始触发的方式 E_TMU_TRIG
startTrig_mv开始触发的电平,单位mv.
measureCount测量周期数.最后的测量结果 = 总耗费时间 / measureCount
示例
example_tmu.c.

◆ TMU_MeasureDutyTway()

void TMU_MeasureDutyTway ( E_TMU_CH  ch,
E_TMU_TRIG  startTrig,
float  startTrig_mv,
uint32_t  measureTime_us 
)

T法测量占空比的配置函数.T法是指:指定测量时间进行测量.一般用于知道周期信号持续时间的情况

参数
ch要进行测量的通道 E_TMU_CH
startTrig开始触发的方式 E_TMU_TRIG
startTrig_mv开始触发的电平,单位mv.
measureTime_us测量持续时间
  • 单位 us
  • measureTime_us 范围: 0 <= measureTime_us <= 2^25

◆ TMU_MeasureDutyMway()

void TMU_MeasureDutyMway ( E_TMU_CH  ch,
E_TMU_TRIG  startTrig,
float  startTrig_mv,
uint16_t  measureCount 
)

M法测量占空比的配置函数.M法是指:指定测量脉冲个数进行测量.一般用于大概知道有多少个脉冲的情况.

参数
ch要进行测量的通道 E_TMU_CH
startTrig开始触发的方式 E_TMU_TRIG
startTrig_mv开始触发的电平,单位mv.
measureCount测量持续周期数

◆ TMU_MeasurePulse()

void TMU_MeasurePulse ( E_TMU_CH  ch,
E_TMU_TRIG  startTrig,
float  startTrig_mv,
uint32_t  measureTime_us 
)

测量脉冲个数

参数
ch要进行测量的通道 E_TMU_CH
startTrig开始触发的方式 E_TMU_TRIG
startTrig_mv开始触发的电平,单位mv.
measureTime_ms测量持续时间
  • 单位 ms
  • measureTime_ms 范围: 0 <= measureTime_ms <= 2^25

◆ TMU_MeasureTime()

void TMU_MeasureTime ( E_TMU_CH  ch,
E_TMU_TRIG  startTrig,
float  startTrig_mv,
E_TMU_TRIG  endTrig,
float  endTrig_mv 
)

测量 startTrig 和 endTrig 之间的时间

参数
ch要进行测量的通道 E_TMU_CH
startTrig开始触发的方式 E_TMU_TRIG
startTrig_mv开始触发的电平,单位mv.
endTrig结束触发的方式 E_TMU_TRIG
endTrig_mv开始触发的电平,单位mv.

◆ TMU_MeasureMux()

void TMU_MeasureMux ( E_TMU_SEQ  chSequence,
E_TMU_TRIG  muxFirstTrig,
float  muxFirstTrig_mv,
E_TMU_TRIG  muxSecondTrig,
float  muxSecondTrig_mv 
)

双通道混合测量测量.可用于测量相位差之类的.测得时间为: 先触发通道触发时刻 和 后触发通道触发时刻 之间的时间

参数
chSequence指定两个通道触发的先后顺序. E_TMU_CH
muxStartTrig先触发通道的触发方式
muxStartTrig_mv先触发通道的触发电压值, 请注意,**不是**固定为TMU0的触发电压值
muxEndTrig后触发通道的触发方式
muxEndTrig_mv后触发通道的触发电压值

◆ TMU_MeasureSpike()

void TMU_MeasureSpike ( E_TMU_CH  ch,
float  LTrig_mv,
float  HTrig_mv,
uint32_t  measureTime_us 
)

尖峰测量模式,判断在指定电压区间是否出现过信号

参数
ch通道号
LTrig_mv低阈值
HTrig_mv高阈值. 如果LTrig_mv > HTrig_mv 将会自动交换两者的值
measureTime_us指定测量时间

◆ TMU_MeasureMaxMinFre()

void TMU_MeasureMaxMinFre ( E_TMU_CH  ch,
E_TMU_TRIG  startTrig,
float  startTrig_mv,
uint16_t  measureCount 
)

测量一个频率不固定的信号中的最大频率端和最小频率端

参数
ch
startTrig开始触发的方式 E_TMU_TRIG
startTrig_mv开始触发的电平,单位mv.
measureCount测量的周期数,比如一个信号最大周期10, 应该设置为 不大于 最大周期-1

◆ TMU_MeasureTimely()

void TMU_MeasureTimely ( E_TMU_CH  ch,
E_TMU_TRIG  stopTrig,
float  stopTrig_mv 
)

测量从调用 TMU_TriggerMeasure 到设置的触发条件的时间

参数
ch
stopTrig结束测量的触发方式
stopTrig_mv结束测量的触发电平

◆ TMU_MeasureDisable()

void TMU_MeasureDisable ( E_TMU_CH  ch)

禁止通道 ch 进行测量

参数
ch要禁止的通道 E_TMU_CH

◆ TMU_MeasureTrigger()

void TMU_MeasureTrigger ( uint16_t  timeout_ms)

触发一次测量.使用该函数,会让调用上面函数配置为了某种测量模式的通道进行测量. 如果只想有一个通道进行测量,可以使用 TMU_MeasureDisable 禁止某个通道的测量. 测量结束之后,通道的配置参数不会发生改变,可以继续使用该函数开启触发下一次测量.

参数
timeout_ms进行测量的超时时间.这里只是指定超时时间,该函数不会阻塞. 在调用 TMU_GetMeasureResult 读取测试结果时.会进入阻塞状态.直到读取测量通道返回结果或者超过该超时时间.
示例
example_tmu.c.

◆ TMU_GetMeasureResult()

float TMU_GetMeasureResult ( E_TMU_CH  ch,
uint8_t  unit,
uint8_t *  err 
)

读取测量结果.该函数会进入阻塞状态. 最大阻塞时间

  • 如果fpga正常, 但是超时了,大概会比设定的 TMU_MeasureDisable 设置的timeout多1~2ms
  • 如果fpga异常(比如死机,代码错误之类), 会比 TMU_MeasureDisable 设置的timeout多10ms 一般不会等待到最大阻塞时间.因为计时时机是从调用 TMU_MeasureDisable 开始的
    参数
    ch要读取结果的通道
    unit单位 TMU_MODE_DUTY和TMU_MODE_PULSE模式下单位无效

TUNIT_NS = 纳秒(ns)

  • TUNIT_US = 微秒(us)
  • TUNIT_MS = 毫秒(ms)
  • TUNIT_S = 秒(s)
    参数
    err返回错误标志
  • 0: 正常
  • 1: 超时
    返回
    float 返回的测量结果
  • 周期测量(TMU_MODE_PERIOD,T法/M法): 周期时间
  • 占空比测量(TMU_MODE_DUTY): 高电平时间/总周期时间 等同于 TMU_GetDuty()
  • 脉冲测量(TMU_MODE_PULSE): 指定时间内的脉冲个数 等同于 TMU_GetPulse()
  • 时间测量(TMU_MODE_TIME): 开始触发到结束触发之间的时间
  • 耦合测量(TMU_MODE_MUX): 先触发通道到后触发通道之间的时间.读取结果时,配置的哪个通道在前,ch就使用哪个通道
  • 即时测量(TMU_MODE_TIMELY): 调用 TMU_MeasureTrigger 到设置的触发条件的时间
示例
example_tmu.c.

◆ TMU_GetDuty()

float TMU_GetDuty ( E_TMU_CH  ch,
uint8_t *  err 
)

获取测量的占空比

参数
ch
返回
float 高电平时间/总周期时间

◆ TMU_GetPulse()

uint32_t TMU_GetPulse ( E_TMU_CH  ch,
uint8_t *  err 
)

获取脉冲个数

参数
ch
返回
uint32_t 指定时间内的脉冲个数

◆ TMU_GetSpike()

uint8_t TMU_GetSpike ( E_TMU_CH  ch,
uint8_t *  err 
)

获取尖峰测量模式下的尖峰状态

参数
ch
返回
uint8_t
  • 0: 无尖峰
  • 1: LTrig_mv <尖峰最大值 <HTrig_mv
  • 2: 尖峰最大值 > HTrig_mv

◆ TMU_GetMaxMinFre()

void TMU_GetMaxMinFre ( E_TMU_CH  ch,
float *  maxFre,
float *  minFre,
uint8_t *  err 
)

获取一个信号的最大频率和最小频率

参数
ch
maxFre(out)返回最大频率值
minFre(out)返回最小频率值

◆ TMU_GetLevelStatues()

E_TMU_STATE TMU_GetLevelStatues ( E_TMU_CH  ch,
E_TMU_CMP  cmps 
)

获取比较器的电压

参数
ch要获取的通道
cmps指定要获取的比较器.每个通道有两个比较器 E_TMU_CMP
返回
E_TMU_STATE 电平值 E_TMU_STATE

◆ TMU_GetGainStatues()

E_TMU_GAIN TMU_GetGainStatues ( E_TMU_CH  ch)

获取ch 当前设置的增益系数

参数
ch选择通道
返回
E_TMU_GAIN 增益系数 E_TMU_GAIN