历史上的今天
返回首页

历史上的今天

今天是:2025年03月30日(星期日)

正在发生

2021年03月30日 | MC9S12XEP100的SPI模块(S12SPIV5)

2021-03-30 来源:eefocus

介绍

SPI模块实现了MCU与外设设备间的双工同步串行通信。软件可以通过轮询标志位或者异步中断通知的方式来与SPI模块交互。


术语缩写

缩写全称(英)全称(中)
SPISerial Peripheral Interface串行外设接口
SSSlave Select从机选定
SCKSerial Clock串行时钟
MOSIMaster Output, Slave Input主(机)(输)出从(机)(输)入
MISOMaster Input, Slave Output主入从出
MOMIMaster Output, Master Input主入主出
SISOSlave Input, Slave Output从入从出

特性

SPI模块包含以下特性:

  • 可以设置为主节点或从节点

  • 可选传输数据宽度为8或16位

  • 单线双向(Bidirectional,译者注:直译为“双向”,但意思上看应该是指单线双向,因为SPI本身就是双向的,所以后面译为“单线双向”)模式

  • 从机选定信号输出

  • 带有中断功能的模式故障错误标志位

  • 双缓冲数据寄存器

  • 可通过编程更改极性和相位的串行时钟

  • 控制SPI在等待模式下运作


运行模式

SPI模块可以在三种模式下运行:run、wait和stop。

  • Run模式
    这是基本的运行模式

  • Wait模式
    在wait模式中运行的SPI是一个可配置的低能耗模式,由SPICR2寄存器内的SPISWAI位控制。在wait模式下,如果SPISWAI位为0,SPI就会如在run模式下一样运行。如果SPISWAI位为1,SPI会进入低能耗状态,SPI时钟生成会被关闭。如果SPI被配置为主机,任何进行中的传输都会停止,但是会在CPU进入run模式后恢复。如果SPI被配置为从机,数据的接收和传输会继续,这样从机就能与主机保持同步。

  • Stop模式
    为了节能,SPI在stop模式下是不活跃的。如果SPI被配置为主机,任何进行中的传输都会停止,但是会在CPU进入run模式后恢复。如果SPI被配置为从机,数据的接收和传输会继续,这样从机就能与主机保持同步。

想了解细节的话,请参阅4.7“低能耗模式选项”。


框图

下图给出了SPI架构的综览。SPI模块主要由状态、控制和数据寄存器、移位逻辑、波特率生成器、主/从控制逻辑和端口控制逻辑构成。

SPI框图
图 1.SPI框图

引脚描述

这个部分列出了所有可能会与外部芯片连接的端口。SPI模块总共有4个外部引脚。

MOSI — 主出/从入引脚

当配置为主机时,这个引脚用于把数据传出SPI模块;当配置为从机时,用于接收数据。

MISO — 主入/从出引脚

当配置为从机时,这个引脚用于把数据传出SPI模块;当配置为主机时,用于接收数据。

大SS — 从机选定引脚

当配置为主机时,这个引脚用于从SPI模块输出选定信号到要接收数据的外设;当配置为从机时,用于接收从机选定信号。

SCK — 串行时钟引脚

在主机模式下,这是同步时钟输出引脚;在从机模式下,这是同步时钟接收引脚。

内存映射与寄存器定义

这个部分提供了SPI模块的地址空间与寄存器的细节描述。

模块内存映射

图2给出了SPI模块的内存映射。每个寄存器前列出的地址指的是偏移量。基地址定义在SoC等级,地址偏移定义在模块等级。读保留位会返回0,写保留位没有任何用处。

SPI寄存器总结
图 2.SPI寄存器总结

寄存器描述

这个部分按照地址顺序描述了每个寄存器。每个描述都包含带有相关数字的标准寄存器图。然后紧跟着寄存器位和字段功能的描述,按照位顺序。

SPI控制寄存器1(SPICR1)

SPI控制寄存器1
图 3. SPI控制寄存器1

读:随时
写:随时

表 2. SPICR1字段描述

