频率仪FA-2USB串口通讯测试
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了频率仪FA-2USB串口通讯测试相关的知识,希望对你有一定的参考价值。
01 FA-2频率计
一、背景介绍
在 测量一款高频频率计:FA-2 中遇到了USB通讯问题, 在Windows7中的虚拟串口上无法读取任何数据。 根据产品销售人员的反馈,可能需要主动发送相应的命令, 才可能获得相应的数据。 下面根据这个提示进行测试。
▲ 图1.1.1 FA-2内部电路系统框图
1、USB命令
下面是USB串口命令汇总:
命令 | 功能描述 | 返回 | 备注 |
---|---|---|---|
$D* | 读取测量数据 | $F-CH1,0000999999.874455763,+0000000118,DOK\\r\\n | |
$R* | 按下复位按键 | KEY RST ROK\\r\\n | |
$M* | 按下模式按摩 | KEY MODE MOK\\r\\n | |
$G* | 按下闸门按键 | KEY GATE GOK\\r\\n | |
$CXX* | 设置LCD对比度 XX:0-63 | SET LCD CONTCOK\\r\\n | $C50* 比较合适 |
$BXXXXX* | 设置波特率 00480,00960,019200, 03840,05760,115200 | BOK\\r\\n | |
$S* | 读取统计数据 | ||
$E2020* | 开机选择CH1测频 | ||
$E2121* | 开机选择CH1统计模式 | ||
$E2222* | 开机选择CH2频率模式 | ||
$E2323* | 开机选择CH2统计模式 | ||
$E3030* | CH1选择50欧姆 | ||
$E3131* | CH1选择1M欧姆 | ||
$E3232* | BeepOn | ||
$E3333* | Beep Off | ||
$E3434* | 打开高精度模式 | ||
$E3535* | 关闭该精度 | 所有频率范围为8位/秒 | |
$E3636* | Open CH1 LPF | ||
$E3737* | Close CH1 LPF | ||
$E4040* | CH1=50R, Inpu 10M 0db | ||
$E4141* | Select CH1=50R Input 10M-20dBM Calibration Power Meter. |
2、面板
USB使用的芯片为 FT232RL芯片,可以从 FTDI网站获得。
▲ 图1.1.2 FA-2 前面面板
▲ 图1.1.3 FA-2后面板
二、基本测量
准备测试一下相关的USB串口命令,使用数字信号源DG1062产生频率为1MHz,峰峰值为5V的正弦波。 频率计FA-2设置为50欧姆输入阻抗,此时对应的输入功率理论值为11.94dBm。 首先测试一下基本M命令。 发送命令之后, 可以看到返回的信息 这是返回的信息。
下面在测试读取测量数据的D命令。 发送命令之后, 可以看到返回的信息。 这个结果是对1MHz正弦波测量的结果, 前面是频率, 后面是信号功率。
接着读取一下统计信息, 按动MODE按钮可以看到CH1对应的频率统计信息, 这是前三次信号的统计信息。 输入S命令, 可以通过串口读取对应的统计信息。 这里返回了51次测量结果的统计信息。 与FA-2频率显示信息是相符和的。
1、测量条件
- 信号源:DG1062输出 1MHz,5Vpp的信号
- 测量模式: 1CH-50R, LPF-OFF。
此时实际上对应信号源端口信号的幅值为 2.5Vpp。对应的功率为:
V
R
M
S
=
2.5
2
×
2
=
0.8839
V
V_RMS = 2.5 \\over 2 \\times \\sqrt 2 = 0.8839V
VRMS=2×22.5=0.8839V
P
=
V
R
M
S
2
50
=
15.62
m
W
=
11.94
d
B
m
P = V_RMS^2 \\over 50 = 15.62mW = 11.94dBm
P=50VRMS2=15.62mW=11.94dBm
※ 总 结 ※
本文测试了FA-2频率计USB串口功能, 虽然没有能够看到该频率计自动返回信息, 但他的相应控制命令,数据读取命令等经过测试还是正常的。
◎ Python读取数据
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# FA2USB.PY -- by Dr. ZhuoQing 2022-10-24
#
# Note:
#============================================================
from headm import *
import serial
from _ast import Or
from serial.serialutil import SerialException
#------------------------------------------------------------
sport = serial.Serial()
sport.baudrate = 9600
sport.timeout = 0.05
try:
sport.port = 'COM8'
except:
printf('Set sport port COM8 error. ')
try:
sport.open()
except serial.serialutil.SerialException:
printf('Open sport port COM8 error.')
else:
printf('Open sport port COM8 Ok.')
#------------------------------------------------------------
def fa2read():
sport.write(b'$D*\\r\\n')
for i in range(200):
time.sleep(0.1)
if sport.inWaiting() > 0: break
ret = sport.read(100).decode('utf-8').split(',')
if len(ret) < 3: return 0
f = ret[1]
p = ret[2]
return (float(f),float(p))
#------------------------------------------------------------
result = fa2read()
printf(result)
#------------------------------------------------------------
# END OF FILE : FA2USB.PY
#============================================================
■ 相关文献链接:
● 相关图表链接:
FA-2频率计USB功能
以上是关于频率仪FA-2USB串口通讯测试的主要内容,如果未能解决你的问题,请参考以下文章