数据采集板最新通信协议及测试.docx

上传人:b****8 文档编号:11014738 上传时间:2023-02-24 格式:DOCX 页数:19 大小:24.75KB
下载 相关 举报
数据采集板最新通信协议及测试.docx_第1页
第1页 / 共19页
数据采集板最新通信协议及测试.docx_第2页
第2页 / 共19页
数据采集板最新通信协议及测试.docx_第3页
第3页 / 共19页
数据采集板最新通信协议及测试.docx_第4页
第4页 / 共19页
数据采集板最新通信协议及测试.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数据采集板最新通信协议及测试.docx

《数据采集板最新通信协议及测试.docx》由会员分享,可在线阅读,更多相关《数据采集板最新通信协议及测试.docx(19页珍藏版)》请在冰豆网上搜索。

数据采集板最新通信协议及测试.docx

数据采集板最新通信协议及测试

数据采集板通讯命令测试

 

版本历史:

版本

设计

审核

批准

备注

V0.1

田云钧

2010-3-2.初次制定。

 

1测试平台

本测试平台依赖于新版数据采集卡,整个通信可以划分为两部分,PC机到单片机的串口通信,以及单片机到FPGA的SPI通信。

2软件环境

对于用户而言,所有测试命令基于串口精灵发送,通过串口精灵返回的数值来判断命令发送正确与否。

串口通讯约定

1,计算机作为主机,数据采集板作为从机。

2,所有的通讯都由主机发起,以从机的应答结束。

3,波特率设置为9600,一个起始位,一个停止位,无校验位。

4,当出现通信错误时(超时,校验错,无应答),采用重传作为处理手段。

主机发送内容定义

类型

引导字符

设备地址

子地址

命令字符

数据长度

数据内容

累加和

长度

1

1

1

1

1

n

1

内容

0xAA

0xA0

X

X

X

X

X

从机回复内容的定义

类型

引导字符

设备地址

子地址

命令字符

数据长度

数据内容

累加和

长度

1

1

1

1

1

n

1

内容

0x55

X

X

X

X

X

X

设备地址:

数据采集板的地址定义为0XA0。

子地址:

不同设备内部不同单元,该设计中子地址定义,默认为0x00.

命令字符:

详细定义见下文。

数据长度:

数据的长度,不包括检验和的长度,有可能是0。

当数据长度是0时,“数据内容”部分不存在。

数据内容:

当数据长度不为0时为所发送的数据,不能大于255字节。

累加和:

以简单的累加和作为校验。

只针对数据部分进行累加,如果数据长度为1,累加和就等于数据内容,如果数据长度为0,不仅数据部分内容为空,累加和部分也为空。

3测试内容

所有的命令可以划分为两类:

公共的通讯控制命令以及针对数据采集板的控制命令。

公共通讯控制命令可分为以下四条

1设置通讯波特率

2查询从机状态

3获取从机固件版本信息

4获取固件SN码

针对数据采集板的控制命令有以下三条

1读取单片机状态

2设置数据采集板工作模式

3读取FPGA内部状态

对于控制命令的第二条和第三条而言,其测试内容都包含两部分内容:

上位机到单片机的通信验证以及单片机到FPGA的验证。

上位机到单片机的通讯方式采用RS232方式,波特率为9600,一个起始位,8个数据位,以及一个停止位,无校验。

上位机到单片机的通信方式都会有应答,具体的应答方式在下面的测试内容中有详细介绍。

单片机到FPGA的通信方式采用SPI方式,CS低有效,SCLK的上升沿采集数据。

4控制命令测试

数据采集板的地址是0xA0。

单片机仅仅是一个命令转达的单元。

其负责将接收到的控制信息转发给FPGA。

主机给单片机发送的内容定义

表4-12:

主机发送内容定义

类型

引导字符

设备地址

子地址

命令字符

数据长度

数据内容

校验和

长度

1

1

1

1

1

X

1

内容

0xAA

0xA0

0x00

0xXX

0xXX

XX

X

表4-13:

数据采集板从机回复内容定义

类型

引导字符

设备地址

子地址

命令字符

数据长度

数据内容

校验和

长度

1

1

1

1

1

X

1

内容

