MSP432的SPI通信模式

  • Post author:
  • Post category:其他



目录


2.3 MSP432的SPI通信模式


2.3.1 SPI的主机模式


2.3.2 SPI的从机模式


2.3.3 串行时钟控制


2.3.3 SPI中断


2.3.4 SPI模式——eUSCI寄存器


2.3 MSP432的SPI通信模式

MSP432单片机的eUSCI_A和eUSCI_B模块都支持SPI通信模式,板载SPI接口资源见下图:

MSP432的SPI通信模块特点如下:


  1. 7位or8位数据长度;

  2. 最高有效位在前或者最低有效位在前的数据发送和接收;

  3. 支持3线or4线SPI操作;

  4. 支持主机模式或从机模式;

  5. 具有独立的发送和接收移位寄存器和缓冲寄存器;

  6. 具有连续发送和接收能力;

  7. 时钟的极性和相位可编程;

  8. 主模式下,时钟频率可编程;

  9. 具有独立的接收和发送中断能力。

配置

寄存器UCATLW0/UCBTLW0



UCSYNC控制位

,控制eUSCI模块工作在SPI模式;配置

UCMODEx控制位

,控制SPI模块工作在3线or4线通信模式。SPI工作模式下的eUSCI模块结构框图如下:

SPI模式下,eUSCI模块由3个部分组成:①SPI接收逻辑(接收移位寄存器、接收缓冲寄存器、接收状态机),②SPI时钟发生器(产生SPI通信过程所需的时钟信号),③SPI发送逻辑(发送缓冲寄存器、发送移位寄存器、发送状态机)。

2.3.1 SPI的主机模式

当控制

寄存器UCATLW0/UCBTLW0



UCMST=1

时,MSP432的SPI通信模块工作在主机模

式:


  • eUSCI模块通过在UCxCLK引脚输出的时钟信号控制串行通信;

  • 当发送移位寄存器为空时,已写入发送缓冲器的数据将移入发送移位寄存器,并启动UCxSIMO引脚发送(

    UCMSB控制位

    控制数据发送是最高有效位or最低有效位在前),当发送缓冲区为空时,中断标志位

    UCTXIFG

    置位,标志数据发送完成;

  • 在与发送数据时相反的时钟沿处


    ,UCxSOMI引脚上的数据移入接收移位寄存器,当接收完所有选定位数时,接收移位寄存器中的数据移入接收缓冲寄存器,接收

    中断标志位UCRXIFG

    置为,标志数据接收完成。

  • 当数据的发送与接收都完成时,

    UCAxSTATW


    寄存器



    标志位UCBUSY=0

    ,反之为1





2.3.2 SPI的从机模式



当控制

寄存器UCATLW0/UCBTLW0



UCMST=0

时,MSP432的SPI通信模块工作在从机模式:


  • 从机的UCxCLK引脚为输入状态,SPI通信所用时钟来源于外部主机;

  • 发送缓冲寄存器移入发送移位寄存器的数据在主机UCxCLK信号作用下,通过从机的UCxSOMI引脚发送给主机,当发送缓冲区为空时,中断标志位

    UCTXIFG

    置位,标志数据发送完成。

  • 在与发送数据时相反的时钟沿处


    ,UCxSIMO引脚上的串行数据移入接收移位寄存器,当接收移位寄存器中的数据全部移入接收缓冲寄存器时,置位接收

    中断标志位UCRXIFG

    ,标志数据接收完成。当新数据被写入接收缓冲寄存器时,前一个数据还没有被取出时,则

    溢出标志位UCOE

    置位。

  • 当数据的发送与接收都完成时,

    UCAxSTATW


    寄存器



    标志位UCBUSY=0

    ,反之为1



2.3.3 串行时钟控制

若标志位UCMST=1,则表示SPI模块工作主机模式下,SPI模块的时钟发生器提供串行通信所需同步时钟,并由UCxCLK引脚输出。

根据时钟发生器结构图可知,

UCAxCTLW0寄存器



UCSSELx控制位

控制eUSCI时钟源BRCLK的选择,

UCAxBRW寄存器

的值UCxBRx控制BRCLK时钟源的分频因子,

UCAxCTLW0寄存器



CKPH



UCCKPL控制位

分别控制时钟相位与极性。


时钟频率

为:
f_{SCK}=f_{BRCLK}/UCBRx


时钟相位



时钟极性


MSP432的通信时序图:


PS:


1.在SPI模式下不使用调制,在eUSCI_A使用SPI模式时应清除UCAxMCTLW寄存器。


2. SPI的接收器和发送器并行工作,数据传输使用同一个时钟源,设备在一个时钟边沿发送数据,在另一个边沿接收数据。当MCU做从机时,时钟发生器虽然不需要提供串行时钟,但仍需设置时钟极性与相位,且与主机一致。

2.3.3 SPI中断

以eUSCI_A为例,

与SPI中断相关的寄存器

如下:


1. SPI发送中断操作:

使能发送中断(UCTXIE=1),当发送缓冲寄存器为空时,中断标志位UCTXIFG置位,产生中断请求。当将字符写入发送缓存寄存器时,中断标志位UCTXIFG自动复位。因此,可利用发送中断服务程序不断向发送缓冲寄存器写入新的数据。


PS:当UCTXIFG=0时,写数据至发送缓存寄存器,可能会导致错误数据发送。


2. SPI接收中断操作:

使能接收中断(UCRXIE=1),当接收缓冲寄存器接收所有选定位数的数据时,中断标志位UCRXIFG置位,产生中断请求。当接收缓存寄存器被读取时,中断标志位UCRXIFG自动复位。因此,可利用接收中断服务程序完成数据的接收。


3. eUSCI中断向量UCxIV

eUSCI模块只有一个中断向量,发送和接收共用该向量。eUSCI _Ax和eUSCI _Bx不共用同一个中断向量。

eUSCI中断标志具有不同的优先级,它们组合共用一个中断向量,即eUSCI为多源中断。中断向量寄存器UCxIV用来决定哪个中断标志请求产生中断。优先级最高的中断将会在UCxIV寄存器内产生一个数字偏移量,这个偏移量累加到程序计数器PC上,程序自动跳转到相应的软件程序处。禁止中断不会影响UCxIV的值。对UCxIV寄存器的任何读或写访问,都会复位挂起优先级最高的中断标志.如果另一个中断标志置位,在响应完之前的中断后,将会立即产生另一个中断。

2.3.4 SPI模式——eUSCI寄存器



版权声明:本文为qq_43855258原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。