ZHCUAN6E October 2022 – May 2025 MSPM0L1105 , MSPM0L1106 , MSPM0L1116 , MSPM0L1117 , MSPM0L1227 , MSPM0L1227-Q1 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L1303 , MSPM0L1304 , MSPM0L1304-Q1 , MSPM0L1305 , MSPM0L1305-Q1 , MSPM0L1306 , MSPM0L1306-Q1 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346 , MSPM0L2227 , MSPM0L2227-Q1 , MSPM0L2228 , MSPM0L2228-Q1
Motorola SPI 接口是一个 4 线接口,其中 CS 信号充当外设选择。在 3 线模式下,不需要 CS 信号,并且模块的行为就像始终选中一样。Motorola SPI 格式的主要特点是:可以通过 SPIx.CTL0 控制寄存器中的 SPO 和 SPH 位,对 SCLK 信号的非活动状态和相位进行编程。
SPO 时钟极性位
如果 CTL0.SPO 时钟极性控制位清零,则当不传输数据时,该位会在 SCLK 引脚上产生一个稳态低电平值。如果设置了 CTL0.SPO 位,则当不传输数据时,该位会在 SCLK 引脚上放置一个稳态高电平值。
SPH 相位控制位
CTL0.SPH 相位控制位用来选择捕捉数据的时钟边沿,并允许边沿改变状态。该位的状态对发送的第一个位影响最大,即允许或不允许在第一个数据捕捉边沿之前进行时钟转换。如果 CTL0.SPH 相位控制位清零,则在第一个时钟边沿转换时捕捉数据。如果 SPH 位为高,则在第二个时钟边沿转换时捕获数据。
SPO = 0 和 SPH = 0 时的 Motorola SPI 帧格式
图 23-4 显示了 SPO = 0 和 SPH = 0 时 Motorola SPI 格式的信号序列。
在此配置中,空闲期间会发生以下情况:
如果启用了 SPI 并且 TX FIFO 中存在有效数据,则 CS 控制器信号在发送开始时被驱动为低电平,这会导致使外设数据能够进入到控制器的 POCI 输入线路上。此时将启用控制器 PICO 输出引脚。
半个 SCLK 周期后,有效的控制器数据会传输到 PICO 引脚。一旦同时设置了控制器和外设数据,SCLK 控制器时钟引脚就会在额外的半个 SCLK 周期后变为高电平。现在,将在 SCLK 信号的上升沿捕捉数据,并在下降沿传播数据。
对于单字传输,在传输数据字的所有位之后,CS 线路会在最后一个位被捕捉后的一个 SCLK 周期内返回其 IDLE 高电平状态。对于连续的背靠背传输,CS 信号必须在每个数据字传输之间产生高脉冲,因为当 SPH 位清零时,外设选择引脚会冻结其串行外设寄存器中的数据,并且不允许更改数据。控制器器件必须在每次数据传输之间拉高外围器件的 CS 引脚,以启用串行外设数据写入。当连续传输完成时,CS 引脚将在最后一个位被捕捉后的一个 SCLK 周期内返回到其 IDLE 状态。
SPO = 0 和 SPH = 1 时的 Motorola SPI 帧格式
图 23-5 显示了 SPO = 0 和 SPH = 1 时 Motorola SPI 格式的信号序列。
在此配置中,空闲期间会发生以下情况:
如果启用了 SPI 并且 TX FIFO 中存在有效数据,则 CS 控制器信号在开始发送时变为低电平。此时将启用控制器 PICO 输出。在额外的半个 SCLK 周期之后,控制器和外设有效数据都将能够进入到各自的发送线路上。同时,利用上升沿转换启用 SCLK。然后,在 SCLK 信号的下降沿捕捉数据,并在上升沿传播数据。
对于单字传输,在传输所有位之后,CS 线路会在最后一个位被捕捉后的一个 SCLK 周期内返回其 IDLE 高电平状态。对于连续的背靠背传输,CS 引脚在连续数据字之间保持低电平,并像单字传输一样终止。
SPO = 1 和 SPH = 0 时的 Motorola SPI 帧格式
图 23-6 显示了 SPO = 1 和 SPH = 0 时 Motorola SPI 格式的信号序列。
在此配置中,空闲期间会发生以下情况:
如果启用了 SPI 并且 TX FIFO 中存在有效数据,则 SPI CS 控制器信号在开始发送时变为低电平,并立即将外设数据传输到控制器的 POCI 线路上。此时将启用控制器 PICO 输出引脚。
半个 SCLK 周期后,有效的控制器数据会传输到 PICO 线路上。当控制器和外设数据都已设置时,SCLK 控制器时钟引脚在一个额外的半个 SCLK 周期后变为低电平。然后,在 SCLK 信号的下降沿捕捉数据,并在上升沿传播数据。
对于单字传输,在传输数据字的所有位之后,CS 线路会在最后一个位被捕捉后的一个 SCLK 周期内返回其 IDLE 高电平状态。对于连续的背靠背传输,CS 信号必须在每个数据字传输之间产生高脉冲,因为当 SPH 位清零时,外设选择引脚会冻结其串行外设寄存器中的数据,并防止更改数据。控制器器件必须在每次数据传输之间拉高外围器件的 CS 引脚,以启用串行外设数据写入。当连续传输完成时,CS 引脚将在最后一个位被捕捉后的一个 SCLK 周期内返回到其 IDLE 状态。
SPO = 1 和 SPH = 1 时的 Motorola SPI 帧格式
图 23-7 显示了 SPO = 1 和 SPH = 1 时 Motorola SPI 格式的信号序列。
在此配置中,空闲期间会发生以下情况:
如果启用了 SPI 并且 TX FIFO 中存在有效数据,则通过 CS 控制器信号变为低电平来指示开始发送。此时将启用控制器 PICO 输出引脚。在额外的半个 SCLK 周期之后,控制器和外设数据都将能够进入到其各自的发送线路上。同时,利用下降沿转换启用 SCLK。然后,在 SCLK 信号的上升沿捕捉数据,并在下降沿传播数据。
对于单字传输,在传输所有位之后,CS 线路会在最后一个位被捕捉后的一个 SCLK 周期内返回其 IDLE 高电平状态。对于连续的背靠背传输,CS 引脚保持在其低电平有效状态,直到最后一个字的最后一个位被捕捉,然后返回其 IDLE 状态。对于连续的背靠背传输,CS 引脚在连续数据字之间保持低电平,并像单字传输一样终止。
串行时钟 (SCLK) 在 SPI 空闲时保持非活动状态,并且 SCLK 仅在正在发送或接收数据期间以编程频率进行转换。如果 RX FIFO 在超时期间之后仍包含数据,则会发生接收超时,而 SCLK 的 IDLE 状态会提供相应的超时指示。