APP下载

基于SPI互连的多串口系统

2010-03-26胡立群陈敦军

电子设计工程 2010年12期
关键词:字节寄存器中断

胡立群,陈敦军

(南京大学电子科学与工程学院江苏省光电信息功能材料重点实验室,江苏南京210093)

许多数字化设备、测量仪器都具有RS232串行接口[1]。在某些场合需要多台这样的设备联合测量,并与计算机等主控设备交换数据,接受主控设备的控制。最简单的方法是直接将设备连接到计算机的串口上,但一般台式计算机本身所带的串口数量只有1~2个,有时难以满足需要。尽管还可以采用具有PCI总线的多串口卡对计算机系统进行扩充,但需要额外占用系统资源,并且一些情况下的局限性限制了这种方法的应用。

本文介绍了一种不同于多串口卡的串口扩展方法,采用该方法建立的多串口系统,主体由多个单片机组成,单片机同时具有串口和SPI接口,单片机之间基于SPI总线“主—从”互连,系统中的1个“主串口”用于连接计算机,其余的“从串口”可以连接其他的串口设备。因此,系统工作时只需占用计算机的1个串口资源或1个USB接口。连接到该系统上的其他串口设备通过该系统的控制转发,可以与计算机进行正常的数据交换。

1 系统的设计

1.1 设计构想

一片单片机一般只有1个全双工异步串行口(UART),也就是说,一片单片机只能连接1个外部串口设备。如果一个系统需要同时连接多个外部串口设备,则可采用多片单片机构成系统的主体,这些单片机各自分别与1个串口设备连接并交换数据。系统中的主控制单元采用某种方式协调这些单片机与上位计算机的数据交换,从而达到计算机串口扩展的目的。

现在一些通用的单片机功能都很强大,片上不仅集成有全双工异步串行口(UART),还集成有全双工同步串行接口(SPI),这为上述构想的实现提供了必要条件。

根据上述构想,设计一个系统,主体是由多个具有全双工同步串行接口(SPI)的单片机构成,将其中的1个CPU作为主机(主控制单元),其余为从机。通过SPI总线,可以很方便地将这些单片机进行连接,形成“单主—多从”的结构,主器件主导SPI通讯[2-7]。系统中,主机的UART与上位计算机的串口连接,每个从机的UART与1个外部串口设备连接,由此形成一个“基于SPI互连的多串口系统”,实现对计算机串口资源的扩展。

这种基于SPI的多串口收发控制系统,不同于多串口卡,采用外置式设计,仅占用1个计算机的串口或1个USB口。系统中各从机独立运行,并行工作。系统中的主机完成“一对多”的任务调配,起到沟通上位计算机与多个外部串口设备的作用。图1显示了该系统中的主—从互连结构及与计算机、外部串口设备的连接。

图1 基于SPI主—从互连多串口系统示意图Fig.1 Schematic diagram of multi-serial-port system based on master/slave mode SPI

1.2 单片机的选择[4,8]

STC12C5410系列单片机,以8051为内核,并具有以下特点:1 T周期单片机,在线可编程(ISP),I/O可配置为4种方式,具有SPI同步串行高速接口、UART异步串行接口,片上扩展外部数据存储器XRAM等。由于具有上述特点,STC12C5410很适合用来构成基于SPI的多串口收发控制系统。

1.3 单片机STC12C5410的SPI接口[4]

STC12C5410系列单片机具有SPI接口,有2种操作模式:主模式和从模式。在主模式中支持高达3 Mbit/s的速率(工作频率为12 MHz时,如果CPU主频采用20~36 MHz,则可更高),还具有传输完成标志和写冲突标志保护。

SPI接口有4个管脚:CLK/P1.7,MOSI/P1.5,MISO/P1.6,SS/P1.4。

CLK,MOSI,MISO通常和2个或更多SPI器件连接在一起。数据通过MOSI由主机传送到从机,通过MISO由从机传送到主机。CLK信号在主模式时为输出,在从模式时为输入。如果SPI被禁止,这些管脚都可作为I/O口使用。

SS为从机选择管脚。在典型配置中,SPI主机使用I/O口选择1个SPI器件作为当前的从机。

该系列单片机,有3个与SPI功能模块相关的特殊功能寄存器,分别是SPI控制寄存器(SPCTL),SPI状态寄存器(SPSTAT),SPI数据寄存器(SPDAT),如表1所示。寄存器的各位功能描述见表2、表3。

表1 SPI功能模块特殊功能寄存器Tab.1 Special function registers of SPI functional module

表2 SPI控制寄存器的位描述Tab.2 Bits description of SPI control register

