PixelxCamera
**<<PX4040相机指令文档>>**

| 概述:此文档给出了CMOS相机PX4040指令定义及FPGA操作流程。 |

*版本信息列表显示每个版本的内容概要、历史版本(由哪个版本改进得到)、版本日期、作者等*

版本号 作者 版本信息 更新原因 历史版本 更新日期
0.1 冯译 创建文档 20190505
1.1 张艺浩 MD版,并对兼容性做修改 20190901

**List of Contents**

指令定义 6

PC与FPGA通信指令格式: 9

1. 指令定义 9

2. 状态定义 10


**指令定义**

配置设定指令

指令名称 指令头 指令意义 指令参数
Exposure Time 16’h8406 设置曝光时间 从00000000到FFFFFFFF
Get Exposure Time 16’h80D1 获取设置的曝光时间
ROI ROW 16’h84C0 设置曝光区域 起始行:0~FFE   终止行:1~FFF
Get ROI ROW 16’h80D2 获取设置的曝光区域
Multiple 16’h82C1 设置连拍张数 从1到3FF
Get Multiple 16’h80D3 获取设置的连拍张数
Video Mode 16’h81C2 设置Video模式 ON/OFF
Get Video Mode 16’h80D4 获取Video模式
Picture Mode 16’h81C3 设置图片模式 00: LDR低增益;
01: LDR高增益;
02: HDR;
03: LDR高低增益同时读出
Get Picture Mode 16’h80D5 获取设置的图片模式
Gain 16’h82C4 设置TOP、BOTTOM通道增益,TOP通道为高增益,BOTTOM通道为低增益 TOP:从000000到111111   BOT:从000000到111111
Get Gain 16’h80D6 获取设置的增益
Force Training 16’h81C5 设置强制对齐 00:不强制对齐   01:强制对齐一次
Get Force Training 16’h80D7 获取设置的强制对齐方式
BIN 16’h81C6 设置BIN 00:1*1   01:2*2
Get BIN 16’h80D8 获取设置的BIN模式
PIC Interval 16’h84C7 设置连拍图片时间间隔 从00000000到FFFFFFFF
Get PIC Interval 16’h80D9 获取设置的连拍图片时间间隔
Black Level 16’h84C8 设置TOP、BOTTOM通道本底设置 TOP:从0000到FFFF   BOT:从0000到FFFF
Get Black Level 16’h80DA 获取设置的本底数值
LDC Mode 16’h81C9 设置LDC Mode ON/OFF
Get LDC Mode 16’h80DB 获取设置的LDC模式
Trigger Mode 16’h81CA 设置触发模式 00: 软件触发;
01: 外部trigger0触发;
02: GPS时间触发;
Get Trigger Mode 16’h80DC 获取设置的触发模式
Fan Speed 16’h81CB 设置风扇转速 00:0转速;
01: 25转速;
02: 50转速;
03: 75转速;
Get Fan Speed 16’h80DD 获取设置的风扇转速
Target Temp 16’h82CC 设置制冷温度
Get Target Temp 16’h80DE 获取制冷目标温度
PID Parameter 16’h83CD 设置制冷PID算法参数
Get PID Parameter 16’h80DF 获取设置的PID参数
Get Device 16’h8003 获取设备信息
Get Temp 16’h80E0 获取当前温度
Get Voltage 16’h80E1 获取当前电压
Get Electric Current 16’h80E2 获取当前电流
Get Cooling State 16’h8013 获取制冷状态
Get Gps Time 16’h80E3 获取曝光起始时刻GPS时间
Get Tdc Time 16’h80E4 获取曝光起始时刻和PPS时间差的TDC计数
Get Gps Status 16’h80E5 获取GPS的连接状态
Set Trigger Time 16’h86E6 设置定时拍照时间
Set Tdc Time 16’h84E7 设置定时拍照TDC时间
Get Serial Number 16'h80E8 获取下位机序列号