0x55

0xA0

0x00

0xXX

0xXX

XX

X

上位机与单片机通讯的命令字符与数据定义

项目

子地址

方向

命令

数据

说明

1

0xA0H

下行

0x10H

0BYTE

读单片机状态。

0xA0H

上行

0x10H

1BYTE

返回单片机状态数据。

2

0xA0H

下行

0x20H

13BYTE

设置参数。

0xA0H

上行

0x20H

1BYTE

返回应答。

3

0xA0H

下行

0x30H

1BYTE

读取FPGA内部状态。

(8bit)

0xA0H

上行

0x30H

1BYTE

返回应答。

4.1工作模式设置命令测试

该命令主要完成对视频采集模式的参数设置,包括对FPGA读写操作设定,设置LVDS行场有效的时间参数,帧头检测参数设置,设置LVDS的单双通道,分辨率以及制式,VIDEO行场有效时间参数设置。

该命令的数据内容共有13字节

4.1.1参数定义

参照数据采集板的设计概要。

将工作参数写入到FPGA内部,该命令包含13个字节,下面的内容为各个字节中的所代表的命令的含义。

1)工作模式寄存器定义

bit7

bit6

bit5

bi4

bit3

bit2

bit1

bit0

R/W_

SWITCH

S/D

8/10

format

保留

保留

保留

R/W_:

控制单片机对FPGA的操作,如果是写操作,那么主机必须依次执行该命令以及执行命令字符为30-B0的所有命令,每写一个命令字节成功,返回一个成功标志。

如果是读操作,那么单片机返回FPGA内部状态内容。

SWITCH:

选择当前处理的是CVBS信号还是LVDS信号,1为CVBS,0为LVDS

S/D:

针对LVDS信号而言,S为single,当该位为1时,选择单通道,否则为双通道

8/10:

颜色分辨率选择,8为8bit,10为10bit。

该位为1时,选择8bit,否则为10bit。

format:

选择电视制式,0为VESA,1为JEADA.

我们需要设置数据采集板工作在LVDS信号采集,双通道,分辨率为8bit,VESA制式下,因此,设定该寄存器内容为0x10

如果我们要设置数据采集板工作在VIDEO信号采集下,那么应该设置该寄存器值为40

2)行有效时间参数定义为两字节,一共11bit

字节1

字节2

Bit7~3

Bit2~0

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

Rsv

HD

HD

HD

HD

HD

HD

HD

HD

HD

0

X

X

x

x

x

x

x

x

x

此次调试使用到的信号源的分辨率为1366*768,因此设置行有效时间参数为1366的十六进制表示,0x556,其中高三位送给字节1,低八位送给字节2,因此,需要发送两个字节,0x05,0x56

对于VIDEO而言,行有效设置为720,其十六进制表示为0x2D0,即发送两个字节,0x02,0xD0

3)场有效时间参数定义为两字节,一共11bit

字节1

字节2

Bit7~3

Bit2~0

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

Rsv

VD

VD

VD

VD

VD

VD

VD

VD

VD

0

X

X

x

x

x

x

x

x

x

同理设置场有效时间参数为768的十六进制0x300,即高两位送给字节1,低八位送个字节2,即发送两个字节0x03,0x00.

对于VIDEO而言,场有效设置为576,其十六进制表示为240,则发送两个字节0x02,0x40.

行同步时间以及场同步时间暂且不用,其定义如下:

4)行同步时间参数定义为两字节,一共9bit

字节1

字节2

Bit7~1

Bit0

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

Rsv

HS

HS

HS

HS

HS

HS

HS

HS

HS

0

X

X

x

x

x

x

x

x

x

5)场同步时间参数定义为两字节,一共9bit

字节1

字节2

Bit7~1

Bit0

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

Rsv

VS

VS

VS

VS

VS

VS

VS

VS

VS

0

X

X

x

x

x

x

x

x

x

设置这两个寄存器为0,这里需要发送四个0x00

帧头检测参数有5位组成,我们独用一个寄存器,用第五位表示,高三位保留

6)帧头检测参数以及消隐消隐信号最高位定义

bit7

bit6

bit5

bi4

bit3

bit2

bit1

bit0

HFP8