表3 SPI状态寄存器的位描述Tab.3 Bits description of SPI state register

SPI操作时,主机和从机的2个SPI数据寄存器都可以看成1个16位循环移位寄存器,当数据从主机移位传送到从机的同时,数据也以相反的方向移入。这意味着在1个移位周期,主机和从机数据相互交换[2,4]。

1.4 单片机STC12C5410的UART[4]

STC12C5410的UART的控制方式,与其他8051系列单片机基本一样,只是由于STC12C5410是1 T周期单片机,通过对辅助寄存器(AUXR)的设置,可以改变定时器0、定时器1、UART的速度。AUXR地址为8EH。表4为AUXR有关的位描述。

表4 AUXR有关的位描述Tab.4 Related bit description of AUXR

为了兼容传统的8051单片机,定时器0、定时器1复位后是12分频。如果UART以定时器1作为波特率发生器,则T1_12决定了UART串口是1T还是12T。

ESPI是SPI中断控制位。SPI的中断顺序号为5[4]。

2 数据交换协议的设计

2.1 主—从SPI数据交换

SPI通讯可以看成主机控制下的主机—从机SPI数据寄存器内容的互换,主机不仅得到从机中的数据,也同时将数据发送给从机[2,4]。因此,采用SPI通讯,主机既可以得到从机连接的串口设备传来的数据,也可以通过从机将来自主机的控制数据传递给外部串口设备。

为了描述方便,将主机向从机传递的信息分为2种类型,“命令信息(command-info.)”和“数据信息(data-info.)”。从机将接收到的外部串口设备的数据暂存在接收缓冲区中,主机为了得到这些数据向从机所发送的信息称为“命令信息”。主机为了控制外部串口设备而向从机发送的信息称为“数据信息”。

主机所传递的两类“信息”,通过字节的第7位(特征位)来区别,1代表是“命令信息”,0代表是“数据信息”。从机根据接收到的信息类型,采取对应的处理方式,将接收缓冲区中的数据传回给主机,或将主机数据暂放在发送缓冲区中,等待传递给外部设备,图2显示了数据流动方向。

2.1.1 定 义命令信息(Command-info.)

由于从机只能被动地与主机交换数据,“命令信息”可使从机知道主机的操作意图,准备好要交换的数据。表5列出了所定义的4个“命令信息”。

通过“命令信息”,主机得到从机“数据接收缓冲区”中的数据,也就是得到与该从机连接的外部串口设备传来的数据。

图2 数据流动示意图Fig.2 Diagram of data transfers

表5 定义的4个命令信息Tab.5 Defined four command-info.

2.1.2 数 据信息(Data-info)及构成

“数据信息”由主机发出,通知从机将有关数据发往所连接的外部串口设备。

“数据信息”含有特征位,第7位固定为0,不能完整表达所要传送的一个数据字节(见图3),所以1个“数据字节”要用2个“数据信息”字节表达。表达方式是:将该数据字节分割为字节的高4位和字节的低4位两部分,并分别作为2个“数据信息”字节的低4位,然后在这2个“数据信息”的高4位添加特征位。其中“数据信息”的第6位用来区分数据字节的高4位或低4位(见图4)。

图3 数据字节的格式Fig.3 Format of data byte

图4 “数据信息”字节的格式Fig.4 Format of data_info.

“数据信息”的D4~D7位为特征位,D0~D3位为数据位。主机两次SPI传送,先高后低。从机将接收到的2个字节的“数据信息”重新合成1个完整的字节还原出原始数据,并将该数据存放在发送缓冲区中,然后通过UART传递给所连接的串口设备上。

主机通过发送“0X70”,结束“数据信息”传送。

2.2 系统的主机(主控单元)和计算机的数据交换

主机通过UART和计算机的串口连接,通过SPI与从机相连。计算机通过主机实现一对多操作,从而实现串口的扩展。主机根据上位计算机的指向,将数据传递给对应的从机,而将来自从机的数据加上相应从机信息发送给计算机。在数据交换时,必须指明数据来源或数据的去向。

主机—计算机间交换数据的格式如图5所示。其中D5~D7位指明从机地址,可寻址8个从机;D4位用于区分D0~D3位是数据字节的高4位或数据字节低4位。两个这样的标识字节才能完整表达一个数据字节。

图5 主机—计算机之间的数据交换格式Fig.5 Format of data exchange between master and computer

3 存储器的组织和控制流程

从机的功能较为单一,主要是通过UART与连接的串口设备交换数据,以及与主机通过SPI交换数据。

