标准同步串行口(SP)是一个高速全双工、双缓冲的串行接口,可以很方便地提供与编码器、A/D转换器等串行设备之间的通信,可实现数据的同步发送和接收,能完成8位或16位的串行通信。每个串行口都含有数据发送寄存器(DXR)、发送移位寄存器(XSR)、数据接收寄存器(DRR)和接收移位寄存器(RSR),并能以1/4机器周期频率工作。
在进行数据的接收和发送时,串行口能够产生可屏蔽的中断(RINT和XINT)分别用于指示收、发完成,通过软件来处理数据的接收和发送,整个过程由串行口控制寄存器(SPC)控制。
1.标准同步串行口(SP)结构
标准同步串行口(SP)的结构框图如图8-10所示。
图8-10 标准同步串行口(SP)的结构框图
SP由16位数据接收寄存器(DRR)、数据发送寄存器(DXR)、接收移位寄存器(RSR)、发送移位寄存器(XSR)、2个装载控制逻辑电路以及2个位/字控制计数器组成。标准同步串行口模块对外引出了外部信号引脚,分为接收和发送两组通道。接收通道用于接收同步串行信息,发送通道用于对外发送同步串行信息。表8-5列出了标准同步串行口所用到的引脚。
表8-5 SP外部引脚信号
标准同步串行口各部分的功能:
1)数据接收寄存器(DRR)。它是16位的存储器映射数据接收寄存器,用来保存来自RSR寄存器并将要写到数据总线的输入数据。复位时,DRR被清除。
2)数据发送寄存器(DXR)。它是16位的存储器映射数据发送寄存器,用来保存来自数据总线并将要加载到XSR的外部串行数据。复位时,DXR被清除。
3)数据接收移位寄存器(RSR)。它是16位的数据接收移位寄存器,用来保存来自串行数据接收(DR)引脚的输入数据,并控制数据到DRR的传输。
4)数据发送移位寄存器(XSR)。它是16位数据发送移位寄存器,用来控制来自DXR的外部数据的传输,并保存将要发送到串行数据发送引脚的数据。
5)串行口控制寄存器(SPC)。它是16位的存储器映射串行接口控制寄存器,用来保存串行接口的模式控制和状态位。
6)控制电路。它用于控制串行口协调工作,有以下两种:
①装载控制电路:完成接收和发送数据的装载。
②位/字控制计数器:完成位/字传输控制。
【例8-4】 两个TMS320C54x串行通信的连接。
两个TMS320C54x串行通信连接可以很方便地完成数据传输,图8-11给出了一种连接方式,并用以说明串行口收发数据的过程。
图8-11 两个TMS320C54x串行通信的连接方式
对于左侧TMS320C54x设备,发送过程分为以下几步:
1)发送数据装入DXR。
2)当上一个数据发送完后,DXR的数据会自动装入XSR。
3)在发送帧同步信号FSX和发送时钟信号CLKX的作用下,将XSR的数据通过引脚DX发送输出。
对于右侧TMS320C54x设备,接收过程分为以下几步:
1)在接收帧同步信号FSR和接收时钟信号CLKR的作用下,接收数据通过DR引脚移至RSR中。
2)当RSR满时,将数据装入DRR中。
3)接收端检测到数据到达即可进一步处理。
程序管理访问串行口的缓冲器的方法可选择查询法或中断法。查询法通过程序不断查询串行口控制寄存器(SPC)得到其工作状态,然后进行数据处理;中断法则设置发送、接收串行口中断,通过中断服务程序处理发送、接收数据。
当用中断法进行处理时,串行口初始化的步骤应遵从如下步骤:
1)复位和初始化串行口。给SPC寄存器写入0038h(或0008h)。具体配置为,CLKX使用内部时钟(CLKX信号作为输出),串口通信使用突发模式,使用内部帧同步信号(FSX信号作为输出)。
2)清除任何正在进行中的中断。给IFR置00C0h(XINT、RINT置位)。
3)允许串行口中断。给IMR置00C0h。
4)从整体上开放中断。将ST1中的INTM位置0。
5)启动串行口。给SPC置00F8h(或00C8h)。
6)写第一个数据值给DXR。
2.串行口控制寄存器(SPC)
TMS320C54x标准同步串行口的操作是由串行口控制寄存器(SPC)决定的。SPC各位的定义如图8-12所示。(www.xing528.com)
图8-12 串行口控制寄存器(SPC)的位结构定义
SPC有16个控制位,其中7位只能读,其余9位可以读/写。下面对SPC的各控制位的功能进行说明。
1)Res(第0位):保留位,用于TMS320C54x测试串行口代码。在串行接口总读为0。
2)DLB(第1位):数字回送模式位,用于设置串行接口为数据回送模式。
①当DLB=0时,为禁止数据回送模式。DR、FSR和CLKR信号来自它们各自的器件引脚。
②当DLB=1时,为使能数据回送模式。通过图8-13a和图8-13b所示的多路复用器,将DR和FSR信号分别连接到DX和FSX。另外,如果MCM=1,则输出时钟CLKR由片内时钟CLKX驱动;如果MCM=0,则输出时钟CLKR来自器件的CLKR引脚。该配置允许CLKX和CLKR在外部连接在一起,并且由同一个时钟源提供时钟。图8-13c所示为CLKR的逻辑结构。
图8-13 串行口接收器多路开关
3)FO(第2位):数据格式位,该位用于定义串行口发送/接收数据的字长。当FO=0时,发送/接收数据按16位传输。当FO=1时,发送/接收数据按8位传输,先送高8位。
4)FSM(第3位):帧同步模式位,该位规定串行口工作时,在初始帧同步脉冲之后是否还要求FSX和FSR帧同步脉冲。当FSM=0时,串行口工作在连续方式,在初始帧同步脉冲之后不需要帧同步脉冲,但是如果出现定时错误的帧同步,将会造成串行传送出错。当FSM=1时,串行口工作在字符组方式,即每发送/接收一个字都要求一个帧同步脉冲FSX/FSR。
5)MCM(第4位):时钟模式位,用来设定CLKX的时钟源。当MCM=0时,CLKX配置成输入,采用外部时钟源。当MCM=1时,CLKX配置成输出,采用内部时钟源。片内时钟频率是CLKOUT频率的1/4。
6)TXM(第5位):发送模式位,用于设定帧同步脉冲FSX的来源。当TXM=0时,FSX设置成输入,由外部提供帧同步脉冲。发送时,发送器处于空转状态,直到FSX引脚上提供帧同步脉冲。当TXM=1时,FSX设置成输出,由片内产生帧同步脉冲。每次发送数据的开头由片内产生一个帧同步脉冲。
7)(第6位):发送复位位,用来对串行口发送器进行复位。当时,串行口处于复位状态,停止操作。当XRST=1时,串行口处于工作状态。
8)(第7位):接收复位位,用来对串行口接收器进行复位。当时,串行口处于复位状态,停止操作。当时,串行口处于工作状态。
9)IN0(第8位):接收时钟状态位,用于显示接收时钟CLKR的当前状态。
10)IN1(第9位):发送时钟状态位,用于显示发送时钟CLKX的当前状态。
11)RRDY(第10位):接收准备好位,用于检测接收移位寄存器(RSR)接收数据的状态。RRDY由0变1,表示RSR中的内容已复制到接收数据寄存器(DRR)中,同时串行口产生接收中断RINT。
12)XRDY(第11位):发送准备好位,用于检测发送寄存器(DXR)发送数据的状态。XRDY由0变1,表示DXR中的内容已复制到发送移位寄存器(XSR)中,同时串行口产生发送中断XINT。
13)(第12位):发送移位寄存器空位,用于反映发送移位寄存器的状态。当发生以下三种情况之一时,,暂停发送数据,即发送移位寄存器(XSR)已空而DXR仍未加载、发送器复位()或复位DSP(RS=0)。
14)RSRFULL(第13位):接收移位计数器满,用来反映接收移位寄存器的状态,高电平有效。当RSRFULL=1时,表示RSR已满。在FSM=1时,若同时满足以下三个条件:①上次从RSR传到DRR的数据还没有读出,②RSR已满,③一个帧同步脉冲已出现在FSR端,则RSRFULL=1;在FSM=0时,若满足前两个条件,则RSRFULL=1。当下述三种情况之一发生时,即读取DRR中的数据、接收器复位()或复位DSP(RS=0),则RSRFULL=0。
15)Free(第15位)、Soft(第14位):仿真控制位,用于调试程序遇到断点时决定串行口的时钟状态。Free和Soft的组合功能见表8-6。
表8-6 Free、Soft组合功能
3.标准同步串行口(SP)的使用操作
下面以实例说明标准同步串行口操作的步骤,以TMS320VC5402为例,要用标准同步串行口(SP)实现数据通信,处理时使用中断方式。那么程序需要做两项工作:串口初始化、串行中断服务程序处理。
(1)串口初始化
1)复位,并且把0038h(或0008h)写到SPC,初始化串行接口。
2)把00C0h写到IFR,清除任何挂起的串行接口中断。
3)把00C0h和IMR进行求或逻辑运算,使能串行接口中断。
4)清除ST1的INTM位,使能全局中断。
5)把00F8h(或00C8h)写入SPC,启动串行接口。
6)把第一个数据写到DXR。如果这个串行接口与另一个处理器的串行接口连接,而且这个处理器产生一个帧同步信号SFX,则在写这个数据之前必须有握手信号。
(2)串口中断服务程序处理
2)读DRR或写DXR,或者同时进行两种操作。从DRR读出的数据写到存储器的预定单元,写到DXR的数据从存储器的指定单元取出。
3)恢复现场。
4)用RETE从中断子程序返回,并重新使能中断。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。