| |Get Logic Version | 16'h80EA | 获取下位机逻辑版本号 | | | |Get Exposure Date | 16'h80E9 | 获取曝光日期 | | | |Set Heat Dutycycle | 16'h80EB | 设置除霜加热pwm的占空比 | | | |Get Heat Dutycycle | 16'h80EC | 获取除霜加热pwm的占空比 | | | |Set V2 Serial Number | 16'h88ED | 设置下位机的序列号(V2版开始有,存的FLASH) | | | |Get V2 Serial Number | 16'h80EE | 获取下位机的序列号(V2版开始有,存的FLASH) | |

执行指令

指令名称 指令头 指令意义 指令参数
Start Photo 16’h8009 开始拍照
Operation End 16’h80E6 终止拍照
Cooling 16’h81CE 开始/停止制冷 00:停止制冷  01:开始制冷
Shutter 16’h81CF 打开/关闭快门 00:快门常开  01:快门常关
Fan 16’h81D0 启动/停止风扇运行 00:关闭风扇  01:开启风扇
Force Training16’h80C5 强制对齐

序列号定义(128位)

错误码

  • 误反馈协议应该包含信息“错误标识头-针对指令-错误原因”。错误原因是枚举号。
  • 当上位机发送命令UV时(0x80UV),下位机反馈 0x82FF-0x00UV-0x20F0,其中0xF0表示错误类型是:不支持。
  • 上位机的温度查询命令改为查询fpga轮询结果的寄存器,不会产生rd_spi
错误类型 错误码 错误说明
错误指令 F0 满足cmos命令解析,但不属于cmos的指令
初始化未完成 F1 拒绝所有指令
曝光未完成 F2 拒绝所有曝光相关指令(开始曝光,force_train,设置曝光时间,设置曝光行数,设置帧数,video_mode,pic_mode,设置增益,设置BIN,连拍间隔,blacklevel,LDC_mode)
配置cmos未完成 F3 拒绝所有cmos_SPI相关指令(开始曝光,force_train,set_gain,set_blacklevel,set_LDC,set_BIN)
读取cmos未完成 F4 拒绝所有cmos_SPI相关指令(forcetrain,set_gain,set_BIN,set_black_level,set_LDC)

## **PC与FPGA通信指令格式**:

### 指令定义

  • 命令由16bits作为1个word构成,每个word的Cmd [15:13]作为命令标示位。
  • 每个word值为100代表是命令头,标示此word为1个命令的起始数据。
  • 命令头后面最多跟4个数据命令字,标示位分别为000->011.
  • 标示位为111代表下传文件数据。
命令标示位 Cmd [15:12] Definition
1000 命令头
0000 命令数据字1
0010 命令数据字2
0100 命令数据字3
0110 命令数据字4
1110 下传文件数据
  • 命令头的Cmd [11:8]标示命令数据字的个数,比如4’b0100代表命令头后面跟4个命令数据字;
  • Cmd [7:0]标示命令ID,可以定义128个不同的命令。
  • 此时PC发送命令头为:16’h84XX。
Cmd [15:12] Cmd [11:8] Cmd [7:0]
1000 命令数据字的个数 命令ID
  • Cmd [11:0]代表12bits的数据,4组数据命令字最多构成48bits的命令数据。
  • 命令数据字的Cmd [11:8]一般不使用,默认为全0;使用时和Cmd[7:0]构成共12位数据
  • 其中命令数据字1的Cmd为最低位,命令数据字4的Cmd为最高位。
Cmd [15:12] Cmd [11:0]
0000/0010/0100/0110 命令数据字1-4

### 状态定义

  • 反馈与监测数据的格式与命令下发格式类似,至少包括1个word的命令头
  • 命令头包括3bits的命令标示位,5bits的命令数据字个数,8bits的命令ID
  • 最多4个word的命令数据字组成32bits的反馈、监测数据。
  • 标示位为111代表上传报警数据,Cmd [7:0]标示报警类型ID。
命令标示位 Cmd [15:12] Definition
1000 命令头
0000 命令数据字1
0010 命令数据字2
0100 命令数据字3
0110 命令数据字4
1110 上传报警数据