HBP8

VFP8

VBP8

FH3

FH2

FH1

FH0

bit3-bit0为帧头查找设定值,bit7-bit4分别为四个消隐信号分别的最高位。

7)设置行消隐的前肩(9bit)

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

HFP7

HFP6

HFP5

HFP4

HFP3

HFP2

HFP1

HFP0

8)设置行消隐的后肩(9bit)

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

HBP7

HBP6

HBP5

HBP4

HBP3

HBP2

HBP1

HBP0

9)设置场消隐的前肩(9bit)

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

HFP7

HFP6

HFP5

HFP4

HFP3

HFP2

HFP1

HFP0

10)设置场消隐的后肩(9bit)

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

HBP7

HBP6

HBP5

HBP4

HBP3

HBP2

HBP1

HBP0

对于LVDS信号采集而言,这些数据组成了工作模式设置命令即:

10,05,56,03,00,00,00,00,00,0A,00,00,01,共13字节。

对于CVBS信号采集而言,这些数据组成了工作模式设置命令即:

40,02,D0,02,40,00,00,00,00,0A,00,00,01,共13字节

4.1.2命令设置

类型

引导字符

设备地址

子地址

命令字符

数据长度

数据内容

校验和

长度

1

1

1

1

1

13

1

LVDS内容

0xAA

0xA0

0x00

0x20

0x0D

0x2005560300000000000A000001

0x4B

CVBS

0xAA

0xA0

0x00

0x20

0x0D

0x4002D00240000000000A000001

0x5F

4.1.3上位机与单片机通信

单片机返回到主机的值有三类,

发送完命令后,当主机接受到0x00时,表明此次通讯成功,成功的标志在于,单片机正确的解析到了完整的命令内容,并且命令的内容符合约定,且命令的累加和同单片机计算的累加和校验值一致,整个通信建立成功。

发送完命令后,当主机接收到0xBF时,表明此次通讯不成功,但是引导字符,以及设备地址,以及命令字符都符合要求,不满足的地方在于校验出了问题,需要重新检查命令内容,并计算校验值。

发送完命令后,当主机接受到0x7F,表明此次通讯彻底失败,即命令不是定义的类型。

例如,串口助手发送正确的指令:

AAA000200D1005560300000000000A00000179,共19个字节,发送完毕后,串口精灵收到0x00,表明此次通讯正确

但是,如果将累加和内容或者命令内容部分改变,即最后一个字节不再是0x4B时,串口精灵就会收到0xBF。

若将指令的非数据以及校验部分内容部分更改(例如,引导字符,设备地址,命令字符等),则返回0X7F,说明此命令不符合系统要求。

需要注意的是,单片机仅仅在命令正确的情况下才会向FPGA发送指令,否则一直处于等待正确命令状态。

4.1.4单片机与FPGA的SPI通信

对于FPGA与单片机之间的SPI的通信正确与否,我们只能通过看现象来得知命令是否传输正确,例如,上述指令的数据内容为1005560300000000000A000001,这串命令将通过SPI的方式发送到FPGA,在FPGA的内部存在13字节的命令寄存器,我们可以通过检测该寄存器的值是否为写入的命令,为此,我们在FPGA采用比较的方式来验证传输的正确性。

若FPGA接受到的数据与要求相符,则点亮LED,否则LED不亮。

通过实验发现,串口助手将正确指令发出后,FPGA将LED点亮,验证了SPI通信的正确性。

,若发送的指令有误,FPGA将不会接收到指令,因为在指令错误的情况下,单片机跟FPGA的SPI通信是建立不起来的。

4.2读取单片机状态命令

4.2.1参数定义

内部状态寄存器定义

bit7

bit6

bit5

bi4

bit3

bit2

bit1

bit0

CFG

WAIT

保留

保留

保留

保留

保留

保留

CFG:

FPGA配置结束后会给单片机一个应答,若配置没完成,该位置0,配置结束后,变为1;

WAIT:

等待接收命令字节状态。

只要单片机不响应中断,那么该状态位就会置位

4.2.2命令设置

类型

引导字符

设备地址

子地址

命令字符

数据长度

长度

1

1

1

1

0

内容

0xAA

