《数据采集板最新通信协议及测试(12页).doc》由会员分享,可在线阅读,更多相关《数据采集板最新通信协议及测试(12页).doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-数据采集板最新通信协议及测试-第 12 页数据采集板通讯命令测试版本历史:版本设计审核批准备注田云钧2010-3-2初次制定。1测试平台 本测试平台依赖于新版数据采集卡,整个通信可以划分为两部分,PC机到单片机的串口通信,以及单片机到FPGA的SPI通信。2软件环境对于用户而言,所有测试命令基于串口精灵发送,通过串口精灵返回的数值来判断命令发送正确与否。串口通讯约定1, 计算机作为主机,数据采集板作为从机。2, 所有的通讯都由主机发起,以从机的应答结束。3, 波特率设置为9600,一个起始位,一个停止位,无校验位。4, 当出现通信错误时(超时,校验错,无应答),采用重传作为处理手段。主机发送
2、内容定义类型引导字符设备地址子地址命令字符数据长度数据内容累加和长度11111n1内容0xAA0xA0XXXXX从机回复内容的定义类型引导字符设备地址子地址命令字符数据长度数据内容累加和长度11111n1内容0x55XXXXXX设备地址:数据采集板的地址定义为0XA0。子地址: 不同设备内部不同单元,该设计中子地址定义,默认为0x00.命令字符:详细定义见下文。数据长度:数据的长度,不包括检验和的长度,有可能是0。当数据长度是0时,“数据内容”部分不存在。数据内容:当数据长度不为0时为所发送的数据,不能大于255字节。累加和: 以简单的累加和作为校验。只针对数据部分进行累加,如果数据长度为1,
3、累加和就等于数据内容,如果数据长度为0,不仅数据部分内容为空,累加和部分也为空。3测试内容所有的命令可以划分为两类:公共的通讯控制命令以及针对数据采集板的控制命令。公共通讯控制命令可分为以下四条1设置通讯波特率2 查询从机状态3获取从机固件版本信息4获取固件SN码针对数据采集板的控制命令有以下三条1 读取单片机状态2 设置数据采集板工作模式3 读取FPGA内部状态对于控制命令的第二条和第三条而言,其测试内容都包含两部分内容:上位机到单片机的通信验证以及单片机到FPGA的验证。上位机到单片机的通讯方式采用RS232方式,波特率为9600,一个起始位,8个数据位,以及一个停止位,无校验。上位机到单
4、片机的通信方式都会有应答,具体的应答方式在下面的测试内容中有详细介绍。单片机到FPGA的通信方式采用SPI方式,CS低有效,SCLK的上升沿采集数据。 4控制命令测试数据采集板的地址是0xA0。单片机仅仅是一个命令转达的单元。其负责将接收到的控制信息转发给FPGA。主机给单片机发送的内容定义表4-12:主机发送内容定义类型引导字符设备地址子地址命令字符数据长度数据内容校验和长度11111X1内容0xAA0xA00x000xXX0xXXXXX表4-13: 数据采集板从机回复内容定义类型引导字符设备地址子地址命令字符数据长度数据内容校验和长度11111X1内容0x550xA00x000xXX0xX
5、XXXX上位机与单片机通讯的命令字符与数据定义项目子地址方向命令数据说明10xA0H下行0x10H0BYTE读单片机状态。0xA0H上行0x10H1BYTE返回单片机状态数据。20xA0H下行0x20H13BYTE设置参数。0xA0H上行0x20H1BYTE返回应答。30xA0H下行0x30H1BYTE读取FPGA内部状态。(8bit)0xA0H上行0x30H1BYTE返回应答。4.1工作模式设置命令测试该命令主要完成对视频采集模式的参数设置,包括对FPGA读写操作设定,设置LVDS行场有效的时间参数,帧头检测参数设置,设置LVDS的单双通道,分辨率以及制式,VIDEO行场有效时间参数设置。该
6、命令的数据内容共有13字节4参数定义参照数据采集板的设计概要。将工作参数写入到FPGA内部,该命令包含13个字节,下面的内容为各个字节中的所代表的命令的含义。1)工作模式寄存器定义bit7bit6bit5bi4bit3bit2bit1bit0R/W_SWITCHS/D8/10format保留保留保留R/W_:控制单片机对FPGA的操作,如果是写操作,那么主机必须依次执行该命令以及执行命令字符为30-B0的所有命令,每写一个命令字节成功,返回一个成功标志。如果是读操作,那么单片机返回FPGA内部状态内容。SWITCH:选择当前处理的是CVBS信号还是LVDS信号,1为CVBS,0为LVDSS/D
7、:针对LVDS信号而言,S为single,当该位为1时,选择单通道,否则为双通道8/10:颜色分辨率选择,8为8bit,10为10bit。该位为1时,选择8bit,否则为10bit。format:选择电视制式,0为VESA,1为JEADA.我们需要设置数据采集板工作在LVDS信号采集,双通道,分辨率为8bit,VESA制式下,因此,设定该寄存器内容为0x10如果我们要设置数据采集板工作在VIDEO信号采集下,那么应该设置该寄存器值为402)行有效时间参数定义为两字节,一共11bit字节1字节2Bit73Bit20Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0RsvHDHDHD
8、HDHDHDHDHDHD0XXxxxxxxx此次调试使用到的信号源的分辨率为1366*768,因此设置行有效时间参数为1366的十六进制表示,0x556,其中高三位送给字节1,低八位送给字节2,因此,需要发送两个字节,0x05,0x56对于VIDEO而言,行有效设置为720,其十六进制表示为0x2D0,即发送两个字节,0x02,0xD03)场有效时间参数定义为两字节,一共11bit字节1字节2Bit73Bit20Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0RsvVDVDVDVDVDVDVDVDVD0XXxxxxxxx同理设置场有效时间参数为768的十六进制0x300,即高两
9、位送给字节1,低八位送个字节2,即发送两个字节0x03,0x00.对于VIDEO而言,场有效设置为576,其十六进制表示为240,则发送两个字节0x02,0x40.行同步时间以及场同步时间暂且不用,其定义如下:4)行同步时间参数定义为两字节,一共9bit字节1字节2Bit71Bit0Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0RsvHSHSHSHSHSHSHSHSHS0XXxxxxxxx5)场同步时间参数定义为两字节,一共9bit字节1字节2Bit71Bit0Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0RsvVSVSVSVSVSVSVSVSVS0XXxx
10、xxxxx设置这两个寄存器为0,这里需要发送四个0x00帧头检测参数有5位组成,我们独用一个寄存器,用第五位表示,高三位保留6)帧头检测参数以及消隐消隐信号最高位定义bit7bit6bit5bi4bit3bit2bit1bit0HFP8HBP8VFP8VBP8FH3FH2FH1FH0bit3-bit0为帧头查找设定值,bit7-bit4分别为四个消隐信号分别的最高位。7)设置行消隐的前肩(9bit)Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0HFP7HFP6HFP5HFP4HFP3HFP2HFP1HFP08)设置行消隐的后肩(9bit)Bit7Bit6Bit5Bit4Bit
11、3Bit2Bit1Bit0HBP7HBP6HBP5HBP4HBP3HBP2HBP1HBP09)设置场消隐的前肩(9bit)Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0HFP7HFP6HFP5HFP4HFP3HFP2HFP1HFP010)设置场消隐的后肩(9bit)Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0HBP7HBP6HBP5HBP4HBP3HBP2HBP1HBP0对于LVDS信号采集而言,这些数据组成了工作模式设置命令即:10,05,56,03,00,00,00,00,00,0A,00,00,01,共13字节。对于CVBS信号采集而言,这些数据组成
12、了工作模式设置命令即:40,02,D0,02,40,00,00,00,00,0A,00,00,01,共13字节4命令设置类型引导字符设备地址子地址命令字符数据长度数据内容校验和长度11111131LVDS内容0xAA0xA00x000x200x0D0x2005560300000000000A0000010x4BCVBS0xAA0xA00x000x200x0D0x4002D00240000000000A0000010x5F4上位机与单片机通信单片机返回到主机的值有三类,发送完命令后,当主机接受到0x00时,表明此次通讯成功,成功的标志在于,单片机正确的解析到了完整的命令内容,并且命令的内容符合约
13、定,且命令的累加和同单片机计算的累加和校验值一致,整个通信建立成功。发送完命令后,当主机接收到0xBF时,表明此次通讯不成功,但是引导字符,以及设备地址,以及命令字符都符合要求,不满足的地方在于校验出了问题,需要重新检查命令内容,并计算校验值。发送完命令后,当主机接受到0x7F,表明此次通讯彻底失败,即命令不是定义的类型。但是,如果将累加和内容或者命令内容部分改变,即最后一个字节不再是0x4B时,串口精灵就会收到0xBF。若将指令的非数据以及校验部分内容部分更改(例如,引导字符,设备地址,命令字符等),则返回0X7F,说明此命令不符合系统要求。需要注意的是,单片机仅仅在命令正确的情况下才会向F
14、PGA发送指令,否则一直处于等待正确命令状态。4单片机与FPGA的SPI通信若FPGA接受到的数据与要求相符,则点亮LED,否则LED不亮。通过实验发现,串口助手将正确指令发出后,FPGA将LED点亮,验证了SPI通信的正确性。,若发送的指令有误,FPGA将不会接收到指令,因为在指令错误的情况下,单片机跟FPGA的SPI通信是建立不起来的。4.2 读取单片机状态命令内部状态寄存器定义bit7bit6bit5bi4bit3bit2bit1bit0CFGWAIT保留保留保留保留保留保留CFG:FPGA配置结束后会给单片机一个应答,若配置没完成,该位置0,配置结束后,变为1;WAIT:等待接收命令字
15、节状态。只要单片机不响应中断,那么该状态位就会置位类型引导字符设备地址子地址命令字符数据长度长度11110内容0xAA0xA00x000x100x00发送命令AA,A0,00,10,004.2.3 上位机与单片机通信单片机将当前状态返回给主机其格式为类型引导字符设备地址子地址命令字符数据长度数据内容长度111111内容0x550xXXX0x100x014.3 读取FPGA内部状态命令FPGA内部状态寄存器定义bit7bit6bit5bi4bit3bit2bit1bit0BUSYFHVALIDFULLEMPTY保留保留保留BUSY:当FPGA正在采集数据的过程中(即状态机处于接受数据状态)该位置
16、位,否则为0。FH:当状态机处于帧头查找状态时(异常时,将一直维持在此状态),该位置位,否则为0.VALID:DE信号有无的标志,若DE信号一直无效,则VALID持续为0,否则VALID为1.FULL:内部FIFO写满,该位置位,否则清零。EMPTY:内部FIFO读空,该位置位,否则清零。在数据采集过程中,正常的状态应该是FULL,EMPYT都不为1。4.3.2 命令设置类型引导字符设备地址子地址命令字符数据长度长度11111内容0xAA0xA00x000x300x00发送命令AA,A0,00,30,004.3.3 上位机与单片机通信上位机发送指令后,由单片机返回状态,具体的状态值同上描述。当
17、返回值满足要求时,单片机将指令发送到FPGA,并读取FPGA状态。4.3.4 单片机与FPGA通信FPGA将实时的内部状态寄存器的内容发送到单片机。5公共通讯控制命令系统内所有使用串口通讯的设备(RS232),使用如下4条公共的通讯命令,分别是设置(更改)通讯波特率命令、查询系统状态命令和获取从机固件版本信息和固件的SN码。所有的从机遵循同样的控制方式,执行同样的控制操作和使用同样的命令执行时间。设置通讯波特率表4-3:主机发送内容定义:类型引导字符设备地址子地址命令字符数据长度数据内容校验和长度1111111内容0xAA0xA0X0x000x010xYY0xYY表4-4:从机回复内容定义类型
18、引导字符设备地址子地址命令字符数据长度数据内容校验和长度1111111内容0x550xA0X0x000x010xZZ0xZZ根据实际的板的信息填写“XX”部分的内容,本命令将在1ms内直接返回结果。“0xYY”为实际的波特率的代码,本系统支持如下的波特率,实际波特率与代码的对应关系如下:表4-5:波特率代码对应表:代码0x00(默认)0x010x020x03其他波特率(bps)96003840057600115200未定义 由于单片机只支持9600以及57600的波特率,因此,对于波特率的设置我们仅局限于这两种。对于其他的波特率更改,将忽略。所有从机复位后,将使用默认的波特率,当主机设置未定义
19、的波特率时,所有从机将维持当前波特率不变。 “0xZZ”为从机返回的应答,一般讲,应答将有如下几种定义(下同):0x00H:本次通讯操作成功。0x7FH:未定义的操作命令。0xBFH:本次通讯失败,校验错。0xFFH:代表系统处于忙状态。除“0x00H”外,从机实际上均未响应本次操作。查询从机状态就主机端观察,从机具备两个状态,分别定义为“忙”(BUSY=1)和“空闲”(BUSY=0),主机发送命令到从机时,一般必须要要求从机处于空闲状态,才可以正确接受并执行主机发送的命令,处于忙状态,将拒绝执行主机的命令,但有几种特殊的命令除外,是不需要约定从机处于空闲状态的,包括设置波特率命令和下面特别指
20、出的命令。表4-6:主机发送内容定义:类型引导字符设备地址子地址命令字符数据长度长度11111内容0xAA0xA0X0x010x00表4-7:从机回复内容定义类型引导字符设备地址子地址命令字符数据长度数据内容校验和长度1111111内容0x550xA0X0x010x010xZZ0xZZ主机查询从机的状态的命令是“0x01H”。主机查询从机的状态,不需要数据,所以数据长度是“0”。本命令将在1ms内直接返回结果。“0xZZ”,返回的结果的含义如下: 0x00H:本次通讯操作成功。0x7FH:未定义的操作命令。0xBFH:本次通讯失败,校验错。0xFFH:代表系统处于忙状态。当主机设置的上一次的操
21、作还未执行完毕或从机正处于比较关键的操作时,从机为忙状态。主机检测从机的忙状态的操作不是必须的,主机也可以不单独检测从机的忙状态,而直接发送控制命令,从从机的应答可分析出从机在主机发送控制命令时是否处于忙状态。详细介绍见下文。获取从机固件版本信息表4-8:主机发送内容定义:类型引导字符设备地址子地址命令字符数据长度长度11111内容0Xaa0xA0X0x020x00表4-9:从机回复内容定义类型引导字符设备地址子地址命令字符数据长度数据内容校验和长度11111161内容0x550xA0X0x020x100xZZX获取版本信息的操作总能立即返回指定固件的说明字符,而不会有“BUSY”状态。版本信
22、息固定为16字节,采用ASCII字符标志,典型的版本信息的表示方法如下:“20061205VER:”。依次为年(4个ASCII字符),月(2个ASCII字符),日(2个ASCII字符),“VER:”为版本引导字符,“”为版本说明(4个ASCII字符)。获取固件SN码每一个固件都具有与其他设备不同的且唯一的SN码,作为硬件设备的唯一标识。表4-10:主机发送内容定义:类型引导字符设备地址子地址命令字符数据长度长度11111内容0Xaa0xA0X0x030x00表4-11:从机回复内容定义类型引导字符设备地址子地址命令字符数据长度数据内容校验和长度11111161内容0x550xA0X0x030x
23、100xZZX获取版本信息的操作总能立即返回指定固件的说明字符,而不会有“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接收:55 A0 00 20 01 00 00现象:接收到55 A0 00 20 01 00 00之后,FPG
24、A将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接收:55 A0 00 20 01 BF BF现象,无结论,由于发送命令中的数据
25、内容为2005560300000000000A000000,其校验和为0x79,但是命令中的校验和为4B,两者不一致,导致通信失败,返回数据内容bf,标志此次通信校验失败。通信失败,FPGA不会接收到单片机发来的指令,当然也不会点亮LED了6.1.3 未定义命令测试发送:A0,A0,00,20,0D,10,05,56,03,00,00,00,00,00,0A,00,00,01,79 AA,A0,A0,20,0D,40,02,D0,02,40,00,00,00,00,0A,00,00,01,5F接收:55 A0 00 20 01 7F 7F现象:无结论:该命令的引导字符0xA0未定义,发送完毕后
26、,单片机给上位机返回55 A0 00 20 01 7F 7F,代表该命令未定义,同样,FPGA也不会将LED点亮,通信失败。6.2 读取单片机状态命令测试结论6.2.1 正确的命令测试发送:AA,A0,00,10,00接收:55 A0 00 10 01 80 80结论:此时FPGA已配置结束,并且在发送命令的时刻,单片机处于等待接收命令状态,因此单片机状态寄存器值为10000000b,收到数据80,校验值也是80,通信成功。发送6.2.2 未定义命令测试发送:AA,B0,00,10,00接收:55 A0 00 10 01 7F 7F结论:发送错误的地址,单片机返回通信错误标志7F,通信失败6.
27、3 读取FPGA内部状态命令测试结论6.3.1 正确的命令测试发送:AA,A0,00,30,00 接收:55 A0 00 30 01 00 00结论:默认FPGA状态为00,在今后的工作中丰富FPGA内部状态定义,并做读取工作,暂时为验证通信同能而设定其为00。通讯成功。6.3.2 未定义命令测试发送 B0,B0,00,30,00接收: 55 A0 00 30 01 7F 7F结论:未定义命令,报错6.4 设置通讯波特率目前默认使用波特率为9600,无需更改。6.5 查询从机状态6.5.1 正确的命令测试发送:AA,A0,00,01,00接收:55 A0 00 01 01 00 00结论,能接
28、收到正确的返回数据,通讯成功。此时单片机并不忙。6.5.2 错误的命令测试发送:BB,B5,00,01,00接收:55 A0 00 01 01 7F 7F结论:通信失败。6.6 获取从机固件版本信息6.6.1 正确的命令测试发送:AA,A0,00,02,00 接收:55 A0 00 02 10 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 50 结论:获得正确的版本信息(自定义),且校验和一致。通讯成功6.6.2 未定义命令测试发送;AB,CD:00,02,00接收:55 A0 00 02 01 7F 7F结论:通讯失败6.7 获取固件SN码6.7.1 正确的命令测试发送:AA,A0,00,03,00接收:55 A0 00 03 10 AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA A0结论:获得正确的SN码(自定义),且接收到的校验和和实际校验和相同。通讯成功6.7.2 未定义命令测试发送:AA,A3,00,03,00接收:55 A0 00 02 01 7F 7F结论:通讯失败。