
基于MS8000ATE 的TMU测量AC参数 上升沿时间和下降沿时间 占空比 周期1.1. TMU功能主要测量时间相关的参数三种测量模式其中电平模式为常规模式用于测量描述实际波形电平和沿针对周期信号还可进一步提取频率、占空比信息。1.2. 原理说明采集的信号和电压值比较 得到两个bit数据对周期信号记时产生四个时间按照T1 T2 T3 T4 采集的数据类型进行分类信号的采集数据是18ibit xx yyy.. xx2位: 表示数据类型yy16位 数据类型在采样频率保持时间的计数值1.3. 函数创建流程UINT32 EdgeCounter[4] {0}; UINT32 TmuValue[2048] {0}; double ResultValue_FUN1[4][32] {0}; string instanceNameFUN1; string format; UINT32 TmuValue_GRID1[2048] {0}; UINT32 TmuValue_GRID2[2048] {0}; UINT32 TmuValue_GRID3[2048] {0}; UINT32 TmuValue_GRID4[2048] {0}; UINT32 TmuValue_GRID5[2048] {0}; UINT32 TmuValue_GRID6[2048] {0}; UINT32 TmuValue_GRID7[2048] {0}; UINT32 TmuValue_GRID8[2048] {0}; UINT32 TmuValue_GRID9[2048] {0}; UINT32 TmuValue_GRID10[2048] {0}; UINT32 TmuValue_GRID11[2048] {0}; UINT32 TmuValue_GRID12[2048] {0}; UINT32 TmuValue_SEG1[2048] {0}; UINT32 TmuValue_SEG2[2048] {0}; UINT32 TmuValue_SEG3[2048] {0}; UINT32 TmuValue_SEG4[2048] {0}; UINT32 TmuValue_SEG5[2048] {0}; UINT32 TmuValue_SEG6[2048] {0}; UINT32 TmuValue_SEG7[2048] {0}; UINT32 TmuValue_SEG8[2048] {0}; mtsHdw.Digital.TMU.Pins(RGID,SEG).EnableWrapping(false);//设置引脚a1 TMU计数满2048后覆盖之前的数据继续计数,FALSE:否 mtsHdw.Digital.TMU.Pins(RGID,SEG).SetSampleRate(Tmu400M);//设定TMU采样率为2.5ns采样一次Tmu400M。 mtsHdw.Digital.TMU.Pins(RGID,SEG).SetFilterNum(0x10);//设定滤波的采样个数7 mtsHdw.Digital.TMU.Pins(RGID,SEG).SetIgnEdgeNum(7);//开启TMU后忽略0个Edge再进行测量。 mtsHdw.Digital.TMU.Pins(RGID,SEG).SetInputMode(levelMode);//设置指定引脚LPF_OUTP的时间测量输入模式为电平模式用于测量输入波形的电平时间。 //PC启动TMU_ARM手动设置延时时间 mtsHdw.Digital.TMU.Pins(RGID,SEG).SetStart(); Delay(60,ms); mtsHdw.Digital.TMU.Pins(RGID,SEG).SetStop(); //TODO: 测量完后闭合relay mtsHdw.Utility.Pins(K_GRID,K_SEG).SetState(UtilBitState::utilBitState0); //方法返回tmu测量的数据数组。 mtsHdw.Digital.TMU.Pins(GRID1).RetTmuValue(TmuValue_GRID1, site); mtsHdw.Digital.TMU.Pins(GRID2).RetTmuValue(TmuValue_GRID2, site); mtsHdw.Digital.TMU.Pins(GRID3).RetTmuValue(TmuValue_GRID3, site); mtsHdw.Digital.TMU.Pins(GRID4).RetTmuValue(TmuValue_GRID4, site); mtsHdw.Digital.TMU.Pins(GRID5).RetTmuValue(TmuValue_GRID5, site); mtsHdw.Digital.TMU.Pins(GRID6).RetTmuValue(TmuValue_GRID6, site); mtsHdw.Digital.TMU.Pins(GRID7).RetTmuValue(TmuValue_GRID7, site); mtsHdw.Digital.TMU.Pins(GRID8).RetTmuValue(TmuValue_GRID8, site); mtsHdw.Digital.TMU.Pins(GRID9).RetTmuValue(TmuValue_GRID9, site); mtsHdw.Digital.TMU.Pins(GRID10).RetTmuValue(TmuValue_GRID10, site); mtsHdw.Digital.TMU.Pins(GRID11).RetTmuValue(TmuValue_GRID11, site); mtsHdw.Digital.TMU.Pins(GRID12).RetTmuValue(TmuValue_GRID12, site); mtsHdw.Digital.TMU.Pins(SEG1).RetTmuValue(TmuValue_SEG1, site); mtsHdw.Digital.TMU.Pins(SEG2).RetTmuValue(TmuValue_SEG2, site); mtsHdw.Digital.TMU.Pins(SEG3).RetTmuValue(TmuValue_SEG3, site); mtsHdw.Digital.TMU.Pins(SEG4).RetTmuValue(TmuValue_SEG4, site); mtsHdw.Digital.TMU.Pins(SEG5).RetTmuValue(TmuValue_SEG5, site); mtsHdw.Digital.TMU.Pins(SEG6).RetTmuValue(TmuValue_SEG6, site); mtsHdw.Digital.TMU.Pins(SEG7).RetTmuValue(TmuValue_SEG7, site); mtsHdw.Digital.TMU.Pins(SEG8).RetTmuValue(TmuValue_SEG8, site); //返回测量值判断 65536表示低电平 196607表示高电平 for(int i0; i1000; i) { if(TmuValue_GRID1[i]65536TmuValue_SEG1[i]196607TmuValue_SEG2[i]196607TmuValue_SEG3[i]196607TmuValue_SEG4[i]196607TmuValue_SEG5[i]196607TmuValue_SEG6[i]196607TmuValue_SEG7[i]196607TmuValue_SEG8[i]196607) { ResultValue_FUN1[site][0]1; ResultValue_FUN1[site][1]1; ResultValue_FUN1[site][2]1; ResultValue_FUN1[site][3]1; ResultValue_FUN1[site][4]1; ResultValue_FUN1[site][5]1; ResultValue_FUN1[site][6]1; ResultValue_FUN1[site][7]1; i1000; } else { ResultValue_FUN1[site][0]2; ResultValue_FUN1[site][1]2; ResultValue_FUN1[site][2]2; ResultValue_FUN1[site][3]2; ResultValue_FUN1[site][4]2; ResultValue_FUN1[site][5]2; ResultValue_FUN1[site][6]2; ResultValue_FUN1[site][7]2; } }