0xA0

0x00

0x10

0x00

发送命令AA,A0,00,10,00

4.2.3上位机与单片机通信

单片机将当前状态返回给主机

其格式为

类型

引导字符

设备地址

子地址

命令字符

数据长度

数据内容

长度

1

1

1

1

1

1

内容

0x55

0xXX

X

0x10

0x01

见4.2.1

4.3读取FPGA内部状态命令

4.3.1参数定义

FPGA内部状态寄存器定义

bit7

bit6

bit5

bi4

bit3

bit2

bit1

bit0

BUSY

FH

VALID

FULL

EMPTY

保留

保留

保留

BUSY:

当FPGA正在采集数据的过程中(即状态机处于接受数据状态)该位置位,否则为0。

FH:

当状态机处于帧头查找状态时(异常时,将一直维持在此状态),该位置位,否则为0.

VALID:

DE信号有无的标志,若DE信号一直无效,则VALID持续为0,否则VALID为1.

FULL:

内部FIFO写满,该位置位,否则清零。

EMPTY:

内部FIFO读空,该位置位,否则清零。

在数据采集过程中,正常的状态应该是FULL,EMPYT都不为1。

4.3.2命令设置

类型

引导字符

设备地址

子地址

命令字符

数据长度

长度

1

1

1

1

1

内容

0xAA

0xA0

0x00

0x30

0x00

发送命令AA,A0,00,30,00

4.3.3上位机与单片机通信

上位机发送指令后,由单片机返回状态,具体的状态值同上描述。

当返回值满足要求时,单片机将指令发送到FPGA,并读取FPGA状态。

4.3.4单片机与FPGA通信

FPGA将实时的内部状态寄存器的内容发送到单片机。

5公共通讯控制命令

系统内所有使用串口通讯的设备(RS232),使用如下4条公共的通讯命令,分别是设置(更改)通讯波特率命令、查询系统状态命令和获取从机固件版本信息和固件的SN码。

所有的从机遵循同样的控制方式,执行同样的控制操作和使用同样的命令执行时间。

5.1设置通讯波特率

表4-3:

主机发送内容定义:

类型

引导字符

设备地址

子地址

命令字符

数据长度

数据内容

校验和

长度

1

1

1

1

1

1

1

内容

0xAA

0xA0

X

0x00

0x01

0xYY

0xYY

表4-4:

从机回复内容定义

类型

引导字符

设备地址

子地址

命令字符

数据长度

数据内容

校验和

长度

1

1

1

1

1

1

1

内容

0x55

0xA0

X

0x00

0x01

0xZZ

0xZZ

根据实际的板的信息填写“XX”部分的内容,本命令将在1ms内直接返回结果。

“0xYY”为实际的波特率的代码,本系统支持如下的波特率,实际波特率与代码的对应关系如下:

表4-5:

波特率代码对应表:

代码

0x00(默认)

0x01

0x02

0x03

其他

波特率(bps)

9600

38400

57600

115200

未定义

由于单片机只支持9600以及57600的波特率,因此,对于波特率的设置我们仅局限于这两种。

对于其他的波特率更改,将忽略。

所有从机复位后,将使用默认的波特率,当主机设置未定义的波特率时,所有从机将维持当前波特率不变。

“0xZZ”为从机返回的应答,一般讲,应答将有如下几种定义(下同):

0x00H:

本次通讯操作成功。

0x7FH:

未定义的操作命令。

0xBFH:

本次通讯失败,校验错。

0xFFH:

代表系统处于忙状态。

除“0x00H”外,从机实际上均未响应本次操作。

5.2查询从机状态

就主机端观察,从机具备两个状态,分别定义为“忙”(BUSY=1)和“空闲”(BUSY=0),主机发送命令到从机时,一般必须要要求从机处于空闲状态,才可以正确接受并执行主机发送的命令,处于忙状态,将拒绝执行主机的命令,但有几种特殊的命令除外,是不需要约定从机处于空闲状态的,包括设置波特率命令和下面特别指出的命令。

表4-6:

主机发送内容定义:

类型

引导字符

设备地址

子地址

命令字符

数据长度

长度

1

1

1

1

1

内容

0xAA

0xA0

X

