收藏 分销(赏)

数据采集板通信协议及测试模板.doc

上传人:人****来 文档编号:9504553 上传时间:2025-03-29 格式:DOC 页数:16 大小:158.04KB 下载积分:8 金币
下载 相关 举报
数据采集板通信协议及测试模板.doc_第1页
第1页 / 共16页
数据采集板通信协议及测试模板.doc_第2页
第2页 / 共16页


点击查看更多>>
资源描述
数据采集板通讯命令测试 版本历史: 版本 设计 审核 同意 备注 V0.1 田云钧 -3-2.首次制订。 1测试平台 本测试平台依靠于新版数据采集卡, 整个通信能够划分为两部分, PC机到单片机串口通信, 以及单片机到FPGASPI通信。 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 0x0000000A000001 0x4B CVBS 0xAA 0xA0 0x00 0x20 0x0D 0x4002D00A000001 0x5F 4.1.3上位机与单片机通信 单片机返回到主机值有三类, 发送完命令后, 当主机接收到0x00时, 表明此次通讯成功, 成功标志在于, 单片机正确解析到了完整命令内容, 而且命令内容符合约定, 且命令累加和同单片机计算累加和校验值一致, 整个通信建立成功。 发送完命令后, 当主机接收到0xBF时, 表明此次通讯不成功, 不过引导字符, 以及设备地址, 以及命令字符都符合要求, 不满足地方在于校验出了问题, 需要重新检验命令内容, 并计算校验值。 发送完命令后, 当主机接收到0x7F, 表明此次通讯根本失败,即命令不是定义类型。 比如, 串口助手发送正确指令: AAA000200D0000000A00000179,共19个字节, 发送完成后, 串口精灵收到0x00, 表明此次通讯正确 不过, 假如将累加和内容或者命令内容部分改变, 即最终一个字节不再是0x4B时, 串口精灵就会收到0xBF。 若将指令非数据以及校验部分内容部分更改(比如, 引导字符, 设备地址, 命令字符等), 则返回0X7F, 说明此命令不符合系统要求。 需要注意是, 单片机仅仅在命令正确情况下才会向FPGA发送指令, 不然一直处于等候正确命令状态。 4.1.4单片机与FPGASPI通信 对于FPGA与单片机之间SPI通信正确是否, 我们只能经过看现象来得悉命令是否传输正确, 比如, 上述指令数据内容为0000000A000001, 这串命令将经过SPI方法发送到FPGA, 在FPGA内部存在13字节命令寄存器, 我们能够经过检测该寄存器值是否为写入命令, 为此, 我们在FPGA采取比较方法来验证传输正确性。 若FPGA接收到数据与要求相符, 则点亮LED, 不然LED不亮。经过试验发觉, 串口助手将正确指令发出后, FPGA将LED点亮, 验证了SPI通信正确性。, 若发送指令有误, FPGA将不会接收到指令, 因为在指令错误情况下, 单片机跟FPGASPI通信是建立不起来。 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字符标志, 经典版本信息表示方法以下: “1205VER: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 接收: 55 A0 00 20 01 00 00 现象: 接收到55 A0 00 20 01 00 00以后, 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 接收: 55 A0 00 20 01 BF BF 现象, 无 结论, 因为发送命令中数据内容为000A000000, 其校验和为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未定义, 发送完成后, 单片机给上位机返回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.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 结论, 能接收到正确返回数据, 通讯成功。此时单片机并不忙。 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 结论: 通讯失败。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服