在从机中开辟2个数据缓冲区,一个用于暂存接收到的外部串口数据,等待传送给主机,即数据接收缓冲区;另一个暂存来源于主机的数据,用于控制所连接的外部串口设备,即数据发送缓冲区。

主机的工作相对复杂,需要沟通上位计算机和多个从机的联络。在主机中为每个从机开辟有2个数据缓冲区,分别用于保存接收到的从机数据和发送给从机的数据,这些数据同时也用于与计算机交换。主机以SPI方式定时查询各个从机,并交换数据;然后以UART方式与上位计算机交换。在数据交换时,主机需要对这些数据按前面介绍的方法进行重新编码。

主机与计算机的数据交换量可能远高于从机与外部串口设备之间的数据量,因此,适当提高主机的波特率加大数据吞吐,降低从机的波特率,开辟合适的缓冲区,可以不发生数据溢出丢失现象。

主机和从机的SPI中断被允许。主机以定时方式顺次启动与各个从机的SPI传送,一旦启动,后续的SPI传送在中断处理程序中触发,直至缓冲区中的数据交换完毕[4,9]。图6为主机SPI中断服务程序流程图。

被主机选中的从机接收到主机传来的数据,产生SPI中断,在中断程序中判断信息类型,采用对应处理方式。图7为从机SPI中断服务程序流程图。

图6 主机SPI中断服务程序流程图Fig.6 Flow chart of SPI interrupt program in master

图7 从机SPI中断服务程序流程图Fig.7 Flow chart of SPI interrupt program in slave

主机与上位计算机的数据交换,以及从机与外部串口设备的数据交换,采用串行口中断方式处理[4,9,10]。从机与外部串口设备交换数据自主进行,不需要主机干预。

4 结束语

基于SPI“主—从”互连的多串口系统,从机独立完成与外部设备的串口通讯,主机启动SPI,分别获取各个从机接收到的串口数据并通过从机控制所连接的外部串口设备;主机通过UART与上位计算机交换数据。因此,计算机通过该“多串口系统”,可以同时连接多个串口设备,实现了计算机串口扩展的目标。这种串口扩展方法,是“多串口卡”方案外的另一种选择,由于采用外置方式,仅需占用计算机1个串口或1个USB口,相对于多串口卡,使用相对方便。

根据所设计的数据交换协议,基于SPI“主—从”互连的多串口系统,具有同时连接多达8个串口设备的能力。

由于主机与上位计算机通讯波特率高于从机与外设的若干倍,并且SPI通讯速率远高于串口通讯速率,系统内建数据接收/发送缓冲区,这就确保了主机的数据吞吐量大于所有从机数据吞吐量之和,因此尽管串口得到扩充,但传送的数据不会丢失。

[1]谢瑞和.串行技术大全[M].北京:清华大学出版社,2003.[2]宋建国.AVR单片机原理及应用[M].北京:北京航空航天大学出版社,1998:37-41.

[3]三恒星科技.AVR单片机原理与应用实例[M].北京:电子工业出版社,2009.

[4]宏晶科技.STC12C5410AD系列单片机器件手册[EB/OL].(2009-02-05)[2010-6-10].http://www.mcu-memory.com/datasheet/stc/STC-AD-PDF/STC12C5410AD.pdf.

[5]童长飞.C8051F系列单片机开发与C语言编程[M].北京:北京航空航天大学出版社,2005.

[6]Silicon Laboratories.C8051F330 Mixed Signal ISP Flash MCU Family[EB/OL].(2006-01-06)[2010-06-10].http://www.datasheetdir.com/C8051F330+download.

[7]胡大可.MSP430系列FLASH型超低功耗16位单片机[M].北京:北京航空航天大学出版社,2001.

[8]宏晶科技.STC11/10XX系列单片机器件手册[EB/OL].(2010-05-10)[2010-06-10].http://www.mcu-memory.com/datasheet/stc/STC-AD-PDF/STC11F-10Fxx.pdf

[9]徐爱均,彭秀华.Keil Cx51 V7.0单片机高级语言编程与μVision2应用实践[M].北京:电子工业出版社,2004.

[10]赵建领.51系列单片机开发宝典[M].北京:电子工业出版社,2007.

猜你喜欢

字节寄存器中断
STM32和51单片机寄存器映射原理异同分析
No.8 字节跳动将推出独立出口电商APP
Lite寄存器模型的设计与实现
No.10 “字节跳动手机”要来了?
简谈MC7字节码
跟踪导练(二)(5)
千里移防,卫勤保障不中断
AT89C51与中断有关的寄存器功能表解
FPGA内嵌PowerPC的中断响应分析
高速数模转换器AD9779/AD9788的应用