0x01

0x00

表4-7:

从机回复内容定义

类型

引导字符

设备地址

子地址

命令字符

数据长度

数据内容

校验和

长度

1

1

1

1

1

1

1

内容

0x55

0xA0

X

0x01

0x01

0xZZ

0xZZ

主机查询从机的状态的命令是“0x01H”。

主机查询从机的状态,不需要数据,所以数据长度是“0”。

本命令将在1ms内直接返回结果。

“0xZZ”,返回的结果的含义如下:

0x00H:

本次通讯操作成功。

0x7FH:

未定义的操作命令。

0xBFH:

本次通讯失败,校验错。

0xFFH:

代表系统处于忙状态。

当主机设置的上一次的操作还未执行完毕或从机正处于比较关键的操作时,从机为忙状态。

主机检测从机的忙状态的操作不是必须的,主机也可以不单独检测从机的忙状态,而直接发送控制命令,从从机的应答可分析出从机在主机发送控制命令时是否处于忙状态。

详细介绍见下文。

5.3获取从机固件版本信息

表4-8:

主机发送内容定义:

类型

引导字符

设备地址

子地址

命令字符

数据长度

长度

1

1

1

1

1

内容

0Xaa

0xA0

X

0x02

0x00

表4-9:

从机回复内容定义

类型

引导字符

设备地址

子地址

命令字符

数据长度

数据内容

校验和

长度

1

1

1

1

1

16

1

内容

0x55

0xA0

X

0x02

0x10

0xZZ

X

获取版本信息的操作总能立即返回指定固件的说明字符,而不会有“BUSY”状态。

版本信息固定为16字节,采用ASCII字符标志,典型的版本信息的表示方法如下:

“20061205VER:

1.01”。

依次为年(4个ASCII字符),月(2个ASCII字符),日(2个ASCII字符),“VER:

”为版本引导字符,“1.01”为版本说明(4个ASCII字符)。

5.4获取固件SN码

每一个固件都具有与其他设备不同的且唯一的SN码,作为硬件设备的唯一标识。

表4-10:

主机发送内容定义:

类型

引导字符

设备地址

子地址

命令字符

数据长度

长度

1

1

1

1

1

内容

0Xaa

0xA0

X

0x03

0x00

表4-11:

从机回复内容定义

类型

引导字符

设备地址

子地址

命令字符

数据长度

数据内容

校验和

长度

1

1

1

1

1

16

1

内容

0x55

0xA0

X

0x03

0x10

0xZZ

X

获取版本信息的操作总能立即返回指定固件的说明字符,而不会有“BUSY”状态。

SN码固定为16字节,采用ASCII字符标志。

SN码可作为设备有效性标识和参数校准的标识。

目前保留。

6测试结论

6.1工作模式命令测试结论

6.1.1正确的命令测试

发送:

AA,A0,00,20,0D,10,05,56,03,00,00,00,00,00,0A,00,00,01,79

AA,A0,00,20,0D,40,02,D0,02,40,00,00,00,00,0A,00,00,01,5F

接收:

55A00020010000

现象:

接收到55A00020010000之后,FPGA将LED点亮。

结论:

发送命令符合要求,且校验正确,单片机将接收到命令的数据内容作累加计算后跟命令中的校验值做比较,判断出两者一致后,将该命令发送给FPGA,FPGA将该命令数据跟标准呢指令作比较,两者若一致,则点亮LED,此次测试LED被点亮,说明通信成功。

6.1.2校验失败命令测试

发送:

AA,A0,00,20,0D,10,05,56,03,00,00,00,00,00,0A,00,00,00,4B

AA,A0,00,20,0D,40,02,D0,02,40,00,00,00,00,0A,00,00,01,1F

接收:

55A0002001BFBF

现象,无

结论,由于发送命令中的数据内容为2005560300000000000A000000,其校验和为0x79,但是命令中的校验和为4B,两者不一致,导致通信失败,返回数据内容bf,标志此次通信校验失败。

通信失败,FPGA不会接收到单片机发来的指令,当然也不会点亮LED了

6.1.3未定义命令测试

发送:

A0,A0,00,20,0D,10,05,56,03,00,00,00,00,0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1