字段描述
7
SPIE
SPI 中断使能位 — 如果SPIF或者MODF状态标志位被置位,这个位会使能SPI中断请求。
0 禁用SPI中断。
1 使能SPI中断
6
SPE
SPI 系统使能位 — 这个位会使能SPI系统并把SPI端口引脚赋予SPI系统使用。如果SPE被清零,SPI就会被禁用并强制进入空闲状态,SPISR寄存器内的状态位会被重置。
0 禁用SPI(低能耗)。
1 使能SPI,端口引脚赋予SPI模块使用。
5
SPTIE
SPI 传输中断使能 — 如果SPTEF标志位被置位,这个位会使能SPI中断请求。
0 禁用SPTEF中断。
1 使能SPTEF中断
4
MSTR
SPI 主/从模式选择位 — 这个位用于选择SPI是主机还是从机。将SPI从主机切换为从机或反之会强迫SPI系统进入空闲状态。
0 SPI从机模式。
1 SPI主机模式
3
CPOL
SPI 时钟极性位 — 这个位用于选择SPI时钟是否反相。想要在SPI模块间传输数据的话,SPI模块必须使用相同的CPOL值。在主机模式下,改变这个位会导致进行中的传输被抛弃并强制SPI系统进入空闲状态。
0 使用高有效时钟。在空闲状态下SCK是低电平。
1 使用低有效时钟。在空闲状态下SCK是高电平。
2
CPHA
SPI 时钟相位位 — 这个位用于选择SPI时钟格式。在主机模式下,改变这个位会导致进行中的传输被抛弃并强制SPI系统进入空闲状态。
0 在奇数边沿进行数据采样。
1 在偶数边沿进行数据采样。
1
SSOE
从机选定输出信号使能 — SS输出特性与这个位以及MODFEN位有关,详见表3。在主机模式下,改变这个位会导致进行中的传输被抛弃并强制SPI系统进入空闲状态。
0
LSBFE
使能LSB-First — 这个位不影响数据寄存器内的字节序。读写数据寄存器时总是在最高bit放MSB。在主机模式下,改变这个位会导致进行中的传输被抛弃并强制SPI系统进入空闲状态。
0 最高有效位优先传输。
1 最低有效位优先传输。

表3. SS 输入/输出选择

MODFENSSOE主机模式从机模式
00SS 不被SPI使用SS 为输入
01SS 不被SPI使用SS 为输入
10有MODF特性的SS 输入SS 为输入
11SS 是从机选择输出SS 为输入

SPI控制寄存器2(SPICR2)

SPI控制寄存器2
图 4.SPI控制寄存器2(SPICR2)

读:随时
写:随时;写保留的位没有任何用。

表 4. SPICR2 字段描述

字段描述
6
XFRW
传输宽度 — 这个位用于选择传输数据的宽度。如果选择了8位传输宽度,SPIDRL就是专门的数据寄存器,SPIDRH无用。如果选择了16位传输宽度,SPIDRH和SPIDRL就形成了一个16位数据寄存器。参阅3.2.4 “SPI状态寄存器(SPISR)”了解更多关于传输/接收数据处理以及中断标志位清零机制的信息。在主机模式下,改变这个位会导致进行中的传输被抛弃并强制SPI系统进入空闲状态。
0 8位传输数据宽度(n=8)1。
1 16位传输数据宽度(n=16)1。
4
MODFEN
模式故障使能位 — 这个位会使能MODF故障探测。如果SPI处于主机模式并且MODFEN被清零了,那么SS引脚就不受SPI模块控制。在从机模式下,不管MODFEN的值是什么,SS 都是输入引脚。参阅表3获得MODFEN对SS 的作用的综述。在主机模式下,改变这个位会导致进行中的传输被抛弃并强制SPI系统进入空闲状态。
SS 端口引脚不被SPI模块使用。
1 带MODF特性的SS 端口引脚。
3
BIDIROE
单线双向模式下输出使能 — 在单线双向运行模式下(SPC0=1),这个位用于控制MOSI和MISO输出缓存。在主机模式下,这个位控制MOSI端口的输出缓存,在从机模式下,它控制MISO端口的输出缓存。在主机模式下,SPC0从0变为1会导致进行中的传输被抛弃并强制SPI系统进入空闲状态。
0 禁用输出缓存。
1 使能输出缓存。
1
SPISWAI
Wait模式下SPI模块停止 — 这个位用于在wait模式下节能
0 SPI时钟在wait模式下正常运行。
1 在wait模式下停止SPI时钟生成。
0
SPC0
串行引脚控制位0 — 这个位用于使能单线双向引脚配置,详见表5。在主机模式下,改变这个位会导致进行中的传输被抛弃并强制SPI系统进入空闲状态。