### 下位机默认状态说明

变量 默认值
曝光时间 3000行
高增益 10
低增益 1
风扇状态 开启
连拍间隔时间 0行

## 具体指令定义

曝光时间设定(Exposure Time):16’h8406

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00100 8’h06

此命令设定曝光时间,命令后跟4个命令数据字,构成32bits的数据内容,代表曝光的时间,单位为ms,即最大曝光设定时间为32’hFFFFFFFF ms, 约为1200h。

软件应方便的设定时间值,可参考solis.

实际下发指令为:16’h8406,16’h00XX, 16’h20XX, 16’h40XX, 16’h60XX

收到完整命令,反馈16’h8006到06通道,代表命令接收OK

下发指令为行数,一行时间为:

Tline = 12*516/数据率,数据率为150M,即一行时间为0.00004128s

获取曝光时间(Exposure Time):16’h80D1

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hD1

此命令下发后,读取曝光时间,上传数据如下:

16’h84D1,16’h00XX, 16’h20XX, 16’h40XX, 16’h60XX

CMOS相机曝光行数设定(ROI_ROW):16’h84C0

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00100 8’hC0

此命令设定CMOS相机曝光行数,命令后跟4个命令数据字,构成32bits的数据内容。 曝光行数设定为起始行和终止行,范围为[0,4095],需要保证起始行数低于终止行数。

实际下发指令为:16’h84C0, 16’h00XX, 16’h20XX, 16’h40XX, 16’h60XX。起始行为60XX,40XX,终止行为20XX,00XX。

比如起始行为100,终止行为2000,那么下发

16’h84C0, 16’h00D0, 16’h2007, 16’h4064, 16’h6000

获取曝光区域(Get ROI ROW):16’h80D2

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hD2

此命令下发后,读取曝光区域参数,上传数据如下:

16’h84D2, 16’h00XX, 16’h20XX, 16’h40XX, 16’h60XX

CMOS相机连拍张数设定(Multiple):16’h82C1

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00100 8’hC1

此命令设定连拍张数,命令后跟2个命令数据字,构成16bits的数据内容,代表连拍张数。

实际下发指令为:16’h82C1,16’h00XX, 16’h20XX

收到完整命令,反馈16’h80C1到06通道,代表命令接收OK

获取连拍张数(Get Multiple):16’h80D3

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hD3

此命令下发后,读取连拍张数参数,上传数据如下:

16’h82D3,16’h00XX, 16’h20XX

Video模式(Video Mode):16’h81C2

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00001 8’hC2

此命令设定Video模式,命令后跟1个命令数据字,构成8bits的数据内容,代表Video指令。

实际下发指令为:16’h81C2,16’h00XX

开启Video为:16’h81C2,16’h0001

关闭Video为:16’h81C2,16’h0000

收到完整命令,反馈16’h80C2到06通道,代表命令接收OK

获取Video模式(Get Video Mode):16’h80D4

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hD4

此命令下发后,读取Video模式,上传数据如下:

16’h81D4,16’h00XX

图像模式(PIC Mode):16’h81C3

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00001 8’hC3

后跟1组命令数据字,表明是HDR还是LDR模式,同时表明是高增益还是低增益读出

16’h81C3,16’h0000表明是LDR低增益读出

16’h81C3,16’h0001表明是LDR高增益读出

16’h81C3,16’h0002表明是HDR读出

16’h81C3,16’h0003表明是LDR高,低增益读出

在Video模式下只可选择LDR低增益读出和LDR高增益读出,不可选择HDR读出和LDR高,低增益读出

收到完整命令,反馈16’h80C3到06通道,代表命令接收OK

获取图片模式(Get Picture Mode):16’h80D5

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hD5

此命令下发后,读取图片模式,上传数据如下:

16’h81D5,16’h000X

增益设置(Gain):16’h82C4

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00100 8’hC4

此命令设置高低增益通道增益数值,命令后跟2个命令数据字,分别表明高、低增益通道增益数值

16’h82C4,16’h00XX,16’h20YY

