MIL-STD-1553B总线协议介绍2
本文将对协议文本进行提炼,从四个方面:
1. 总线基本形式
2. 总线数据格式
3. 总线硬件规范
4. 1553B接口芯片
进行详细介绍,基本看完后基本可以应用到工程。最后会再结合一款接口芯片介绍一下如何应用,作为自己学习的笔记,同时也希望帮助同样是刚进入本领域的新人。yysy,1553总线还是挺简单的,作为对各种协议的入门来说真不错。有时间会继续介绍其后续发展FC-AE-1553和MIL-STD-1773。
1553总线作为美军上世纪70年代推出的总线协议,其可靠性已经得到了充分验证(这一点在其主要应用的航空领域尤为重要)。我国也对应推出了相(fan)应(yi)的GJB-289(说翻译是开玩笑的,当时的情况可能也不允许航空部门独立推出一整套协议),与MIL-STD-1553基本完全一致,但是有些地方可能是是因为翻译问题有些理解不通(也可能是因为我太菜没看懂)。
目前市场主流1553接口芯片基本为外企生产,所以本次介绍也以美军MIL-STD-1553协议为准。作为刚进入本领域的萌新,难免会有遗漏和错误,希望大佬们能帮忙指出。
一,总线基本形式
本章将直观介绍1553总线的基本形式,对其有基本的概念。
上图为1553总线基本形式,必须满足以下条件:
1. 一条总线上只能有一个BC(Bus Controller 总线控制其),是唯一可以控制总线的设备;
2. 一条总线最多可挂载31个RT(Remote Terminal 远程终端),挂载数量和协议中的信息格式有关,只有5位地址,11111用于广播,会在第二章详细介绍。
3. 总线上信息以半双工形式传送。1553总线可以备份多线缆作为备用,但一次只能启用一对(以差分信号形式传送),所以只能进行半双工通信。GJB-289和MIL-STD-1553中要求双冗余度,也就是两对,一般接口芯片也支持两对。
4. 总线是响应/应答的形式,也就是说BC给RT发送指令字,说你可以传送数据了,RT再传送。(不然总线上数据不就冲突了嘛)
一,总线数据格式
1553B总线以信息字的格式传输信息,信息字包括三种类型:
1:指令字Command Word
2:数据字Data Word
3:状态字Statue Word
并且1553B总线协议对每一种字的的每一位含义都有严格定义,如下图所示。可以查看GJB289和MIL-STD-1553B协议,这里不再赘述。
1553B总线以曼彻斯特II型码传输每信息字中一bit(就是上图中1位时,除了同步头)。曼彻斯特II型码如下图:
其用上升表示逻辑“0”,下降沿表示逻辑“1”。使用曼彻斯特II型码的最大好处就是含有丰富的定时信息(无论01,电平都会跳变,可以帮助系统确定每一bit的位置,试想如果用非归零码(NRZ)传输,如果有相当长的连0或连1,数据电平一直没有改变,接收端可能失去同步)。
那么,代价是什么?曼彻斯特II型码相比于普通的NRZ相当于用2bit传送1bit信息,数据带宽增加一倍。当然1553B总线速率本来也不高(1Mbps),数据带宽的增加不会对系统功能产生什么影响。(顺带一提现在基带信号大多还是采用NRZ的编码方式,但可以通过特殊的编码减少连0或连1的个数,比如PCIe使用的8B/10B,128B/130B编码,Aurora使用的64B/66B编码,大家可以自己查一查)。
每一种消息字的前三位用作同步,也就是用一个曼彻斯特波形占用了三个码元的宽度,下降沿表示指令字和状态字(在指令字和状态字内还有用于区分这两个的bit),上升沿表示数据字。
1553B总线设备间传送信息采用呼叫——应答的方式,简单来说就是有BC发出指令字,RT接收到指令字后发出指令字中要求的数据字,状态字。下次更新详细讲几个例子,其他类型可以查看GJB289和MIL-STD-1553B协议,不再赘述。
接下来讲讲传输的例子,方便理解,讲真这个东西都是大同小异的,能看懂IIC,再看TCPIP,再看这些应该很好理解。
BC向RT传送数据:
由于1553B采用响应/应答形势,始终由BC掌握总线的控制权,BC先发一个指令字,格式如下:
在RT地址的5位中指定哪一个RT接收(每一个RT有唯一的地址);T/R位表示要求RT做的动作,所有应该为R(逻辑0);子地址是根据实际应用来的,比如一个RT有5个不同的功能可以分配5个不同的子地址,当然在这个指令字中只能有一个;数据字计数表示RT应该接收多个帧数据;最后进行奇偶校验。
BC发出指令字后开始发数据字,数据字格式如下,非常简单,就是同步头+2B数据+奇偶校验。
RT接收完数据字计数中规定的数据帧之后会回传一个状态字,格式如下,告诉BC传输是否成功,或者传输为什么失败
在RT回复的状态字中远程终端地址为自己的地址,告诉BC是哪个在回复(就像BC把一堆数据传给A,然后A回复说A收到了,如果回复的消息说B收到了那肯定就是错误的,大部分BC如果收到错误的RT地址会向上位机报错),剩下几位的含义都在协议中有详细介绍,也不再赘述。
需要注意的是图中还有**符号和#符号。**表示响应时间,就是最后一帧数据字之后,RT必须要在规定的时间间隔内回复状态字,记得好像是12us,具体多少可以自己查一下协议。#表示消息间间隔,表示BC在接收到状态字后多长时间发出下一个指令字,进行下一次通信,其余的通信方式也都大同小异。
1553B的硬件特性。
1553B连接的物理形式有直接耦合和变压器耦合,不同之处在于变压器耦合多了一个耦合变压器(废话),可以更好的做到阻抗匹配以保证总线上波形不变形,同样也有抑制共模噪声的作用(但是yysy,硬件设计都是和使用环境强相关的,只能说是各方都通过协议(gjb151,好像还有一个记不清了)规定了耦合到线缆上的噪声有多少,在这个噪声范围内耦合变压器可以很好的抑制,但是实际情况还是得具体来看),两者可以用下图概括。注意两根电缆为一对差分信号,与图一中一条总线对应,进过耦合器分离出一路信号,由分离出的这一路信号接入RT中的1553B收发器,再由收发器将曼彻斯特电平转码并拆解报文,将最后的报文一般是以NRZ的形式送给下方的系统处理。
对于线缆,由于一般飞机上都使用专用航空连接器,如下图,没有像RJ45那样专门用于传输特定型号的连接器,(当然现在可能都使用光缆了,就直接用标准的光缆接头了,只是猜想,具体什么样我也不知道)。所以对应的线缆一般都是定制线缆,同样找协议中规定了线缆硬件特性,详细规定都在文档中,不再赘述。
对于各变压器,目前使用较多的应该是HOLT的,各项参数也均在文档中规定。对于终端(1553B收发器也算终端的一部分),1553B协议中硬件部分规定终端输出波形的特性,以及对输入波形的兼容性,不过这一部分都是有1553B收发器来负责的,对于系统设计来说千万要选个靠谱的1553B收发芯片。