1. n在后面用作选择的传输宽度的占位符

表 5. 单线双向引脚配置
单线双向引脚配置

SPI波特率寄存器(SPIBR)

SPI波特率寄存器(SPIBR)
图 5.SPI波特率寄存器(SPIBR)

读:随时
写:随时;写入保留的位没有任何作用。

表 6.SPIBR字段描述

字段描述
6-4
SPPR[2:0]
SPI波特率预选位 — 这几位如表7中那样决定了SPI波特率。在主机模式下,改变这个位会导致进行中的传输被抛弃并强制SPI系统进入空闲状态。
2-0
SPR[2:0]
SPI波特率选择位 — 这几位如表7中那样决定了SPI波特率。在主机模式下,改变这个位会导致进行中的传输被抛弃并强制SPI系统进入空闲状态。

波特率分频系数表达式如下:

然后如下计算出波特率:

  • 注意:
  • 请查阅这个数据手册的电气章节的SPI电气规范来了解允许的最小波特率。

表 7.SPI波特率选择示例(25MHz总线时钟)
SPI波特率选择示例(25MHz总线时钟)

SPI状态寄存器(SPISR)

SPI状态寄存器(SPI)
图 6.SPI状态寄存器(SPISR)

读:随时
写:没有作用

表 8.SPISR字段描述

字段描述
7
SPIF
SPIF 中断标志位 — 在数据被传输入SPI数据寄存器后这个位被置位。参阅表9了解如何清零SPIF标志位。
0 传输未完成。
1 新数据已被拷贝进SPIDR。
5
SPTEF
SPI发送器空中断标志位 — 如果被置位,说明数据发送寄存器已经空了。参阅表9了解如何清零这个位并放置数据进数据发送寄存器。
0 SPI数据寄存器非空。
1 SPI数据寄存器空。
4
MODF
模式故障标志位 — 当SPI被配置为主机并且SPICR2寄存器的MODFEN位被置位即启用了模式故障探测后,如果探测到SS引脚被拉低,这个位被置位。详情请参阅3.2.2 “SPI控制寄存器2(SPICR2)”的MODFEN位描述。通过(当MODF=1时)读取一次SPI状态寄存器然后写入SPI控制寄存器1,这个标志位就会自动清零。
0 没有发生模式故障。
1 发生了模式故障。

表 9.SPIF中断标志位清零序列
SPIF中断标志位清零序列

表 10.SPTEF中断标志位清零序列
SPTEF中断标志位清零序列

SPI数据寄存器(SPIDR = SPIDRH:SPIDRL)

SPI高位数据寄存器
图 7.SPI高位数据寄存器

SPI低位数据寄存器
图 8.SPI低位数据寄存器

读:随时;只有在SPIF被置位时读的数据才有效
写:随时

SPI数据寄存器同时作为SPI数据的输入和输出寄存器。写入这个寄存器会让数据按序传输。对于配置为主机的SPI,数据序列会在前一个传输完成后立刻开始传输。SPI发送器将SPISR寄存器内的SPTEF标志位清零说明SPI数据寄存器已经准备好接受新数据了。当SPIF被置位了,说明SPIDR里接收的数据有效。
如果SPIF为0并且收到了数据,收到的数据就会从接受移位寄存器传输到SPIDR中,然后置位SPIF。
如果SPIF为1时收到了第二个数据值,新收到的数据会作为有效值先存在接收移位寄存器内直到开始下一次传输。SPIDR内的数据不会变化。
如果SPIF为1,新数据还在接收移位寄存器内,而在第三次传输开始之前取出了数据,则接收移位寄存器内的数据就会传输进SPIDR中,SPIF会保留置位(见图9)。
如果SPIF为1,新数据还在接收移位寄存器内,而在第三次传输之后才取出数据,则接收移位寄存器内的数据已经无效了,不会被传入SPIDR中(见图10)。

