SPI息线的UART扩展方法(转)

引 言
       目前, 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 口连接相应的无线通信模块,实现数据的采集和通信。


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息线的UART扩展方法(转)_第1张图片

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


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

SPI息线的UART扩展方法(转)_第2张图片

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

    SPI息线的UART扩展方法(转)_第3张图片

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

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

SPI息线的UART扩展方法(转)_第5张图片

4 扩展UART接口实例
    采用SPI扩展出的UART可满足标准串行端口UART的要求,而且操作简单。设置串口的波特率、数据位、停止位和校验位,数据的发送与接收都可由用户自行定义。笔者在无线数据采集集中器系统中,对扩展UART的可行性和实用性进行了论证。下面以无线数据采集集中器为例,说明SCl6IS752的实际应用。
4.1 可行性
    在设计无线数据采集集中器过程中,选用了NXP公司的LPC2148作为集中器的处理器。LPC2148自带2个UART口,而无线数据采集集中器需要4个UART,分别为RS232数据传输、红外数据传输、接收数据UART和无线通信UART口。很明显,需要扩展UART口才能满足要求。微处理器LPC2148有标准的SPI/I2C总线,因此笔者就选择了SCl6IS752作为UART的扩展芯片。
    SCl6IS752具有16C450可兼容的寄存器集,扩展出的UART引脚分别为TX、RX、RTS和CTS。这些都和标准的UART一样,只是初始化的设置不同。初始化完成后,具体操作函数和标准的UART接口操作类似。只是芯片在读取和发送数据时,与微处理器的数据交互是通过SPI总线进行的。
4.2 应用设计
    集中器系统具体设计硬件连接图如图5所示。SCl6IS752的IRQ直接与LPC2148的外部中断EINTl连接。扩展的UART接收到数据后,就会通过IRQ产生一个低电平触发外部中断,而在处理器的外部中断服务程序中处理接收到的数据。在实际集中器测试中,扩展出的UART口与标准的UART具有同样功效。芯片的晶振频率采用1.843 2 MHz,与晶振连接的是22 pF的电容,芯片需要采用3.3 V电源供电。与CPU连接的引脚共有6个,功能如表1所列。其中,SPI配置必需的引脚是MO-SI、MISO、SCK。因为选用芯片的功能是SPIUART,所以直接把12C/SPI引脚接地。

SPI息线的UART扩展方法(转)_第6张图片

SPI息线的UART扩展方法(转)_第7张图片

结 语
    UART广泛用于Modem、手持工业设备、条形阅读器、测试设备、消费产品与PC机之间,以及小型网络之间的通信。本文结合微处理器的SPI或I2C接口功能,设计了一种扩展UART接口;微处理器没有标准的SPI或I2C接口时,也可通过普通的I/O来模拟SPI/I2C总线。扩展出的UART应用于实际无线数据采集系统,实验结果表明,完全能够达到标准UART接口的要求。处理器的UART口不够用时,也可通过此方案达到设计的要求。

你可能感兴趣的:(linux,sc16is752,uart)