0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子设计 来源:电子技术应用 作者:夏继强,邢春香, 2021-06-15 16:28 次阅读

作者:夏继强,邢春香,卢明臻,满庆丰

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

1 串行扩展平台的结构

SPI、One-wire、Microware、I2C是目前单片机应用系统中最常用的几个串行扩展接口。具有I2C和One-wire接口的外围器件都有自己的地址编号,单片机通过软件选通器件;而SPI和Microware扩展接口芯片首先要通过单片机I/O口线选通其片选脚,然后才能对其进行操作。这四种串行扩展接口都有不同的时序要求,但每一种总线的基本时序要求都是一致的,对芯片的操作无非是读出或写入,所不同的是具体的数据字节内容,只要按照各自的时序和命令操作,即可实现芯片功能。本文的串行扩展平台就是基于这一方法搭建的。 串行扩展平台由两部分组成:上位机部分由PC机构成,具有人机接口界面,操作起来方便直接;下位机部分由单片机及扩展接口电路构成,并通过RS-232接口与上位机通信。

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

结束语

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

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    453

    文章

    50360

    浏览量

    421623
  • 单片机
    +关注

    关注

    6032

    文章

    44513

    浏览量

    632689
  • 总线
    +关注

    关注

    10

    文章

    2864

    浏览量

    87972
收藏 人收藏

    评论

    相关推荐

    单片机--串行口实验 精选资料下载

    实验目的和任务目的:利用“模块化单片机教学实验平台”,加深对单片机串行口的理解。任务:利用单片机串行
    发表于 07-19 06:52

    Neuron芯片与MCS-251系列单片机串行通信的实现

    摘要: 介绍一种基于MCS 251系列单片机的LON节点 ,它利用MCS 251 系列单片机串行接口实现与Neuron芯片的数据交换。文中
    发表于 07-26 12:31 19次下载

    基于单片机串行通信

    一、实验目的1.了解串行通信的基本知识;2.掌握用单片机串行口实现串行通信的方法。二、实验器材微机、示波器、万用表、电源、AEDK仿真开发系统,面包板一块,M
    发表于 09-19 20:33 52次下载

    PIC单片机软件异步串行口实现方法

    PIC单片机软件异步串行口实现方法 在用单片机开发各种嵌入式应用系统时,异步串行通信是经常要用到的一种通信
    发表于 09-17 14:56 1465次阅读
    PIC<b class='flag-5'>单片机</b>软件异步<b class='flag-5'>串行口实现</b>方法

    单片机入门教程第21课-串行接口

    单片机入门教程第21课-串行接口 概述  串行接口的一般概念  单片机与外界进行信息交换称之为
    发表于 01-07 15:47 1698次阅读
    <b class='flag-5'>单片机</b>入门教程第21课-<b class='flag-5'>串行</b><b class='flag-5'>接口</b>

    AVR单片机串行AD的SPI接口设计

    为了解决信号采集系统的同步串行通讯问题,在理解AVR 单片机SPI接口的通讯原 理和方法的基础上,分析了AVR 单片机SPI接口的工作过程
    发表于 02-18 16:07 211次下载
    AVR<b class='flag-5'>单片机</b>与<b class='flag-5'>串行</b>AD的SPI<b class='flag-5'>接口</b>设计

    单片机串行口的并行通信技术

    单片机串行口是最常用的端口, 对于存在两个或多个串行口的单片机来说, 充分利用串行口进行通信是非常重要的。故以常见的8051系列
    发表于 12-09 15:19 103次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>串行</b>口的并行通信技术

    SPI总线接口实现数据传输的实现方法

    本文介绍了通过SPI总线接口实现数据传输的实现方法,给出了用MCS51单片机汇编语言模拟SPI串行总线
    发表于 11-16 13:34 8次下载

    使用定时器实现PIC18单片机与兼容UNIO®总线串行EEPROM的接口

    本文档内容介绍了基于使用定时器实现PIC18单片机与兼容UNIO总线串行EEPROM的接口,供参考
    发表于 03-29 17:47 2次下载
    使用定时器<b class='flag-5'>实现</b>PIC18<b class='flag-5'>单片机</b>与兼容UNIO®<b class='flag-5'>总线</b><b class='flag-5'>串行</b>EEPROM的<b class='flag-5'>接口</b>

    51单片机教程之80C51单片机串行口介绍及如何进行串行总线的扩展

    本文档的主要内容详细介绍的是51单片机教程之80C51单片机串行口介绍及如何进行串行总线的扩展。主要内容包括了:1
    发表于 12-05 11:53 27次下载
    51<b class='flag-5'>单片机</b>教程之80C51<b class='flag-5'>单片机</b>的<b class='flag-5'>串行</b>口介绍及如何进行<b class='flag-5'>串行</b><b class='flag-5'>总线</b>的扩展

    51单片机的IO口如何模拟串行通信实现方法详细说明

    的方法是扩展一片8251 或 8250 通用同步/异步接收发送芯片(USART),需额外占用单片机I/O 资源。本文介绍一种用单片机普通I/O 口实现
    发表于 12-20 15:32 2次下载
    51<b class='flag-5'>单片机</b>的IO口如何模拟<b class='flag-5'>串行</b>通信<b class='flag-5'>实现</b>方法详细说明

    如何设计一个单片机无线串行接口电路

    介绍一种采用MICRF102单片发射芯片,MICRF007单片接收芯片构成的单片机无线串行
    发表于 04-27 08:00 0次下载
    如何设计一个<b class='flag-5'>单片机</b>无线<b class='flag-5'>串行</b><b class='flag-5'>接口</b>电路

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

    应用串行接口芯片扩展系统时,在初步选择了串行接口芯片后,为了对
    的头像 发表于 06-17 11:09 2193次阅读
    基于AT89C51<b class='flag-5'>单片机</b><b class='flag-5'>实现</b><b class='flag-5'>串行</b><b class='flag-5'>总线</b><b class='flag-5'>芯片</b><b class='flag-5'>测试</b>实验<b class='flag-5'>平台</b>的设计

    单片机--串行口实

    实验目的和任务目的:利用“模块化单片机教学实验平台”,加深对单片机串行口的理解。任务:利用单片机串行
    发表于 11-17 09:36 10次下载
    <b class='flag-5'>单片机</b>--<b class='flag-5'>串行口实</b>验

    如何实现51单片机与PC串行通信

    51单片机与PC串行通信是一种常见的通信方式,它允许单片机通过串行接口与PC
    的头像 发表于 10-21 11:35 355次阅读