及时取出数据的情况
图 9.及时取出数据的情况

未及时取出数据的情况
图 10.未及时取出数据的情况

功能描述

SPI模块实现了MCU与外设设备间的双工同步串行通信。软件可以通过轮询标志位或者异步中断通知的方式来与SPI模块交互。

通过置位SPI控制寄存器1中的SPI使能位(SPE)来使能SPI系统。当SPE被置位了,四个相关引脚就赋予SPI功能来使用了:

  • 从机选定(SS)

  • 串行时钟(SCK)

  • 主出/从入(MOSI)

  • 主入/从出(MISO)

SPI系统的核心是SPI数据寄存器。主机以及从机中的n位数据寄存器通过MOSI和MISO引脚链接起来形成了一个分布式2n位寄存器。当执行了一个数据传输操作,这个2n位寄存器根据主机的S时钟串行地移位n位,这样数据就在主机和从机间进行了交换。写入主机SPI数据寄存器的数据会输出到从机,而从主机SPI数据寄存器中读出的数据是来自从机的。

当SPTEF=1时读取SPISR然后写入SPIDR就把数据放入了数据发送寄存器。当传输完成并且SPIF为0时,收到的数据会移入数据接收寄存器。这个数据寄存器在读取的时候表现为SPI数据接收寄存器而在写入时表现为SPI数据发送寄存器。读数据缓存与写数据发送寄存器使用共享的SPI数据寄存器地址。

SPI控制寄存器1(SPICR1)中的时钟相位控制位(CPHA)和时钟极性控制位(CPOL)指定SPI系统使用四种可能的格式中的哪一个。CPOL位简单地指定时钟是否反相。CPHA位则通过指定在奇数SCK边沿还是偶数SCK边沿采样来适应两种不同的基础协议(见4.3“传输格式”)。

可以配置SPI为主机或者从机。当SPI控制寄存器1中的MSTR位被置位,就选择了主机模式,否则为从机模式。

  • 注意:
  • 当接收移位寄存器内存在挂起的字节时,如果改变CPOL或者MSTR位会导致挂起的字节丢失,要避免这种情况发生。

主机模式

当MSTR位被置位,则SPI运行在主机模式。只有一个主机SPI模块可以发起传输。传输是由写入主SPI数据寄存器开始的。如果移位寄存器空了,数据就会立刻传输到移位寄存器。数据会在串行时钟的控制下从MOSI引脚移位输出。

  • 串行时钟
    SPI波特率寄存器中的SPR2、SPR1和SPR0波特率选择位联合SPPR2、SPPR1和SPPR0波特率预选位一起控制着波特率生成器并决定传输的速率。SCK引脚是SPI的时钟输出。通过SCK引脚,主机的波特率生成器控制着从机外设的移位寄存器。

  • MOSI、MISO引脚
    在主机模式下,串行数据数据输出引脚(MOSI)和串行数据输入引脚(MISO)的功能是由SPC0和BIDIROE控制位决定的。

  • SS 引脚
    如果MODFEN和SSOE被置位了,SS 引脚就被配置为从机选定输出。SS 输出信号会在每次传输期间变低而在空闲状态下变高。
    如果MODFEN被置位而SSOE为0,SS 引脚就被配置为输入以探测模式故障错误。如果SS 输入信号被拉低,说明发生了模式故障,有另一个主机试图驱动MOSI和SCK线。这种情况下,SPI会通过清零MSTR位并禁用从机输出缓存MISO(或在单向双向模式下的SISO)立刻切换到从机模式。所以最后所有的输出都被禁用,SCK、MOSI和MISO变为了输入。如果在传输过程中发生了模式故障时,传输就会被抛弃,SPI被强制进入空闲状态。
    这次模式故障错误还会置位SPI状态寄存器(SPISR)中的模式故障标志位(MODF)。如果当MODF标志位被置位时SPI中断使能位(SPIE)为1,那么就会发出SPI中断序列请求。
    当主机模式下写入了SPI数据寄存器,会有半个SCK周期的延迟。延迟之后主机内的SCK就启动了。剩下的传输过程有轻微的不同,取决于SPI控制寄存器内的SPI时钟相位位CPHA确定的时钟格式(见4.3“传输格式”)。

  • 注意:
  • 在主机模式下改变CPOL、CPHA、SSOE、LSBFE、XFRW、MODFEN、SPC0、BIDIROE(当SPC0=1)、SPPR2-SPPR0 和 SPR2-SPR0位会导致进行中的传输被抛弃并强迫SPI进入空闲状态。异地的从机无法探测到这个状况,因此主机必须确保异地从机回到空闲状态。

