微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > SPI息线的UART扩展方法

SPI息线的UART扩展方法

时间:12-05 来源:单片机与嵌入式系统应用 点击:
引 言
    目前,UART(Universal Asynchronous Receiver Transmitter,通用异步收发器)接口的使用越来越广泛,许多设备上都提供了UART接口。工业使用的微处理器一般都只包括2个UART口。在实际工业数据发送和采集应用系统中,为了节省资源,微处理器直接通过UART口与设备进行数据交互。这样势必会导致微处理器的UART口不够,为了方便设备的接入,因此扩展UART口是一种理想的解决方案。同时,考虑到微处理器的SPI/I2C总线上可以连接多个总线器件,为了充分利用资源,在实际应用中可以通过SPI/I2C实施对UART接口的扩展。本文提出了一种SPI扩展UART的方法,主要采用SCl6IS752芯片进行UART接口扩展。SCl6IS752提供了标准SPI总线接口,只需要微处理器能提供标准的SPI或模拟SPI总线接口。整个设计简捷、经济,具有通用性。
    本文最后介绍了扩展接口在无线数据采集集中器中的应用,可方便地使用扩展出的UART口连接相应的无线通信模块,实现数据的采集和通信。

1 SPI总线
    串行外围设备接口(Serial Peripheral Interface,SPI)是Motorola公司推出的一种同步串行接口,其硬件功能强大,因此与SPI有关的软件比较简单。一般情况下,实现SPI通信需要3~4根线:同步时钟(SCK)线,用于实现主器件和从器件在MISO和MOSI线上串行数据传输的同步;主输出/从输入(MOSI)线,用于主器件的输出或从器件的输入;主输入/从输出(MISO)线,用于主器件的输入或从器件的输出;片选控制(CS)线,用于从设备的选择。SPI的工作模式有4种,本文采用了其中的一种主模式。

2 SCl6IS752扩展芯片
    SCl6IS752是NXP公司推出的一款通过SPI/I2C总线扩展为UART接口的芯片。扩展出双通道高性能的UART,并且能到达5 Mbps的数据率;提供8个额外的可编程的I/O脚;还可以提供数据速率高达115.2 kbps的IrDA。另外,SCl6IS752还具有其他高级的特性,例如自动硬件和软件流控制、自动的RS485支持和软件复位。
    作为UART扩展接口芯片,SCl6IS752的引脚定义并不复杂,如图1所示。XTAL1、XTFAL2引脚用来连接晶振电路,CS/A0用作SPI片选或者I2C总线器件地址选择A0;I2C/SPI为I2C总线或SPI总线接口选择;IRQ中断引脚。其他引脚就主要包括扩展后的2个UART及I/O。

    带有SPI接口的微处理器与SCl6IS752的连接十分方便;如果不带SPI接口,则可以通过I/O口来实现模拟SPI口的功能。

3 扩展UART的设计过程及原理
3.1 SPI-UART的工作过程
    SPI接口协议要求接口设备按主从方式进行配置,且同一时间内总线上只能有一个主器件。主输出/从输入(MOSI)信号是主器件的输出和从器件的输入,数据传输时最高位在先;主输入/从输出(MISO)信号是从器件的输出和主器件的输入,数据传输时也是最高位在先。串行时钟(SCLK)信号是用于同步主器件和从器件之间在MOSI和MISO线上的串行数据传输。在整个数据传输过程中,片选信号(CS)应该处于低电平状态。
    在扩展方案中,微处理器作为主器件,SCl6IS752作为从器件。因此,在设置SPI控制器时,应该设置SPI为从机。具体工作时序如图2和图3所示。

3.2 软件设计
    软件设计的依据:一是硬件系统连接关系;二是SPI的工作时序;三是SCl6IS752的工作方式。程序主要包括对SPI接口和SCl6IS752的初始化、数据的发送和接收。
    SPI接口的初始化。如果处理器提供标准的SPI口,那么只需要选择SPI引脚功能,然后设置输入/输出;如果处理器不带标准的SPI口,可以通过普通的I/0口来模拟SPI接口,完成引脚的设置后,还需要对SPI的模式、时钟频率进行设置。
    SCl6IS752的初始化。通过SCl6IS752转换为串口输出,所以必须考虑到串口的波特率、数据位、停止位、校验位等的设置。同时,在实验过程中,采用接收中断,这些也是在初始化SCl6IS752时要考虑的。
    波特率的计算公式如下:

   

    在下面的程序中,给出了对SC16IS752扩展出的A通道的初始化。

    
    数据的发送。SCl6IS752发送器部分由一个发送保存寄存器(THR)和发送移位寄存器(TSR)组成。THR实际是一个64字节FIFO。THR接收数据并将其移入TSR,然后在TSR中将其转化为串行数据并在TX端移出。处理器将数据通过SPI总线送入SCl6IS752的发送寄存器中,等待数据被取走。
    数据的接收。SCl6IS752接收器由一个接收保存寄存器(RHR)和接收移位寄存器(RSR)组成。RHR实际上是一个64字节FIFO。RSR接收RXD端的串行数据,然后将数据转化为并行数据转移到RHR。
   一般的情况下,为了系统设计的方便,可以选择SCl6IS752的数据发送所采用的查询方式;而接收数据是通过芯片的IRQ引脚触发处理器的外部中断,产生中断信号,通知处理器接收和处理数据。其工作程序流程如图4所示。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top