XX表明设置高增益通道(TOP)增益数值,YY表明设置低增益通道(BOT)增益数值,增益为离散值,需根据GS4040手册枚举

收到完整命令,反馈16’h80C4到06通道,代表命令接收OK

获取通道增益(Get Gain):16’h80D6

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hD6

此命令下发后,读取通道增益,上传数据如下:

16’h82D6,16’h00XX,16’h20YY

BIN设置(BIN):16’h81C6

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00001 8’hC6

此命令后跟1组命令数据字,表明设置BIN模式

16’h81C6,16’h0000表明1*1模式

16’h81C6,16’h0001表明2*2模式

同时预留后面使用FPGA进行BIN输出

收到完整命令,反馈16’h80C6到06通道,代表命令接收OK

获取BIN设置(Get BIN):16’h80D8

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hD8

此命令下发后,读取BIN设置,上传数据如下:

16’h81D8,16’h000X

连拍模式曝光间隔设置(PIC Interval):16’h84C7

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 01000 8’hC7

此命令后跟4组命令数据字,表明设置连拍模式曝光间隔

16’h81C7,16’h00XX,16’h20XX,16’h40XX,16’h60XX

最长时间为32’hffffffff*40ns=171.8s

收到完整命令,反馈16’h80C7到06通道,代表命令接收OK

获取连拍图片时间间隔(Get PIC Interval):16’h80D9

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hD9

此命令下发后,读取连拍图片时间间隔,上传数据如下:

16’h84D9,16’h00XX,16’h20XX,16’h40XX,16’h60XX

Black Level:16’h84C8

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 01000 8’hC8

此命令后跟4组命令数据字,分别设置TOP通道和BOT通道的Black Level。

Black Level设置为16位数,其中D7D6必须设置为’10’,需要软件强制

下发指令为16’h84C8,16’h00AA,16’h20BB,16’h40CC,16’h60DD

AA为TOP低位,BB为TOP高位,CC为BOT低位,DD为BOT高位

收到完整命令,反馈16’h80C8到06通道,代表命令接收OK

获取本底设置(Get Black Level):16’h80DA

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hDA

此命令下发后,读取本底设置,上传数据如下:

16’h84DA,16’h00XX,16’h20XX,16’h40XX,16’h60XX

LDC Mode:16’h81C9

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00001 8’hC9

此命令后跟1组命令数据字,表明开启或者关闭LDC Mode

16’h81C9,16’h0000表明关闭LDC Mode

16’h81C9,16’h0001表明开启LDC Mode

收到完整命令,反馈16’h80C9到06通道,代表命令接收OK

获取LDC模式 (Get LDC Mode):16’h80DB

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hDB

此命令下发后,读取LDC模式设置,上传数据如下:

16’h81DB,16’h000X

触发模式(Trigger Mode):16’h81CA

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00001 8’hCA

此命令后跟1组命令数据字,表明触发模式

16’h81CA,16’h0000表明内部触发(软件指令触发)

16’h81CA,16’h0001表明下一次通过外部Trigger触发

16’h81CA,16’h0002表明下一次触发根据软件设定时间触发(时间格式待确定?)

说明:不管何种模式,都要下发开始曝光的指令,才会去等待触发。

收到完整命令,反馈16’h80CA到06通道,代表命令接收OK

获取触发模式(Get Trigger Mode):16’h80DC

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hDC

此命令下发后,读取触发模式,上传数据如下:

16’h81DC,16’h000X

风扇转速设置(Fan Speed) :16’h81CB

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00001 8’hCB

此命令后跟1组命令数据字,表明风扇设置模式

16’h81CB,16’h0000表明风扇00转速

16’h81CB,16’h0001表明风扇20转速

16’h81CB,16’h0002表明风扇50转速

16’h81CB,16’h0003表明风扇75转速

收到完整命令,反馈16’h80CB到06通道,代表命令接收OK

获取风扇转速(Get Fan Speed):16’h80DD

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hDD

此命令下发后,读取风扇转速,上传数据如下:

16’h81DD,16’h00XX

制冷温度设置(Target Temp) :16’h82CC

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00010 8’hCC

此命令后跟2组命令数据字,表明设置制冷目标温度

16’h82CC,16’h00AA,16’h2002表明设置制冷目标温度为16’h2AA,温度和参数关系按照手册公式由软件计算

收到完整命令,反馈16’h80CC到06通道,代表命令接收OK

获取制冷目标温度(Get Target Temp):16’h80DE

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hDE

此命令下发后,读取制冷目标温度,上传数据如下:

16’h82DE,16’h00AA,16’h2002

PID参数设置(PID Set) :16’h83CD

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hCD

此命令下发后,设置PID参数(内部调试使用)

16’h83CD,16’h00AB,16’h20CD,16’40EF

其中24’hEFCDAB = {4’h0, Kp, Ti, Td, T}

Kp是8位转换系数,默认设置为1

Ti是4位积分系数,默认设置为3

Td是4位微分系数,默认设置为3

T是4位比例系数,默认设置为10

获取PID参数(Get PID Parameter):16’h80DF

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hDF

此命令下发后,读取PID参数, 上传数据如下:

16’h80DF,16’h00AB,16’h20CD,16’40EF

获取设备信息(Get Device):16’h8003

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’h03

此命令下发后,读取设备信息,反馈如下:

16’h8303,16’h0006,16’h2001,16’4001(CMOS相机)

0006表示PX4040相机

2001表示版本号

4001表示固件号

获取当前温度(Get Temp):16’h80E0

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hE0

此命令下发后,读取当前温度,格式如下:

16’h80E0,16位CMOS温度,24位TEC热端温度,24位house内部温度,24位环境温度1(预留),24位环境温度2(预留),16位FPGA温度,16’h0(补足32位整数倍)

获取电压(Get Voltage):16’h80E1

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hE1

此命令下发后,读取电压,格式如下

{16’h84E1,16位VCCINT,16位VCCAUX,16位VCCBRAM,16位TEC电压} 前三个电压均为FPGA内部电压,VCCINT为1.1V,VCCAUX为1.8V,VCCBRAM为1.8V左右

电压=16位数高12位*3/4096V

TEC电压=16位数低12位/4095*12.635V

获取电流(Get Electric Current):16’h80E2

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hE2

此命令下发后,读取电流,格式如下

{16’h84E2,16位主板2.8V电流,16位5.5V电流,16位24V输入电流,16位TEC电流} 2.8V电流大概1A左右,5.5V电流大概1.5A左右,24V输入大概2A左右

电流计算方法:

16位(主板2.8V,5.5V,24V)电流=16’hABCD

I=16’ABCD高12位*0.00125(A);

16位TEC电流 = n*3.3/4096/101/0.01

获取制冷状态(Get Cooling State):16’h8013

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’h13

此命令下发后,读取制冷状态,制冷状态分别为:

16’h8113,16’h0000表明未制冷

16’h8113,16’h0001表明正在制冷

16’h8113,16’h0002表明制冷完成

制冷命令(Cooling) :16’h81CE

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00001 8’hCE

此命令后跟1组命令数据字,表明制冷命令

16’h81CE,16’h0000表明停止制冷

16’h81CE,16’h0001表明开始制冷

收到完整命令,反馈16’h80CE到06通道,代表命令接收OK

快门状态设置(Shutter Set) :16’h81CF

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00001 8’hCE

此命令后跟1组命令数据字,表明快门状态

16’h81CF,16’h0000表明快门常开

16’h81CF,16’h0001表明快门常闭

收到完整命令,反馈16’h80CF到06通道,代表命令接收OK

风扇状态设置(Fan Status) :16’h81D0

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00001 8’hD0

此命令后跟1组命令数据字,表明风扇状态

16’h81D0,16’h0000表明关闭风扇

16’h81D0,16’h0001表明打开风扇

开始拍照指令(Start Photo):16’h8009

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’h09

收到指令后,相机按照设定的参数开始一次拍照流程。