从机模式

当SPI控制寄存器内的MSTR位为0时,SPI就运行在从机模式下。

  • 串行时钟
    在从机模式下,SCK是来自主机的SPI时钟输入。

  • MISO、MOSI引脚
    在从机模式下,串行数据数据输出引脚(MISO)和串行数据输入引脚(MOSI)的功能是由SPI控制寄存器2中的SPC0和BIDIROE控制位决定的。

  • SS 引脚
    SS 引脚是从机选定输入。在数据传输开始前,从机SPI的SS 引脚必须为低电平而且要一直保持到传输完成。如果 SS 变为高电平,SPI就强制进入空闲状态。
    SS 输入信号还控制着串行数据输出引脚,如果SS为高电平(未被选择),串行数据输出引脚就是高阻抗的,反之,由SPI数据寄存器的第一个位来驱动串行数据输出引脚。同样的,如果从机未被选择(SS 为高电平),那SCK输入信号就会被忽略,SPI移位寄存器内不会发生内部移位。
    SPI也有单线双向的功能,一些SPI外设只能够以从机模式接收SPI数据。对于这些简单的设备,没有串行数据输出引脚。

  • 注意:
  • 当使用了有单线双向功能的外设,注意不要同时启用两个串行输出驱动同一系统从属的串行数据输出线的接收器。

只要不超过一个从机设备驱动系统从机的串行数据输出线,就可以使多个从机同时收到相同的主机的传输来的数据,尽管主机不会收到所有从机的返回信息。

如果SPI控制寄存器1中的CPHA位为0,SCK上的奇数次边沿会导致串行数据输入引脚上的数据被锁存。偶数次边沿导致之前从串行数据输入引脚上锁存的数据在SPI移位寄存器内进行移位,移位方向取决于LSBFE位。

如果CPHA位为1,SCK上的偶数次边沿会导致串行数据输入引脚上的数据被锁存。奇数次边沿导致之前从串行数据输入引脚上锁存的数据在SPI移位寄存器内进行移位,移位方向取决于LSBFE位。

当CPHA位为1,第一个边沿被用于把第一个数据位输出到串行数据输出引脚。当CPHA为0并且SS 输入信号为低电平(即选定了从机),SPI数据中的首个位用于驱动串行数据输出引脚。在第n次移位后,认为传输完成,收到的数据被传送进SPI数据寄存器。为了通知传输完成,SPI状态寄存器内的SPIF标志位被置位。

  • 注意:
  • 在从机模式下改变CPOL、CPHA、SSOE、LSBFE、MODFEN、SPC0、BIDIROE(当SPC0=1)会导致进行中的传输失败,必须避免。

传输格式

在SPI传输期间,数据是被同时传送(串行移位出)和接收(串行移位进)的。串行时钟(SCK)驱动两条串行数据线上的信息的移位和采样的同步。从机选定线允许选择单个从机SPI设备;未被选定的从机设备会忽略SPI总线活动。你可以选择使用从机选定线来实现多主机总线争夺机制。

主/从传输框图
图 11.主/从传输框图

时钟相位和极性控制

应用软件可以使用SPI控制寄存器1中的两个位来选择四种串行时钟相位和极性的组合之一。

