测试工装数据采集卡(TFC)
TFC(Test Fixture Coreboard,测试工装核心板)是我今年主动提出、自己担任产品经理、硬件开发、软件开发的一个内部项目。前两个月为了这个项目天天在公司加班到凌晨两三点。谨此通过这篇文章给这个产品画上一个圆满的句号。
导航目录
1. 项目背景
之前,公司产线测试中存在诸多问题:
- 测试架接线方式复杂,工厂人员维护困难;
- 数据采集卡、数控电源相对比较昂贵,无法确保每个项目每个测试架专用。
- 多个测试架共用相同的一个数据采集卡、数控电源、电脑,每次生产任务都需要临时拆装测试架平台;
- 别情况下数据采集卡通道数无法满足测试要求
TFC项目针对这些问题而诞生,一共包含三块核心板卡:“DAQ卡“、”数控电源卡“、”UI卡“。三个核心板卡分别代替原有的NI数据采集卡、数控电源、电脑。三个核心板卡都会通过金手指的方式插到测试架底板的插槽中,变为测试架内置的模块,不再外置,解决了接线方式复杂的问题。
1. 将常用的AI、DO功能直接集成在测试架的核心板“DAQ卡”上,大概面积7cmx10cm。代替原有的全套NI采集卡。核心板“DAQ卡”通过金手指插到测试架底板的插槽上。
2. “DAQ卡”总成本控制在100左右,比一套几万的采集卡便宜不少。因此“DAQ卡”不再多个项目共用,只有在测试架报废时才拆下来供其他项目使用。
3. 设计一块数控电源的板卡,大概面积7cmx12cm。用来代替目前仍然多个设备共用的IT6722A电源,彻底解决一台设备需要不同项目共用带来的产线拆装问题,以及测试架底板对外引线过多的问题。
4. 设计一块UI卡,大概面积7cmx8cm,上面有一个接屏的FPC,可以推最大800×480的显示屏。显示屏带触摸。UI卡主要用来代替电脑,处理一些比较简单的板子的测试。
5. DAQ卡、数控电源卡、UI卡这三个板卡优先级依次降低。三种板卡在底板上用或者不用:
a) 同时使用DAQ卡、数控电源卡、UI卡:测试系统无需电脑。整个测试架只需要外接48V适配器供电即可工作。
b) 同时使用DAQ卡、数控电源卡:测试系统需要连电脑才能测试。测试软件跑在电脑上。整个测试架需要外接48V适配器供电,而且用USB线跟电脑相连
c) 只使用DAQ卡:测试系统连电脑,同时要外接台式数控电源。整个测试架需要接:48V电源、USB线连电脑、串口线连数控电源。
2. 系统设计
3. 产品实物
TFC-DAQ:
TFC-PWR:
4. 跟市面上已有产品的对比
模块 |
具体参数 |
NI USB-6211 |
USB3300 |
USB1252 |
USB-6008 |
TFC-DAQ |
产品定位 |
– |
高端 |
中端 |
低端 |
低端 |
产测工具 |
模拟输入 |
通道数 |
16 |
16 |
16 |
8 |
23 |
采样率 |
250k |
最高1M |
最高500k |
10k |
最高2300 |
|
分辨率 |
16bit |
16bit |
12bit |
12bit |
12bit |
|
输入电压范围 |
-10~10V |
-10~10V |
0-10V -5~5V |
-10~10V |
0-50V |
|
绝对耐压 |
– |
+/-12V |
+/-15V |
– |
-200V~200V |
|
模拟输出 |
通道数 |
2 |
4 |
0 |
2 |
4 |
采样率 |
250k |
100k |
NA |
150 |
1k |
|
分辨率 |
16bit |
16bit |
NA |
12bit |
12bit |
|
电压范围 |
-10~10V |
-10~10V |
NA |
0-5V |
0-30V |
|
输出驱动能力 |
2mA |
10mA |
NA |
5mA |
10mA |
|
数字输入 |
通道数 |
4 |
4 |
0 |
复用12 |
0 |
输入电压范围 |
0-5.25V |
0-5V |
NA |
0-5V |
NA |
|
数字输出 |
通道数 |
4 |
4 |
16 |
复用12 |
24+2 |
输出电流 |
16mA |
– |
– |
8.5mA |
24x75mA/ch +2x1A/ch |
|
PWM支持 |
– |
– |
– |
– |
支持 |
|
整机 |
供电方式 |
5V |
5V |
5V |
5V |
48V |
隔离方式 |
无隔离 |
无隔离 |
无隔离 |
无隔离 |
无隔离 |
|
通信接口 |
USB |
USB |
USB |
USB |
金手指 |
|
整机形态 |
独立设备 |
独立设备 |
独立设备 |
独立设备 |
嵌入式板卡 |
|
信号连接器 |
接线端子 |
接线端子 |
接线端子 |
接线端子 |
金手指 |
|
售价/成本 |
12000/售价 |
3000/售价 |
1000/售价 |
1000/售价 |
98/成本 |
5. 功能参数
5.1 DAQ卡
DAQ卡主要满足数据输入输入的功能。带有以下功能:
- AI:一共23路。其中15路低压采集(0-6V),8路高压测量(0-50V)。
- AO:一共4路。1ksps的输出速率,最高产生500Hz的波形。(需要产生更高速的车速信号可使用高速DO)
- DI:无。一般DI主要目的是用来采集高频信号的频率,正常的DI需求都可以用AI来满足。
- DO:一共26路。其中24路低速小电流(20kHz/75mA),2路高速大电流(1MHz/1A,无保护)。
此外DAQ卡上还会集成2路CAN、1路UART、用于测试架交互的4个按键、1个蜂鸣器以及1个LED指示灯。
关键技术指标:
分类 |
参数 |
指标 |
AI |
通道数 |
23 |
输入电压范围 |
低压检测:0-6V 高压检测:0-50V |
|
输入耐压范围 |
-200V~+200V |
|
位数 |
12位 |
|
精度 |
低压检测:+/-5mV 高压检测:+/-50mV |
|
采集速率 |
默认460sps 最高2300sps |
|
输入阻抗 |
>100kOhm |
|
AO |
通道数 |
4 |
输出电压范围 |
范围可调,最高0-30V |
|
输出电流大小 |
最大10mA |
|
位数 |
12位 |
|
输出信号频率 |
最高500Hz |
|
输出信号采样率 |
1ksps |
|
DO |
通道数 |
26路,24路低速小电流,2路高速大电流 |
输出电压 |
12V/24V(硬件配置) |
|
输出电流 |
低速小电流:最大75mA/ch,限流值可调,可输出可调频率PWM 高速大电流:最大1A/ch,限流值不可调 |
|
输出速度 |
低速小电流:最大20kHz 高速大电流:最大1MHz |
|
保护特性 |
低速小电流:输出限流,过热保护 高速大电流:无保护 |
5.2 PWR卡
数控电源卡主要用来产生板卡供电所需要的直流电源。直流电源1路,最高输出电压45V,最大输出电流2A。可限压、限流,有短路保护、过热保护。可通过串口读取实时输出电压与实时输出电流,以及电源当前状态(CV/CC/FAULT)。
关键技术指标:
参数 |
指标 |
通道数 |
2路 |
电源类型 |
开关电源 |
输出电压范围 |
0-45V,限压值数控可调 |
输出电流范围 |
0-5A,限流值数控可调 |
输出功率范围 |
50W/ch |
输出电压精度 |
+/-10mV |
输出电流精度 |
N/A |
回读电压精度 |
+/-50mV |
回读电流精度 |
N/A |
保护特性 |
输出限压、输出限流、短路保护、过热保护 |
5.3 UI卡
UI卡主要用来进行用户的交互。板卡上带有两个FPC,一个用来接最大800×480的显示屏,另外一个用来接电容式触摸面板。可以通过串口发送指令给DAQ卡与数控电源卡。
关键技术指标:
参数 |
指标 |
驱屏IC |
RA8875 |
屏幕大小 |
7寸/8寸兼容 |
驱屏分辨率 |
最大800×480 |
帧率 |
>10帧 |
屏接口类型 |
DVP |
背光功率 |
最大2W |
Vcon |
支持 |
触摸屏 |
电容式 |
手势支持 |
单击、双击、滑动 |
6. 软件功能参数
6.1 关键技术指标
参数 |
指标 |
通信接口 |
UART/BR115200 |
通信格式 |
JSON |
最长通信帧长度 |
2kB |
通信协议逻辑 |
应答式+事件中断 |
命令响应时间 |
最短50ms,最长200ms |
开机自检 |
支持 |
GUID |
支持 |
串口透传 |
支持 |
读写板载存储器 |
支持 |
AI/DO/CAN/UART/Key并发访问 |
支持 |
CAN/UART波特率 |
支持动态配置 |
CPU负载率访问 |
支持 |
CAN过滤器 |
支持掩码模式,支持指定ID模式,支持扩展帧 |
6.2 宏命令
参数 |
指标 |
宏个数 |
最大15个 |
宏命令长度 |
最大4kB |
宏命令与外部命令并发访问 |
支持 |
7. 电气、环境适应性及结构参数
7.1 电气参数
额定电压 |
46-50V DC |
额定功率 |
2W空载 |
通信方式 |
UART(3.3V,BR115200) |
7.2 环境适应性参数
工作温度 |
0~50℃ |
工作湿度 |
10~90%RH |
7.3 产品结构参数
DAQ卡尺寸 |
67mm x 55mm x 14mm |
数控电源卡 |
67mm x 70mm x 34.5mm |
8. 最终产品成品外观
下面看到的这个大大的底板,只是为了把DUT上的信号引到TFC上,这样测试架底板设计就非常简单了。
9. 硬件设计指南(缩减版)
9.1 AI-模拟电压采集
通道 |
通道数量 |
功能 |
输入范围 |
耐压 |
理论精度 |
输入阻抗 |
响应时间 |
悬空电平 |
备注 |
Ch0-7 |
8路 |
高压采集 |
0-50V |
236V |
13mV |
1.5M |
1秒 |
0mV |
|
Ch8-22 |
15路 |
低压采集 |
0-6V |
50V |
1.7mV |
110k |
0.2秒 |
0mV |
9.2 DO-数字信号输出
通道 |
通道数量 |
功能 |
PWM频率 |
PWM占空比 |
限流设置 |
最大电流 |
输出电压 |
默认输出 |
备注 |
CH0-11 |
12 |
普通输出 |
组内共用相同频率,200-20kHz |
1%-99% |
1-75mA |
75mA |
12V |
0V |
|
CH12-23 |
12 |
普通输出 |
组内共用相同频率,200-20kHz |
1%-99% |
1-75mA |
75mA |
12V |
0V |
|
CH24 |
1 |
大电流输出 |
不支持 |
不支持 |
无保护 |
1A |
12V |
0V |
|
CH25 |
1 |
大电流/高速输出 |
单独设置,1-1MHz |
50% |
无保护 |
1A |
12V |
0V |
9.3 AO-模拟电压生成
通道 |
通道数量 |
功能 |
采样率 |
理论精度 |
频率范围 |
电压范围 |
直流输出 |
相位控制 |
波形 |
波表长度 |
默认输出 |
CH0-3 |
4 |
AO输出 |
1kSPS |
12bit 9mV |
0.0001-500Hz |
0-30V |
支持 |
支持 |
4路完全独立设置 |
1-200个/通道 |
0V |
9.4 CAN
通道 |
通道数量 |
功能 |
标准帧/扩展帧 |
数据帧/远程帧 |
数据长度 |
打包定时发送报文数量 |
打包定时发送报文周期 |
过滤器模式 |
过滤器数量 |
波特率 |
CH1-2 |
2 |
CAN收发 |
支持 |
支持 |
0-8 |
最大19个 |
最小10ms |
指定ID 某类ID |
指定ID:2个 某类ID:1个 |
10k-1000k |
9.5 内部串口
UART1 |
UART2 |
UART3 |
UART4 |
UART5 |
|
功能 |
电源控制 |
TPS929120控制 |
主接口 |
调试串口 |
TPS929120控制 |
工作模式 |
二进制串口 |
二进制串口 |
文本串口 |
文本串口 |
二进制串口 |
连接设备 |
TFC-PWR |
DO-CH12~23 |
PC |
Debug |
DO-CH0~11 |
波特率 |
115200 |
115200 |
115200 |
115200 |
115200 |
9.6 宏命令
宏指令使得TFC可以在没有上位机的时候仍然能执行某些简单的任务,或用来执行简单的定制化初始化代码。
录制
TFC允许预先录制15个宏永久存储在Flash中。
Key3-Key0分别代表MSB-LSB,按下则对应位为1,没按为0,表征1-15一共15个宏。当TFC启动时会检测按键状态,若按键被按下则执行相应的宏。
发送开始宏录制功能后,到宏录制终止之前,所发送的所有指令都将被保存在指定的区域。
宏录制时,相应的宏命令依然会被TFC执行。在执行后会发出一声短暂的哗音,提醒当前处于宏录制模式。
每个宏最长允许4095 Byte的指令。若超长,则TFC会自动重启,该次宏录制无效。
若想清空某个宏,则发送对应宏id的start指令之后,再发送重启TFC命令即可。
执行
TFC启动并开始第一次执行宏命令之前,蜂鸣器会鸣叫宏id对应的次数。例如第一次执行id为8的宏之前,蜂鸣器会先鸣叫8次。
同发送TFC指令时一样,宏录制的指令会被倒序执行。
若执行宏指令时收到了外部的TFC指令,则优先执行外部指令。若外部一直有指令,则宏指令可能很久都得不到执行。
9.7 其他特性
按键:4个按键,按键另一端直接接地即可,无需再加去抖/ESD电路。硬件限制,不支持双击、长按。
有一个蜂鸣器,可以播放简单的音调与音乐。
允许PC上位机写入最大64Byte的字符串永久保存在Flash内。
TFC上带的12V以及3.3V可以直接被测试架底板使用,使用TPS54260方案,总电流能力2.5A。TFC自身工作的电流小于0.1A,剩余的均可被负载使用。
可以直接通过指令读出CPU ID、Flash Vender、Flash ID,这些信息可以作为TFC的ID使用。
可以通过指令对MCU上的任意IO进行读写操作。需要注意的是,该功能会使得已经配置为其他总线的IO丧失总线功能,且无法通过其他指令恢复,只能通过发送复位命令使MCU重启之后才可恢复总线功能。
可以通过 指令实时查看当前的CPU利用率。
10. 通信指令集
所有跟TFC发出的指令都是基于JSON,便于上位机开发。指令包含功能指令、消息传输指令、IO指令、配置指令、TFC主动上报指令以及宏录制指令、调试指令共7种。
- 功能指令:复位 、软复位、播放声音、播放启动音乐、获取TFC软件版本、获取CPU ID、写EEPROM、读EEPROM、自检
- 消息传输指令:串口消息透传发送、串口消息透传读取、CAN消息透传发送、CAN消息透传读取
- IO指令:AI获取、AO设置,固定电平、AO设置,周期波形、DO设置、获取按键状态、获取DO错误状态、设置电源参数、读取电源参数
- 配置指令:UART波特率配置、CAN波特率配置、CAN过滤器配置、UART绑定
- TFC主动上报指令:报错指令、接收信息上报指令
- 宏录制指令:开始宏录制功能、停止宏录制功能
- 调试指令:TPS929120寄存器读、TPS929120寄存器写、写事件掩码TFCCallbackSetEventMask、任意IO操作、TFC系统设置、获取CPU负载、获取设备信息
下面附上常见操作的CPU负载情况统计表:
指令/状态 |
CPU负载 |
待机状态 |
2% |
执行自检 |
20% |
播放一首音乐 |
1% |
读20路AI |
3% |
写20路DO |
25% |
写4路AO的波表 |
10% |
开1/2/3/4路AO |
12%/21%/29%/37% |
串口透传8个字节 |
4% |
每50ms发一个CAN报文 |
2% |
每10ms发一个CAN报文 |
4% |
收每1ms十个报文的CAN消息 |
2% |
Beep(阻塞式) |
100% |
Beep(非阻塞式) |
2% |
其他指令 |
小于2% |
每秒刷一次LCD |
5% |