基于单片机和串行接口实现串行总线芯片测试平台的设计

网友投稿 239 2022-10-31

基于单片机和串行接口实现串行总线芯片测试平台的设计

1 串行扩展平台的结构

2 四种串行通信接口的实现

2.1 I2C总线接口时序

I2C串行总线是Philips公司提出的一种板内芯片间串行总线。它用两根连线即可方便地实现外围器件扩展。图2给出了主器件对从器件访问的基本读写时序,SDA为数据线,SCL为时钟线。

I2C总线上数据传送的基本单位为字节,采用低位在前的格式。主从器件之间一次传输的数据称为一帧,由启动信号、若干个数据字节和应答位以及停止信号组成。可以看出,I2C的主要命令只有读、写两种情况,虽然读写的字节根据具体器件的不同而不同,但其时序关系不会发生改变。根据这一点,下位机只要具备I2C的基本时序即可。这些基本时序包括:启动、写字节、读字节、应答位、停止信号,并可以组合成两个子程序:读N字节子程序、写N字节子程序。

2.2 串行外围接口SPI

SPI(同步串行外设接口)由Motorola公司提出,它是一种三线同步接口,分别为同步信号、输入信号和输出信号。另外每个扩展芯片还需要一根片选线,主器件通过片选线选通与其通信的从器件。图3给出了SPI的时序图。其中,SCK为同步时钟脉冲,SS为片选线,MOSI为主器件的数据输出和从器件的数据输入线,MISO为主器件的数据输入线和从器件的数据输出线。

SPI是全双工的,即数据的发送和接收可同时进行。如果仅对从器件写数据,主器件可以丢弃同时读入的数据;反之,如果仅读数据,可以在命令字节后,写入任意数据。数据传送以字节为单位,并采用高位在前的格式。SPI接口的通信程序可简化为:写读N字节子程序。

2.3 Microware串行通讯接口

NS公司的Microware是串行同步双工通讯接口,由一根数据输出线、一根数据输入线和一根时钟线组成。所有从器件的时钟线连接到同一根SK线上,主器件向SK线发送时钟脉冲信号,从器件在时钟信号的同步沿输出/输入数据。主器件的数据输出线DI和所有从器件的数据输入线相接,从器件的数据输出线都接到主器件的数据输入线DO上。与SPI接口类似,每个从器件也都需要另外提供一条片选通线CS(注意:它采用高选通方式)。 图4给出了主器件对从器件操作的基本时序,包括写起始位、写操作码和读字节,数据交换采用高位在前的格式。图4中给出了读两个字节时的情况,在主器件写完起始位和操作码后,从器件会应答一个 “0”。该应答位在主器件写完操作码的最后一位时给出。在本文中,主器件速度较慢,可以不考虑等待该位。Microware接口的通用子程序有:启动子程序,读N字节子程序、写N字节子程序。不同的Microware器件支持的起始位、操作码有所不同,但可人为组成合适的字节。

2.4 One-wire总线

One-wire总线是DALLAS公司研制开发的一种协议。它由一个总线主节点、一个或多个从节点组成系统,通过一根信号线对从芯片进行数据的读取。每一个符合One-wire协议的从芯片都有一个唯一的地址,包括48位的序列号、8位的家族代码和8位的CRC代码。主芯片对各个从芯片的寻址依据这64位的不同来进行。 One-wire总线利用一根线实现双向通信。因此其协议对时序的要求较严格,如应答等时序都有明确的时间要求。基本的时序包括复位及应答时序、写一位时序、读一位时序,如图5和图6所示。在复位及应答时序中,主器件发出复位信号后,要求从器件在规定的时间内送回应答信号;在位读和位写时序中,主器件要在规定的时间内读回或写出数据。为了与其它模拟接口的子程序在结构形式上尽量一致,在One-wire模拟时序程序中把位读和位写时序拓延,形成低位在前的字节读写时序,写一个字节的时序如图7所示。最终形成三个子程序:复位及应答子程序、写N个字节子程序和读N个字节子程序。

2.5 下位机软件

从功能上来说,下位机软件的作用是接收上位机发出的命令,分析命令,根据命令对各时序子程序进行组合和调用,形成正确的访问时序逻辑;如果有返回数据,还要将返回数据回送上位机显示。前面已经对四种串行接口的模拟时序子程序进行了简要介绍,由于篇幅所限,无法对每个子程序进行详细的说明,进一步的时序说明,可以查阅有关的参考文献和相关手册。这里只给出下位机软件总体流程,如图8所示。有关上位的命令在上位机与其通信的协议中介绍。

3 上位机通信软件的实现

上位PC机作为人机交互界面,负责向下位机发送经过人工分析的数据字节,这为开发者提供了对芯片的透明操作。即在对某一类芯片进行操作时并不关心中间具体的过程,只须分析数据,形成相应的数据帧,发送给下位机,即可完成对芯片的操作。上位机将操作的芯片分成四类(I2C、SPI、Microware、One-wire),用一个字节进行标识(0、1、2、3)。如果只进行写操作,则上位机发送完写入字节后,不操作;如果进行读操作,需重新设定发送的字节并等待下位机返回的数据字节。在Microware和One-wire协议中须发送起始位或复位信号的地方可以用特殊字节标识。上位机向下位机发送的数据帧由起始字节、通信选定字节、读/写命令字节、字节数和数据字节组成。图9给出了在读和写两种情况下,上位机发送的数据帧和下位机返回数据帧的组成。

结束语

本文讨论的芯片级串行总线扩展应用研发平台在实际应用中取得了良好的效果,缩短了新器件功能测试的时间,缩短了新产品的开发周期,并可根据需要增加串行接口种类。另外,这一平台也为初学者全面了解串行扩展技术提供了良好的途径。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SonarQube----使用 docker-compose 安装部署SonarQube
下一篇:首批成员!博云入选信通院“可信边缘计算推进计划”
相关文章

 发表评论

暂时没有评论,来抢沙发吧~