CPOL时钟相位控制位指定高有效或低有效时钟,对于传输格式没有重要影响。

CPHA时钟相位控制位指定两种基本传输格式之一。

主机和对应从机的时钟相位和极性控制应该完全一致。在某些情况下,相位和极性会根据通信对象而改变,这样一个主机就可以与不同传输格式的外设从机进行通信了。

CPHA=0传输格式

SCK线的首个边沿用于锁存从机的首个数据位给主机以及锁存主机的首个数据位给从机。对于一些外设,从机一被选定就可以从从机的数据输出引脚得到从机数据的首个数据位。这种格式下,首个SCK边沿需要在SS 变低后延迟半个周期。

半个SCK周期后,SCK线上出现第二个边沿。当出现这第二个边沿时,之前从串行数据输入引脚上锁存的值被移位入SPI移位寄存器,移位方向取决于LSBFE位。

在这第二个边沿后,SPI主机数据的下一个位被传送到主机的串行输出引脚即从机的串行输入引脚。这个过程会重复2n次SCK线的边沿,每个奇数次边沿锁存数据,偶数次边沿移位数据。

数据接收是双缓冲的。在传输中,数据被串行地移位进SPI移位寄存器;在最后一个位传输完成后,数据被传输进并行SPI数据寄存器。

在2n次SCK边沿后:

  • 之前在主机SPI数据寄存器中的数据现在应该在从机的数据寄存器中,反之亦然。

  • SPI状态寄存器中的SPIF标志位被置位,表明传输过程已经完成。

图12是当CPHA=0时SPI传输的一张时序图。同时给出了当CPOL=0和1时的SCK波形。图表既是主机的时序图也是从机的,因为主机和从机的SCK、MISO和MOSI引脚是直接连在一起的。MISO信号线是从机的输出,MOSI信号线是主机的输出。主机的SS引脚必须是高电平或者重配置为与SPI无关的通用目的输出。

SPI时钟格式0(CPHA=0),8位数据传输宽度
图 12.SPI时钟格式0(CPHA=0),8位数据传输宽度(XFRW = 0)

SPI时钟格式0(CPHA=0),16位数据传输宽度
图 13.SPI时钟格式0(CPHA=0),16位数据传输宽度(XFRW = 1)

在从机模式下,如果在相继的传输间没有将 SS 线拉高,那么之前的数据就不会传输进SPI数据寄存器,这样只会传输最后一个收到的数据。如果在相继的传输间SS 线持续拉高了至少最小空闲时间(半个SCK周期),那数据就能正常传输给SPI数据寄存器。

在主机模式下,只要使能了从机选定输出,SS 线在相继的传输间总是会被持续拉高了至少最小空闲时间。

CPHA=1传输格式

一些外设要求要先有一个SCK边沿使得首个数据位在数据输出引脚上有效,然后在第二个边沿将数据锁存进系统。在这种格式下,首个SCK边沿是通过在n周期传输的开始设置CPHA位来发起的。

首个SCK边沿会在半个SCK时钟周期同步延迟后立即出现。这首个边沿会命令从机传输它的首个数据位到主机的串行数据输入引脚上。

半个SCK周期后,SCK引脚上出现第二个边沿。这是主机和从机的锁存边沿。

当第三个边沿出现时,之前从串行数据输入引脚上锁存的值被移位入SPI移位寄存器,移位方向取决于LSBFE位。这个边沿之后,主机会把其数据的下一个数据位输出到从机的串行输入引脚上。

这个过程会在SCK线上重复2n次边沿,每个偶数次边沿锁存数据,奇数次边沿移位数据。

数据接收是双缓冲的。在传输中,数据被串行地移位进SPI移位寄存器;在最后一个位传输完成后,数据被传输进并行SPI数据寄存器。

在2n次SCK边沿后:

  • 之前在主机SPI数据寄存器中的数据现在应该在从机的数据寄存器中,反之亦然。

  • SPISR中的SPIF标志位被置位,表明传输过程已经完成。

