自动化专业毕业设计翻译正文 联系客服

发布时间 : 星期六 文章自动化专业毕业设计翻译正文更新完毕开始阅读9f6e2f50b307e87101f69660

16.3 USCI 的运行:SPI 模式

在 SPI 模式下,数据的发送和接收是由多个器件共享一个由时钟运行的,该时钟是由一个主机提供的。一个额外的引脚:UCxSTE,是用来使一个器件能够执行接收和发送数据功能,它由主机控制。 三个或四个信号用于 SPI 的数据交换

UCxSIMO:是指从模式输入,主模式输出:主模式下 UCxSIMO 是数据输出线;从模式下 UCxSIMO是数据输入线。

UCxSOMI:是指主模式输入、从模式输出:主模式下 UCxSOMI 是数据输入线;从模式下 UCxSOMI是数据输出线

UCxCLK:USCI SPI 的时钟,主模式:UCxCLK 是一种输出,从模式是一种输入。 UCxSTE:从模式下的发送使能端。用于 4 个引脚的模式中,且允许在一条单总线上有多个主机,但不用于 3 脚模式。表格 16-1 描述了 UCxSTE 运行模式。

Table 16-1 UCxSTE 运行模式 UCMODEx UCxSTE有效状UCxSTE活动 从机 主机 态 01 高 0 不活动 活动 1 活动 不活动 不活动 10 低 0 活动 1 不活动 活动

16.3.1 通用串行通信接口的初始化和复位

通用串行通信接口的复位功能是由一个PUC或者由UCSWRST位来完成。一个PUC之后,UCSWRST 位会自动置“1”,使 USCI 保持在一个复位的情况下。当 UCSWRST 位被置“1”时,它会使UCRXIE、UCTXIE、UCRXIFG、UCOE 和 UCFE 位复位,同时令 UCTXIFG 位置“1”。清除 UCSWRST位会使 USCI 处于运行状态。

注意:初始化或者重配置 USCI 模块

推荐的 USCI 初始化/重配置过程如下:

1、 令 UCSWRST=1;(BIS,B # UCSWRST,&UCxCTL1);

2、 当 UCSWRST=1 时初始化所有 USCI 寄存器(包括 UCxCTL1); 3、 配置端口;

4、 通过软件令 UCSWRST=0(BIC ,B #UCSWRST,&UCxCTL1); 5、 通过 UCRXIE 和/或 UCTXIE 使中断能够工作(可选择的)。

16.3.2 字符格式

在 SPI 模式下的 USCI 模块支持由 UC7BIT 位选择的 7~8 位字符长度。在 7 位数据模式下,“LSB是按要求进行的,而 MSB 是一直复位”UCNSB 位控制着数据发送的方向且选择低位在前还是高位在前。

注意:字符格式缺省

发送时 SPI 字符缺省值的情况下是低位在前。考虑到与其它的 SPI 接口进行通信,也许会需要它的高位在前的模式。

注意:图形的字符格式

本章所有的图像都是用高位在前的模式。

16.3.3 主模式

图16-2说明了在3脚或者4脚的配置总USCI作为一个主机。当数据移动到数据发送缓冲区时,USCI 开始数据发送。当 TX 移位寄存器为空的时候,缓冲区的数据呗移动到 TX 移位寄存器,开始在 UCxSIMO 口进行数据发送,并且该口同时开始由 UCMSB 位的设置决定的高位在前还是低位在前模式。在相反的时钟边沿,在 UCxSOMI 端的数据被移位到数据接收寄存器。当字符数据被接收时,被接收的数据就会从RX寄存器被移动到数据接收缓冲区,UCxRXBUF而且接收中断标志位UCRXIFG 被置“1”,这就意味着数据的接收和发送工作已经完成。令发送中断标志位UCTXIFG=1 意味着数据已经从接收缓冲区被移动到发送移位寄存器,而且数据发送缓冲区已经准备好了发送一组新的数据,但并不意味着数据的发送和接收的工作已经完成了。

在主模式下,为了接收数据到 USCI,数据必须被写到发送缓冲区,因为数

据的接受和发送是并行工作的。 16.3.4 从模式

图 16-3 表示了在 3 脚和 4 脚的配置中的 USCI。UCxCLK 用于 SPI 的时钟输入而且必须有外部主机供电(supply)。数据移动的速率是由这个时钟决定的而不是由内部的位时钟发生器决定的。在 SPI 输入时钟被发送到

UCxSOMI 口之前就要把数据写到发送缓冲区并移动到发送移位寄存器。在时钟的另一边沿在UCxSIMO 端的数据要被移动到接受移位寄存器里,并且要在当这一组数据被接收时把 UCxSIMO 发出的数据移动到接收缓冲区。当数据由接受移位寄存器移动到接收缓冲区时,接收的中断标志位被置“1”,表明了数据已被接收。当之前传送的数据在新的数据到来之前没有被接收缓冲区读到时会出现超限错误,同时超限错误标志位被置“1”。 16.3.5 SPI 使能

当通过清除 UCSWRST 位来使 USCI 模块工作时,说明它已经准备好了数据的接收和发送。主模式下位时钟产生器已经准备好了,但不用于计时或者产生任何时钟。从模式下位时钟产生器被停止而由主机来提供时钟。发送或者接收的工作提示是由 UCBUSY=1 来说明的。一个 PUC 或者令

UCSWRST=1 将会使 USCI 立刻停止,并且任何活动的传输都被终止。

发送使能

在主模式下,向发送数据的缓冲区写数据会激活位时钟产生器而且数据也开始了发送。从模式下, 当一个主机提供一个时钟时数据才开始发送,而且在 4 脚模式中,还得需要 UCxSTE处于活动状态。

接收使能

当发送处于激活状态时,SPI 接收数据。接收和发送的工作同时运行。 16.3.6 串行时钟控制

UCxCLK由 SPI 总线上的主机提供。当 UCMST=1 时,位时钟是由 UCxCLK 引脚上的 USCI位时钟产生器提供。之前的位时钟发生器被选作了 UCSSELx 位当 UCMST=0 时,USCI 时钟是由主机的 UCxCLK 引脚提供,此时位时钟产生器没有使用,并且 UCSSELx 位并不在意。SPI 的数据接收器和发送器并行工作同时使用同个时钟源。位于位速率控制寄存器 UCxxBR1 和 UCxxBR0 中的 16 位值的 UCBRx 是 USCI 时钟源的关键因素。主模式下产生的最大的位时钟是 BRCLK。在 SPI 模式中不使用调制的方法,同时 SPI 模式时的USCI-A模 块 下UCAxMCTL应 该 被 清 零 。 UCAxCLK/UCBxCLK

的 频 率 公 式 如 下 :fBitClock = fBRCLK /UCBRx

串行时钟的极性与相位

UCxCLK 的极性和相位是通过 USCI 的 UCCKPL 和 UCCKPH 控制位而被独立配置的。每种情况下的时钟都显示在图 16-4 中。

16.3.7 将 SPI 模式用于低功率的模式

为了运用低功率模式,USCI 模块提供了自动的时钟供电。当 USCI 的时钟源由于仪器在一个低功率模式下而停止工作,USCI 模块在需要的时候就会自动地使时钟工作。当 USCI 模块回到停滞的状态时时钟仍然处于工作状态。USCI模块回到停滞的状态后,时钟源的控制还原到其控制位的设置上。

在 SPI 从模式下不需要内部时钟源,因为时钟是由外部的主机提供的。在机器是LPM4 且所有时钟源都没有工作的情况下而在从模式下操纵USCI是有可能的。接收或者发送的中断的信号都可以在任何低工作模式下激活 CPU。

16.3.8 SPI 中断

USCI 只有一个由发送和接收共享的一个中断向量。USCI-Ax 和 USCI-Bx 不共享同一个中断向量。 SPI 发送中断的运行

发送中断标志位 UCTXIFG 是由发送器置“1”的,以便用来指示发送缓冲区 UCxTXBUF 做好接收下一个字符的准备。如果 UCTXIE 和 GIE 也被置位“1”,那么一个中断到来的时候就会产生一个中断请求。如果一个字符被写入发送数据缓冲区那么UCTXIFG就会被自动地复位。当一个 PUC或者UCSWRST=1 时 UCTXIFG 被置“1”而且 UCTXIE 被复位。

注意:SPI 模式下写数据到 UCxTXBUF

当 UCTXIFG=0 时写入发送缓冲区的数据可能会导致错误的数据发送。

SPI 接收中断的运行

每次当接收一个字符并把字符装载到数据接收缓冲区时接收数据的中断标志位 UCRXIFG 就会被置“1”。当 UCRXIE 和 GIE 被置“1”时也会有一个中断请求的发生。UCRXIFG和UCRXIE也会由一个PUC 复位信号或者UCSWRST=1 的系统来复位。当读取接受数据缓冲区时接受中断标志位会自动复位 中断向量发生器:UCxIV

USCI 的中断向量标志位具有先后次序且被联合起来产生一个单一的中断向量。中断向量寄存器UCxIV 被用来决定哪个标志位请求中断。最高优先级的标志位使中断在寄存器里产生一个能够被计算或者能够加到程序计数器里的数值,目的是自动地进入到恰当的软件流程。没有作用的中断将不会影响中断向量寄存器的值。

UCxIV 的软件编程实例:

USCI-SPI-ISR

ADD &UCB0IV,PC ; 把偏移地址加到跳转的表格上

RETI ;

JUMP RXIFG-ISR ;

向量 0:没有中断

向量 2:接受中断标志位 TXIFG-ISR … RETI RXIFG-ISR … RETI

;

向量 4:发送中断标志位 ;

中断任务开始执行 ; 返回 向量 2

;

终端任务开始执行 ;

返回

;