收到命令,反馈16’h8009到06通道,代表命令接收OK。

再此过程中软件上除中止按键可以操作外,其他按钮应该变成不可操作的灰色。

中止拍照指令(Operation End):16’h80E6

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hE6

当此命令发送到控制器,任何的曝光和读出序列立刻被中止。等待曝光的功能也会终止后请等待2秒钟,让下位机完成剩余操作。

收到命令,反馈16’h80E6到06通道,代表命令接收OK,相机拍照中止。

强制对齐 (Force Training):16’h80C5

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hC5

收到指令后,相机进行一次强制对齐操作。

收到命令,反馈16’h80C5到06通道,代表命令接收OK

获取曝光起始时刻GPS时间(get_gps_time):16’h80E3

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hE3

收到指令后,相机将上次曝光缓存的起始时刻gps时间上传

收到命令,反馈16’h85E3到06通道

返回数据格式

{16’h86E3,16’h00AA,16’h20BB, 16’h40CC,16’h60DD, 16’h80EE,16’hA0FF,16’h0}

BBAA为秒的asc ii码,DDCC为分的asc ii码,FFEE为时的asc ii码,为了满足usb传输需要,后面补了16位0

目前兴隆观测站的GPS遵从NEMA协议:

‘$GPRMC,142143.00,A,4023.75173,N,11734.64829,E,0.000,000.00,151119,,,A*60’

注意:下位机实现是,TDC和串口时间都是通过PPS触发来做记录得,串口时间来得比PPS晚,所以PPS记录的都是上一秒的时间,所以软件处理上需要加1

获取曝光起始时刻和pps时间差的TDC计数(get_tdc_time):16’h80E4

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hE4

收到指令后,相机将上次曝光缓存的起始时刻和PPS信号的时间差的TDC计数

上传

收到命令,反馈16’h84E4到06通道

返回数据格式为:

{16’h84E4,16’h00AA,16’h20BB, 16’h40CC,16’h60DD, 16’h0}

DDCCBBAA,A为低位,D为高位,其中低28位有效,为了满足usb的传输需要,后面补了16位的0

时间= n*10(ns)TDC时钟为100Mhz

获取GPS的连接状态(get_gps_status):16’h80E5

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hE5

收到指令后,相机将gps的连接状态上传

收到命令,反馈16’h81E5到06通道

返回数据格式为:

{16’h81E5,16’h00AA }

16’h0001表示连接上了gps

16’h0000表示未连接gps

设置定时拍照时间(set_trigger_time):16’h86E6

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hE6

此命令下发后,设置曝光起始的时间:

16’h86E6,16’h00AB,16’h20CD,16’h40EF,16’h60GH,16’h80IJ,16’hA0KL

CDAB为秒时间ASC码

GHEF为分时间ASC码

KLIJ 为时时间ASC码

例如想在UTC时间12点34分56秒曝光

则下发16’h86E6,16’h0035,16’h2035,16’h4034,16’h6033,16’h8032,16’hA031

注意!(红色部分说明):因为串口时间总是慢于PPS的时间,最终曝光触发由PPS触发,所以设置时间应当设置提前1秒,而去等待下一秒的PPS信号

拍照流程:设置定时拍照时间设置触发模式为time触发开始曝光

设置定时拍照,pps后的TDC计数(get_tdc_time):16’h84E7

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hE4

收到指令后,相机将设置PPS信号来后的counter计数

收到命令,返回16’h80E7

{16’h84E7,16’h00AA,16’h20BB, 16’h40CC,16’h60DD}

DDCCBBAA,A为低位,D为高位,其中低25位有效,

时间= n*50(ns)TDC时钟为20Mhz

错误命令返回(Error Cmd):16’h82FF

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hFF

详见错误码部分

获取序列号(Get Serial Number):16’h80E8

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hE8

收到指令后,下位机返回序列号