图14展示了当CPHA=1时两个时钟的变化。图表既是主机的时序图也是从机的,因为主机和从机的SCK、MISO和MOSI引脚是直接连在一起的。MISO信号线是从机的输出,MOSI信号线是主机的输出。SS是给从机的从机选定输入。主机的SS 引脚必须是高电平或者重配置为与SPI无关的通用目的输出。

SPI时钟格式1(CPHA=1),8位数据传输宽度
图 14.SPI时钟格式1(CPHA=1),8位数据传输宽度(XFRW = 0)

图 14.SPI时钟格式1(CPHA=1),16位数据传输宽度
图 15.SPI时钟格式1(CPHA=1),16位数据传输宽度(XFRW = 1)

在相继的传输间,SS 线可以保持低电平(可以锁定为低电平)。这个格式有时在那种只有一个固定主机和一个固定从机驱动MISO数据线的系统中更受欢迎。

  • 主机模式下的背靠背传输
    在主机模式下,如果一个传输已经完成并且新的数据进入了SPI数据寄存器,这个数据就会立刻发送出去,不用附加最小空闲时间。

SPI中断请求标志位(SPIF)对主机和从机模式是一致的。SPIF会在最后一个SCK边沿之后半个SCK周期被置位。

SPI波特率生成

波特率的生成包含一系列分频步骤。SPI波特率寄存器中的6个位(SPPR2、SPPR1、SPPR0、SPR2、SPR1和SPR0)决定了SPI模块时钟的分频系数,分频系数直接决定了SPI的波特率。

SPI时钟率由波特率预选位(SPPR2-SPPR0)和波特率选择位(SPR2-SPR0)的值确定。SPI模块时钟分频系数的公式如下:

比如:当所有位都是0(默认),SPI模块时钟直接除以2。当选择位(SPR2-SPR0)是001,预选位(SPPR2-SPPR0)是000,模块时钟分频系数变为4。当选择位为010,模块时钟分频系数变为8。

比如:当预选位为001,由选择位确定的分频系数乘了2倍。当预分频位为010,分频系数乘了3。表 7给出了在25MHz总线时钟下所有的可能性。这两个系数使得时钟能够不按2的幂数来分频,实现了其他波特率,比如除以6,除以10等。

只有SPI在主机模式下并且发生了串行传输时才会激活波特率生成器。在其他情况下,分频器会被禁用以降低 IDD 电流。

  • 注意:
  • 参阅这个数据手册的电气章节的SPI电气规范来得知允许的最小波特率。

特殊特性

大SS输出

SS 输出会自动地在传输期间驱动SS引脚到低电平以选定外部设备并在空闲时驱动其为高电平以取消选定外部设备。如用到SS,则连接SS输出引脚到外部设备的SS输入引脚上。

推荐阅读

史海拾趣

Exel Microelectronics Inc公司的发展小趣事

XXXX年,Exel Microsystems Inc公司意识到了品质管理对于企业发展的重要性。于是,公司开始引进先进的品质管理理念和体系,加强了对产品从研发到生产的全过程控制。通过严格的品质管理,Exel的产品质量得到了显著提升,客户满意度也随之提高。这一举措不仅增强了公司的市场竞争力,也为公司的长期发展奠定了坚实基础。

C&D公司的发展小趣事

C&D公司深知品质是企业的生命线,因此始终坚守品质至上的原则。公司建立了严格的质量管理体系,从原材料采购到生产制造,再到产品出厂,每一个环节都严格把控,确保产品的品质达到最高标准。同时,C&D公司还注重品牌建设,通过广告宣传、社交媒体营销等方式,提升品牌知名度和美誉度。

长园维安(CYGWAYON)公司的发展小趣事

长园维安一直注重产品质量管理。公司建立了完善的质量管理体系,通过ISO9001、TS16949等认证,确保产品质量的稳定性和可靠性。此外,长园维安还积极推行6Sigma等质量管理方法,不断提高产品质量和客户满意度。这些措施使长园维安赢得了客户的信赖和好评。

Corstat Containers公司的发展小趣事

