应用串行接口芯片扩展系统时,在初步选择了串行接口的芯片后,为了对芯片的资源更好地了解,开发者一般在系统设计前搭建一个简单的硬件电路并编制相应的软件对其测试,待性能验证后再确定最终的设计方案。本文根据这一需要设计了一个用于串行总线芯片测试的实验平台。该平台以PC机为人机接口、采用单片机产生芯片串行通信时序。应用这一平台可以大大简化芯片使用前的测试过程。这一平台也为单片机串行扩展的初学者提供了快捷的学习工具。本平台目前集成了SPI、One-wire、Microware、I2C四种串行接口,在今后的使用中,可根据需要增加串行接口的种类。

1 串行扩展平台的结构

下位机的核心是AT89C51单片机。单片机本身并没有SPI、One-wire、Microware、I2C接口,使用虚拟器件技术,在单片机内采用模块化设计思想固化四种接口的串行访问子程序,通过软件调用完成这几种串行扩展的时序,用单片机的普通I/O口线模拟出四种串行接口,在下位机电路板上留有较大的通用板空间或用标准的连接器将串行接口引出,便于与待测芯片连接。AT89C51单片机没有RS-232接口,但它的UART口可以采用MAX232等芯片扩展出简单的RS-232接口,与上位机的RS-232接口相接。下位机的结构如图1所示。

测试时,将待测芯片与对应的串行接口相连,操作者在上位机将访问命令和数据通过RS-232接口下传给下位机;下位单片机对其分析后调用相应的时序模拟程序访问待测芯片,并将结果通过RS-232接口上传给上位机,在上位机显示。从整个测试过程来看,只要关心命令和数据的输入和输出,不必关心具体时序,近似一种透明的操作。测试后,只需对单片机中的子程序稍加裁减,即可移植到实际应用软件中,为开发提供了方便。下面将分别介绍这四种串行通信接口的实现。

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

在串行扩展中,可以根据接口主器件的数量分为单主器件系统和多主器件系统。其中单主器件系统应用最普遍。在单主器件系统中,具有一个主控制器件和多个从器件,数据的传送由主器件控制。主器件启动和停止数据的发送,提供同步时钟信号。在应用中使用种类最多的是功能繁多的从器件。本文的串行扩展平台主要针对这些从器件应用设计。所以该平台采用单主器件系统结构,只考虑用单片机的通用I/O口线模拟主器件访问从器件的时序逻辑。

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给出了在读和写两种情况下,上位机发送的数据帧和下位机返回数据帧的组成。

结束语

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

基于AT89C51单片机实现串行总线芯片测试实验平台的设计相关推荐

  1. #PRBS# PRBS7高速串行总线的常用测试码型

    PRBS的定义: PRBS: Pseudo-Random Binary Sequence 伪随机二进制序列 PRBS 码具有"随机"特性,是因为在 PRBS 码流中,二进制数&qu ...

  2. HyperLynx(二十九)高速串行总线仿真(一)

    高速串行总线仿真(一) 1.高速串行接口 2.SERDES(串行/解串器)架构 3.高速串行链路仿真拓扑结构 4.高速串行信号仿真流程 5.IBIS-AMI模型 6.高速串行信号仿真方法 随着电子产品 ...

  3. K210、Openmv与串行总线舵机通信(基于micropython)舵机驱动板和舵机控制板代码

    最近博主在使用幻尔公司 串行总线舵机时,想使用k210控制,由于官方没有相关例程(树莓派的版本是python版本代码,用不了)特此分享一下控制代码 主要调用函数 a.to_bytes(x,'littl ...

  4. SPI、I2C、UART三种串行总线的原理、区别及应用

    SPI协议解析,链接如下 https://blog.csdn.net/weiqifa0/article/details/82765892 I2C协议解析,链接如下 https://blog.csdn. ...

  5. 串行总线 —— I2C、UART、SPI

    I2C,也叫 IIC,是一种常见的串行总线,它只需要两根线即可在连接于总线上的器件之间传送信息. 0. 电气知识 开漏输出:Open drain output,不输出电压,低电平时接地,高电平时不接地 ...

  6. 单片机万年历c语言程序设计,基于AT89C51单片机的多功能

    基于AT89C51单片机的多功能电子万年历的设计(附程序)(12000字) AT89C51 SCM-BASED ELCTRONIC DESIGN CALENDAR 摘要 本文介绍了基于AT89C51单 ...

  7. 基于 AT89C51 单片机的数字时钟设计

    目录 1.设计目的.作用 2.设计要求 3.设计的具体实现 3.1 设计原理 3.2 硬件系统设计 3.2.1 AT89C51 单片机原理 3.2.2 晶振电路设计 3.2.3 复位电路设计 3.2. ...

  8. 单片机万年历c语言程序设计,基于AT89C51单片机的多功能电子万年历的设计(附程序)...

    基于AT89C51单片机的多功能电子万年历的设计(附程序)(12000字) AT89C51 SCM-BASED ELCTRONIC DESIGN CALENDAR 摘要 本文介绍了基于AT89C51单 ...

  9. uart接口_UART串行总线舵机转接板规格、接线说明 amp; 驱动安装

    摘要  UART串行总线舵机需要配合UART串行总线舵机转接板使用,它的作用是将舵机的单线转换为双线TTL接口(Rx接收端,Tx发送端),通过双线TTL串口接口与单片机进行通信.或者通过转接板上的US ...

最新文章

  1. 数据结构与算法:06 线性表
  2. Jvm 系列(六):Java 服务 GC 参数调优案例
  3. RK3288 手动设置电池电量
  4. Qt应用程序主窗口之一:主窗口框架
  5. 15条最重要且最基本的SEO优化Tips和技巧
  6. what to try on on idiscover?
  7. 页面错误!请稍后再试_微信内嵌H5页面授权和分享
  8. 智能机器人热点技术大揭秘!
  9. DeFi一体化平台Parsec获125万美元种子轮融资并正式启动
  10. Tcl Tutorial 笔记9 · proc 参数传递与return
  11. gridview選發行彈出層 模板列
  12. poj_1390 动态规划
  13. 【ArcGIS|空间分析】求年度NDVI最大值图像和NDVI最大值出现日期图像
  14. Computing the cost J(θ)----吴恩达机器学习作业
  15. Zabbix监控系统系列之十二:SNMP Traps主动告警
  16. 马斯克 的 2500 吨 推力 的 大火箭 没什么 了不起
  17. 23Bootstrap
  18. 自然语言处理中/英文对比
  19. 什么原因导致芯片短路_PCB电路板短路的原因及解决方法-EDA/PCB-与非网
  20. 11、Altiris cms 7.0 系统监控

热门文章

  1. 文化产业与旅游产业的深度融合
  2. html5 toggle,JQuerytoggle使用分析
  3. 打砖块游戏html代码,打砖块游戏的源代码
  4. Cesium粒子效果之雨、雪、雾
  5. 学历不高,没有一技之长,性格还内向,我应该找什么工作?
  6. 【论文阅读】多粒度特征融合的维度语音情感识别方法
  7. 六、JDBC操作数据库
  8. MPF模块化策略框架
  9. 计算机图形学【清华大学出版社】
  10. mint-ui 的地址选择 外部套了vant ui的 弹出popup