位数0-1516-3132-3940-4748-5556-63
内容0x880xE80x00SERIAL[0..7]0x20SERIAL[8..15]
含义
位数64-7172-7980-8788-9596-103104-111
内容0x40SERIAL[16..23]0x60SERIAL[24..31]0x80SERIAL[32..39]
含义
位数112-119120-127128-135136-143144-151152-159
内容0xA0SERIAL[40..47]0xC0SERIAL[48..55]0xE0SERIAL[56..63]
含义

命令序号位0xE8,返回值为一个64位数(记为SERIAL),如上表所示,此六十四位数用于表示相机的序列号。

获取逻辑版本号(Get Logic Version):16’80EA

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hEA

收到指令后,相机返回逻辑版本号

位数0-1516-3132-3940-4748-5556-63
内容0x880xE80x00A[0..7]0x20B[0..7]
含义
位数64-7172-7980-8788-9596-103104-111
内容0x40C[0..7]0x60D[0..7]0x80D[8..15]
含义

返回值形如上表,其中A为八位无符号整数,表示大版本号(Major Version Number),B为八位无符号整数,表示小版本号(Minor Version Number),C为八位无符号整数,表示修正版本号(Revision Number), D为16位无符号整形,表示编译版本号(Build Number)

获取GPS日期(Get GPS Date):16’80E9

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hE9

收到指令后,相机返回曝光日期

位数0-1516-3132-3940-4748-5556-63
内容0x860xE80x00D0[0..7]0x20D1[0..7]
含义
位数64-7172-7980-8788-9596-103104-111
内容0x40M0[0..7]0x60M1[0..7]0x80Y0[8..15]
含义
位数112-119120-127
内容0xA0Y1[0..7]
含义

返回的负载是按照DDMMYY的格式返回的拍照时的UTC时间的日、月、年信息,注意此处的返回是字符串的形式,例如2019年9月11日,对应的D0为‘1’,即0x31,D1为‘1’,0x31,M0为‘0’,0x30,M1为‘9’,0x39, Y0为‘1’,0x31,Y1为‘9’,0x39

设置加热PWM占空比(Set heat Dutycycle):16’h80EB

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hEB

收到指令后,相机设置除霜加热的PWM信号的占空比

位数0-1516-3132-3940-47
内容0x800xEB0x00A[0..7]

|含义|||||||

A对应的十进制数为占空比*100。

例如发送16‘h80EB 0032 ,则代表设置占空比50。超过100的占空比,会被下位机视作无效舍弃 (后续根据测试情况,上位机需要加入一个上限值,加热功率不能过大,会影响成像)

获取加热PWM占空比(Get heat Dutycycle):16'h80EC

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hEC

收到指令后,相机上传除霜加热的PWM信号的占空比

位数0-1516-3132-3940-47
内容0x800xEB0x00A[0..7]

|含义|||||||

A对应的十进制数为占空比*100。

例如发送16‘h80EC ,返回16’h81EC 0032,则代表设置的占空比为50%

设置相机序列号(V2版开始有此功能)(Set V2 Serial Number):16'h80ED

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hED

收到指令后,设置相机序列号(V2版开始有此功能)

位数0-1516-3132-3940-47
内容0x800xEB0x00A[0..7]

|含义|||||||

序列号为128位:详见序列号定义

SN(15:0)为序列号低16位

发送:

88ED 00SN(7:0) 20SN(15:8) 40SN(23:16) 60SN(31:24) 80SN(39:32) A0SN(47:40) C0SN(54:48) E0SN(63:55)

获取相机序列号(V2版开始有此功能)(Get V2 Serial Number):16'h80EE

Cmd [15:13] 命令标示位 Cmd [12:8] Cmd [7:0] 命令ID
100 00000 8’hEE

收到指令后,设置相机序列号(V2版开始有此功能)

位数0-1516-3132-3940-47
内容0x800xEB0x00A[0..7]

|含义|||||||

序列号为128位:详见序列号定义

下发80EE后

接收:

88EE 00SN(7:0) 20SN(15:8) 40SN(23:16) 60SN(31:24) 80SN(39:32) A0SN(47:40) C0SN(54:48) E0SN(63:55)