Corstat Containers公司在电子行业中崭露头角,始于一次技术突破。当时,公司研发团队成功开发出一种新型的防静电电子元件包装盒,有效解决了电子产品在运输过程中因静电导致的损坏问题。这一创新产品迅速获得了市场的认可,许多知名电子品牌纷纷与Corstat Containers公司建立合作关系。随着订单量的不断增加,公司的规模逐渐扩大,生产线也更加完善。

AirBorn公司的发展小趣事

随着业务的发展,AirBorn开始将目光投向全球市场。公司积极参与国际电子展会,与全球各地的客户建立合作关系。同时,AirBorn还加大了对研发和生产设备的投入,提升产品质量和生产效率。这些举措使得AirBorn的产品在全球范围内赢得了良好的声誉,公司也逐渐成长为一家具有全球影响力的电子连接器制造商。

EA Elektro-Automatik公司的发展小趣事

EA Elektro-Automatik深知持续创新是企业发展的重要动力。因此,公司始终将创新作为企业文化的核心价值观之一。公司鼓励员工积极提出创新想法和解决方案,并为他们提供充分的支持和资源。此外,EA Elektro-Automatik还积极参与各类科研项目和行业标准的制定工作,推动整个行业的创新和发展。这种企业文化不仅为公司带来了更多的机会和挑战,也为企业的长期发展奠定了坚实的基础。

以上是关于EA Elektro-Automatik公司在电子行业发展的5个相关故事。这些故事展示了公司从创立到成为全球知名电子测量品牌的发展历程和取得的成就。

问答坊 | AI 解惑

世芯电子与SONY半导体事业部合作先进封装解决方案

世芯电子(Alchip Technologies, Inc.)日前宣布与SONY半导体事业部(color=#0000ff]SONY[/url] Semiconductor Group)成为封装技术合作伙伴,本次结盟主要针对提升其全球客户在先进SoC/ASIC解决方案的服务。 世芯电子是给客户提供多元化晶圆厂的选择方 ...…

查看全部问答>

电路板检查方法介绍

本文阐述,过程监测可以防止电路板缺陷,并提高全面质量。  检查可以经常提醒你,你的装配工艺是不是还有太多的变量。即使在你的制造工艺能够达到持续的零缺陷生产之后,某种形式的检查或者监测对于保证所希望的质量水平还是必要的。表面贴装装配 ...…

查看全部问答>

欢迎职场专家武老师的加盟!--与您畅谈职场生涯

各位朋友,今天我们诚挚的邀请到了电子技术领域的武晔卿武老师来坐客我们的职场专栏。希望大家能够各抒己见,同时武老师也会及时对大家职场方面的各类问题进行答疑解惑,望大家能够充分沟通,相互学习,对电子行业市场有个全面的梳理及全新的认识, ...…

查看全部问答>

我的建议

我想多一些能够直接看的含金量高的帖子,而不是多数都是下载的文件,这样的话论坛里的才会多一些不会因为芯币才发帖和回贴的人,论坛才有可能更兴旺,说的不妥之处请所有看到的多多包含!…

查看全部问答>

给人打工累,创业也累

现在想来,以前向父母要钱的日子真舒服啊!…

查看全部问答>

RX8025 地址0~6(年月日星期时分秒)可读可写,为什么地址8,9,10(W报警),14,15(控制地址)不能写入呢???

RX8025芯片,可以对其设定时间,并且也能显示正确,现在想用到W报警功能,却无法把设定的时间写入,好像控制寄存器也无法写入正确的值,这种情况会是芯片坏了吗??(由于没有库存了只是猜测) W报警的设定还有什么特殊要求吗??请知道的高手帮下 ...…

查看全部问答>

申请试用MSP-EXP430G2

申请试用MSP-EXP430G2…

查看全部问答>

stm32 usb的发送与接收字符串

while(1) { GPIO_ResetBits(GPIOA, GPIO_Pin_0); GPIO_SetBits(GPIOA, GPIO_Pin_1); delay_ms(1500); GPIO_SetBits(GPIOA, GPIO_Pin_0); GPIO_ResetBits(GPIOA, GPIO_Pin_1); delay_ms(1500); USB_GetString(Receive_Buffer); delay_ms ...…

查看全部问答>