如何实现非通用串行总线的调试
扫描二维码
随时随地手机看文章
随着嵌入式技术的发展,串行总线技术也被越来越多的应用于各个领域。比如CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,现在在欧洲已是汽车网络的标准协议。
为满足用户对特殊串行总线调试的需求,一些测试仪器厂商推出了具备自定义串行总线触发和分析功能的示波器产品,用户可根据自己的需要进行简单的设定就能实现非通用串行总线的调试。下文以横河电机公司新推出的DLM2000示波器为例,详细说明一下此种功能。
总线,英文叫作“BUS”,即我们中文的“公共车”,这是非常形象的比如,公共车走的路线是一定的,我们任何人都可以坐公共车去该条公共车路线的任意一个站点。如果把我们人比作是电子信号,这就是为什么英文叫它为“BUS”而不是“CAR”的真正用意。当然,从专业上来说,总线是一种描述电子信号传输线路的结构形式,是一类信号线的集合,是子系统间传输信息的公共通道。通过总线能使整个系统内各部件之间的信息进行传输、交换、共享和逻辑控制等功能。如在计算机系统中,它是CPU、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过主机相连接,外部设备通过相应的接口电路再于总线相连接。
自定义串行总线的触发:
图表1 自定义串行总线触发设定菜单
DLM2000支持标准的CAN/LIN/I2C/SPI/UART总线触发,在串行总线触发菜单中有一项是<用户定义>(User Define)。进入这一项就可以进行自定义总线的触发设置。在此菜单中可以进行如下设置:
数据源(DATA):指定通道作为数据信号源。
激活电平(Active):指定将高电平或者低电平设为逻辑1。
时钟(Clock):对于通过时钟同步的总线,可以进行时钟的相关设置,选择时钟源以及设定在时钟信号的上升沿或下降沿进行采样。
片选(CS):当使用时钟同步信号时,通过片选信号来控制数据的有效性。可以设置片选源,以及高电平有效或者低电平有效。
锁存(Latch):可以指定时钟同步采样的数据源码型与指定码型进行比较的时间。可以是定锁存源,以及在锁存源的上升沿或是下降沿进行比较。
触发条件:可以将数据码型作为触发条件使用。当采样得到的数据源的码型与指定码型一致时,数据码型触发条件成立。
图表2 自定义串行总线触发条件设定
数据码型的长度可以设为1~128位,并制定按照二进制或是十六进制来设定码型。
比特率:当没有同步时钟源时,可以对信号的比特率进行设定,设定范围从1kbps至50Mbps,步进值为1kbps。
下面是一个带时钟同步信号的自定义总线触发示例。
首先正确设置时钟源、数据源、片选信号和锁存信号,再设置好相应的触发条件,就可以像通用串行总线一样进行触发,捕获所需要的信号波形。
图表3 时钟同步串行总线触发示例
自定义串行总线的分析:
解码设置
进行自定义总线的触发之后,就可以进行解码分析了。同样要进行相应的设置。与触发的设置类似,要指定数据源、时钟源、片选源和锁存源,并进行相应的设定;对于没有时钟同步的总线,还要指定比特率,可设置范围也是1kbps~50Mbps。之所以要设置解码起始点,是因为示波器没有内置自定义总线的协议,无法判断总线的帧结构,所以需要手动指定解码的起始点。
图表4 自定义串行总线分析设定
解码显示
打开解码显示功能,就可以在数据波形的下方看到解码的结果了。由于没有内置协议,所以无法以帧结构方式进行显示。
图表5 自定义串行总线解码显示格式设定
数据搜索
如果想在大量的数据中找到自己想要的数据,可以使用搜索功能,指定搜索的数据位数以及数据码型,执行搜索后很快就会将搜索到的结果标记出来并显示在缩放窗口中。搜索设定与触发条件设定类似。
下面以列车上常用的MVB串行总线为例,介绍自定义串行总线功能的使用方法。
多功能车厢总线MVB(MultifuncTIon Vehicle Bus)是列车通信网络TCN(Train CommunicaTIon Network)为实现位于同一车辆或固定重联的不同车辆中的标准设备之间的数据通信而定义的总线标准。
MVB总线上的串行数据采用异步差分传输的曼彻斯特码,曼彻斯特编码中的每个数据位应用以下规范编码:
a)一个“1”的编码在位元的前半部分为“高”,后半部分为“低”;
b)一个“0”的编码在位元的前半部分为“低”,后半部分为“高”;
如果曼彻斯特码中出现整个位元的高电平(NH)或整个位元的低电平(NL),则被认为非数据符,用于特殊场合,如:帧头,帧尾标识。
MVB总线属于异步传输总线,所以在进行触发和分析时不需要设置时钟源、片选和锁存等信号,只需要设定正确的比特率与合适的开始点。MVB总线的比特率一般为1.5Mbps,正确设置就可以了。
需要注意的是开始点的指定。因为MVB总线采用曼彻斯特编码,不同于常用的高低电平来确定逻辑“0”和“1”的方式,所以只有开始点的位置很合适才能正确解码。
设置好之后,解码结果会显示在波形下方,通过人工对比可以简单判断解码是否正确。通过显示设置可以将解码结果显示为二进制、十六进制或者ASCII形式,便于读取。
图表6 MVB串行总线触发分析
如上面示例那样,如果所调试的总线不是CAN,LIN,I2C,SPI以及UART这些通用串行总线,DLM2000的自定义串行总线分析功能可在一定程度上为用户的分析工作提供便利,而且不用付出高昂的费用。这也是当初开发这个功能的初衷。