1. 简介
协议文档下载链接:https://download.csdn.net/download/xiewinter/11295918
图1-1给出了SPI架构的概述。 SPI的主要部分是状态,控制和数据寄存器,移位器逻辑,波特率发生器,主/从控制逻辑和端口控制逻辑。
1.1 概述
SPI模块允许MCU和外围设备之间的双工,同步,串行通信。 软件可以轮询SPI状态标志,或者SPI操作可以是中断驱动的。
1.2 特征
SPI包含这些独特的功能:
主模式和从模式
双向模式
从站选择输出
具有CPU中断功能的模式故障错误标志
双缓冲数据寄存器
串行时钟,具有可编程极性和相位
在等待模式下控制SPI操作
1.3 操作模式
SPI在三种模式下运行: 运行(RUN),等待(WAIT )和停止(STOP)
运行模式
这是基本的操作方式。
等待模式
等待模式下的SPI操作是可配置的低功耗模式,由位于SPICR2寄存器中的SPISWAI位控制。在等待模式下,如果SPISWAI位清零,则SPI在运行模式下运行。 如果SPISWAI位置1,则SPI进入功耗保持状态,SPI时钟产生关闭。 如果SPI配置为主站,则任何正在进行的传输将停止,但在CPU进入运行模式后将恢复。 如果SPI配置为从器件,则继续接收和发送一个字节,以便从器件与主器件保持同步。
停止模式
SPI在停止模式下处于非活动状态,以降低功耗。 如果SPI配置为主站,则任何正在进行的传输将停止,但在CPU进入运行模式后将恢复。 如果SPI配置为从器件,则继续接收和发送一个字节,以便从器件与主器件保持同步。
2. 外部信号说明
2.1 概述
本节列出了所有端口的名称和描述,包括可以或可能在芯片外连接的输入和输出。 SPI模块共有4个外部引脚。
2.2 信号详细说明
2.2.1 MOSI
该引脚用于在SPI模块配置为主器件时将数据传输出SPI模块,并在配置为从器件时接收数据。
2.2.2 MISO
该引脚用于在SPI模块配置为从器件时将数据传输出SPI模块,并在配置为主器件时接收数据.
2.2.3 SS
该引脚用于将选择信号从SPI模块输出到另一个外设,当配置为主机时,将其作为数据传输进行,当SPI配置为从机时,它用作接收从机选择信号的输入。
2.2.4 SCK
该引脚用于输出SPI传输数据或接收时钟的时钟。
3. 存储器映射/寄存器定义
本节提供SPI使用的地址空间和寄存器的详细说明。
SPI的存储器映射如下表3-1所示。 为每个寄存器列出的地址是基址和地址偏移的总和。 基址在SoC级定义,地址偏移在模块级定义。 从保留位读取返回零并且写入保留位无效。
注意:
1.某些位是不可写的。
2.忽略对该寄存器的写入。
3.从该寄存器读取将返回全零。
3.1 寄存器说明
本节包含地址顺序中的寄存器描述。 每个描述包括带有相关图号的标准寄存器图。 寄存器位和字段功能的详细信息遵循寄存器图,按位顺序。
3.1.1 SPI Control Register 1
SPIE — SPI Interrupt Enable Bit
This bit enables SPI interrupt requests, if SPIF or MODF status flag is set.
1 = SPI 中断使能.
0 = SPI 中断失能.
SPE — SPI System Enable Bit
该位使能SPI系统,并将SPI端口引脚专用于SPI系统功能。 如果SPE清零,SPI被禁止并强制进入空闲状态,SPISR寄存器中的状态位将被复位。
1 = SPI enabled, port pins are dedicated to SPI functions.
0 = SPI disabled (lower power consumption).
SPTIE — SPI Transmit Interrupt Enable
This bit enables SPI interrupt requests, if SPTEF flag is set.
1 = SPTEF interrupt enabled.
0 = SPTEF interrupt disabled.
MSTR — SPI Master/Slave Mode Select Bit(模式选择)
This bit selects, if the SPI operates in master or slave mode. Switching the SPI from master to slave or vice versa forces the SPI system into idle state.
1 = SPI is in Master mode
0 = SPI is in Slave mode
CPOL — SPI Clock Polarity Bit(时钟极性选择)
This bit selects an inverted or non-inverted SPI clock. To transmit data between SPI modules, the SPI modules must have identical CPOL values. In master mode, a change of this bit will abort a transmission in progress and force the SPI system into idle state.
1 = Active-low clocks selected. In idle state SCK is high.
0 = Active-high clocks selected. In idle state SCK is low.
CPHA — SPI Clock Phase Bit(时钟相位选择)
This bit is used to select the SPI clock format. In master mode, a change of this bit will abort a transmission in progress and force the SPI system into idle state.
1 = Sampling of data occurs at even edges (2,4,6,...,16) of the SCK clock
0 = Sampling of data occurs at odd edges (1,3,5,...,15) of the SCK clock
SSOE — Slave Select Output Enable
The SS output feature is enabled only in master mode, if MODFEN is set, by asserting the SSOE as shown in Table 3-2. In master mode, a change of this bit will abort a transmission in progress and force the SPI system into idle state.
LSBFE — LSB-First Enable
该位不影响数据寄存器中MSB和LSB的位置。 数据寄存器的读取和写入始终在第7位具有MSB。在主模式下,更改此位将中止正在进行的传输并强制SPI系统进入空闲状态。
1 = Data is transferred least significant bit first.
0 = Data is transferred most significant bit first.
3.1.2 SPI Control Register 2
MODFEN — Mode Fault Enable Bit(通常不使用,直接硬件管脚控制)
This bit allows the MODF failure being detected. If the SPI is in Master mode and MODFEN is cleared, then the SS port pin is not used by the SPI. In Slave mode, the SS is available only as an input regardless of the value of MODFEN. For an overview on the impact of the MODFEN bit on the SS port pin configuration refer to Table 3-2. In master mode, a change of this bit will abort a transmission in progress and force the SPI system into idle state.
1 = SS port pin with MODF feature
0 = SS port pin is not used by the SPI
BIDIROE — Output enable in the Bidirectional mode of operation(通常单向,不起作用)
This bit controls the MOSI and MISO output buffer of the SPI, when in bidirectional mode of operation (SPC0 is set). In master mode this bit controls the output buffer of the MOSI port, in slave mode it controls the output buffer of the MISO port. In master mode, with SPC0 set, a change of this bit will abort a transmission in progress and force the SPI into idle state.
1 = Output buffer enabled
0 = Output buffer disabled
SPISWAI — SPI Stop in Wait Mode Bit
在等待模式下,该位用于节能。
1 = Stop SPI clock generation when in wait mode
0 = SPI clock operates normally in wait mode
SPC0 — Serial Pin Control Bit 0(通常使用正常模式)
该位使能双向引脚配置,如表3-3所示。 在主模式下,该位的更改将中止正在进行的传输并强制SPI系统进入空闲状态。
3.1.3 SPI Baud Rate Register
SPPR2–SPPR0 — SPI Baud Rate Preselection Bits
SPR2–SPR0 — SPI Baud Rate Selection Bits
详细波特率配置对照表见手册
3.1.4 SPI Status Register
SPIF — SPIF Interrupt Flag
接收到的数据字节传输到SPI数据寄存器后,该位置1。 通过读SPISR寄存器(SPIF置1),然后对SPI数据寄存器进行读访问,可以清除该位。
1 = New data copied to SPIDR
0 = Transfer not yet complete
SPTEF — SPI Transmit Empty Interrupt Flag
如果置位,该位指示发送数据寄存器为空。 要清除该位并将数据放入发送数据寄存器,必须使用SPTEF = 1读取SPISR,然后写入SPIDR。 在不读取SPTEF = 1的情况下对SPI数据寄存器进行任何写操作都会被忽略。
1 = SPI Data register empty
0 = SPI Data register not empty
MODF — Mode Fault Flag
This bit is set if the SS input becomes low while the SPI is configured as a master and mode fault detection is enabled, MODFEN bit of SPICR2 register is set. Refer to MODFEN bit description inSPI Control Register 2. The flag is cleared automatically by a read of the SPI Status Register(with MODF set) followed by a write to the SPI Control Register 1.
1 = Mode fault has occurred.
0 = Mode fault has not occurred.
3.1.5 SPI Data Register
SPI数据寄存器是SPI数据的输入和输出寄存器。 写入该寄存器允许对数据字节进行排队和传输。 对于配置为主设备的SPI,在前一次传输完成后立即发送排队的数据字节。 SPISR寄存器中的SPI发送器空标志SPTEF指示SPI数据寄存器何时准备接受新数据。
当设置SPIF时,SPIDR中的接收数据有效。
如果SPIF清零并且接收到一个字节,则接收的字节从接收移位寄存器传送到SPIDR,并且SPIF置1.
如果SPIF置1且未被服务,并且已接收到第二个字节,则第二个接收字节将作为有效字节保留在接收移位寄存器中,直到另一个传输开始。 SPIDR中的字节不会更改。
如果SPIF置1且有效字节在接收移位寄存器中,并且SPIF在第三次发送开始之前被服务,则接收移位寄存器中的字节被传送到SPIDR并且SPIF保持置1(见图3-6)。
如果SPIF置1且接收移位寄存器中有效字节,并且在第三次发送开始后SPIF服务,则接收移位寄存器中的字节无效并且不会传输到SPIDR中(see Figure 3-7 Reception with SPIF serviced too late)
4. 功能描述
4.1 概述
SPI模块允许MCU和外围设备之间的双工,同步,串行通信。 软件可以轮询SPI状态标志或SPI操作可以是中断驱动的。
通过设置SPI控制寄存器1中的SPI使能位(SPE)来使能SPI系统。当SPE位置1时,四个相关的SPI端口引脚专用于SPI功能:
• Slave select (SS)
• Serial clock (SCK)
• Master out/slave in (MOSI)
• Master in/slave out (MISO)
SPI系统的主要元件是SPI数据寄存器。 主器件中的8位数据寄存器和从器件中的8位数据寄存器由MOSI和MISO引脚相连,形成分布式16位寄存器。 当执行数据传输操作时,该16位寄存器通过S时钟从主机串行移位8位,因此在主机和从机之间交换数据。 写入主SPI数据寄存器的数据成为从机的输出数据,传输操作后从主SPI数据寄存器读取的数据是来自从机的输入数据。
读取SPISR,SPTEF = 1,然后写入SPIDR,将数据放入发送数据寄存器。 传输完成且SPIF清零后,接收的数据将移入接收数据寄存器。 该8位数据寄存器用作读取的SPI接收数据寄存器,用作写入的SPI发送数据寄存器。 单个SPI寄存器地址用于从读数据缓冲区读取数据和将数据写入发送数据寄存器。
SPI控制寄存器1(SPICR1)中的时钟相位控制位(CPHA)和时钟极性控制位(CPOL)选择SPI系统使用的四种可能时钟格式之一。 CPOL位简单地选择非反相或反相时钟。 CPHA位用于通过对奇数SCK边沿或偶数SCK边沿上的数据进行采样来适应两种根本不同的协议(参见4.4传输格式)。
SPI可以配置为主机或从机。 当SPI控制寄存器1中的MSTR位置1时,选择主模式,当MSTR位清零时,选择从模式。
4.2 传输格式
在SPI传输期间,数据被同时传输(串行移出)和接收(串行移位)。 串行时钟(SCK)同步两条串行数据线上信息的移位和采样。 从选择线允许选择单个从SPI设备,未选择的从设备不会干扰SPI总线活动。 可选地,在主SPI设备上,从选择线可用于指示多主总线争用。
4.2.1 时钟相位和极性控制
使用SPI控制寄存器1中的两位,软件选择串行时钟相位和极性的四种组合之一。
CPOL时钟极性控制位指定有效的高或低时钟,并且对传输格式没有显着影响。
CPHA时钟相位控制位选择两种根本不同的传输格式之一。 主SPI设备和通信从设备的时钟相位和极性应相同。 在一些情况下,在传输之间改变相位和极性以允许主设备与具有不同要求的外围从设备通信。
4.2.2 CPHA = 0 传输格式
SCK线上的第一个边沿用于将从器件的第一个数据位计时到主器件,将主器件的第一个数据位计时到从器件。 在某些外设中,只要选择了从机,就会在从机的数据输出引脚上提供从机数据的第一位。 在这种格式中,第一个SCK边沿在SS变低之后发出半个周期。
半个SCK周期后,第二个边沿出现在SCK线上。 发生第二个沿时,先前从串行数据输入引脚锁存的值将移入移位寄存器的LSB或MSB,具体取决于LSBFE位。
在第二个沿之后,SPI主数据的下一位从主机的串行数据输出引脚传输到从机的串行输入引脚。 该过程在SCK线上总共持续16个边缘,数据被锁存在奇数边缘上并在偶数边缘上移位。
数据接收是双缓冲的。 传输期间数据串行移入SPI移位寄存器,并在最后一位移入后传输到并行SPI数据寄存器。
在第16个(最后一个)SCK边缘之后:
先前在主SPI数据寄存器中的数据现在应该在从数据寄存器中,从数据寄存器中的数据应该在主数据寄存器中。
SPI状态寄存器中的SPIF标志置位,表示传输已完成。
4.2.3 CPHA = 1 传输格式
类似CPHA=0
4.3 特殊功能
4.3.1 SS 输出
SS输出功能在传输过程中自动将SS引脚驱动为低电平,以选择外部设备并在空闲期间将其驱动为高电平以取消选择外部设备。 选择SS输出时,SS输出引脚连接到外部器件的SS输入引脚。
通过置位SSOE和MODFEN位,SS输出仅在主模式下在正常SPI操作期间可用,如表3-2所示。
启用SS输出时,模式故障功能被禁用。
4.3.2 双向模式(MOMI或SISO)
当SPI控制寄存器2中的SPC0位置1时,选择双向模式(见表4-1正常模式和双向模式)。 在此模式下,SPI仅使用一个串行数据引脚作为与外部器件的接口。 MSTR位决定使用哪个引脚。 MOSI引脚成为主模式的串行数据I / O(MOMI,Master Output, Master Input)引脚,MISO引脚成为从模式的串行数据I / O(SISO)引脚。 SPI不使用主模式下的MISO引脚和从模式下的MOSI引脚。
每个串行I / O引脚的方向取决于BIDIROE位。 如果引脚配置为输出,则移位寄存器的串行数据在引脚上被驱动。 相同的引脚也是移位寄存器的串行输入。
SCK输出为主模式,输入为从模式。
SS是主模式的输入或输出,它始终是从模式的输入。 双向模式不影响SCK和SS功能。
4.4 错误条件
SPI有一个错误条件:
•模式故障错误(一般不使用,详细见协议)
4.5 低功耗模式选项
4.5.1 SPI处于运行模式
4.5.2 SPI处于等待模式
4.5.3 SPI处于停止模式
4.5.4 Reset
寄存器和信号的复位值在存储器映射和寄存器部分中描述(参见第3节“存储器映射/寄存器定义”)详细说明了寄存器及其位域。
•如果在复位后在从机模式下发生数据传输而没有写入SPIDR,则它将在复位之前发送垃圾或最后从主机接收的字节。
•复位后从SPIDR读取将始终读取一个零字节。
4.5.5 中断
当SPI使能时(SPICR1置1中的SPE位),SPI仅发出中断请求。 以下是SPI如何发出请求以及MCU应如何确认该请求的说明。 中断向量偏移和中断优先级取决于芯片。
中断标志MODF,SPIF和SPTEF进行逻辑或运算以产生中断请求。
当主机检测到SS引脚上的错误时,会发生MODF。 必须为MODF功能配置主SPI(参见表3-2 SS输入/输出选择)。 设置MODF后,将中止当前传输并更改以下位:
MSTR = 0,SPICR1中的主位复位。
MODF中断反映在状态寄存器MODF标志中。 清除标志也将清除中断。 当MODF标志置位时,该中断将保持有效。 MODF具有自动清除过程,在3.1.4 SPI状态寄存器中描述。
接收到新数据并将其复制到SPI数据寄存器时,会发生SPIF。 一旦设置了SPIF,它就会在服务之前不会清除。 SPIF具有自动清除过程,在3.1.4 SPI状态寄存器中有描述。
当SPI数据寄存器准备接受新数据时SPTEF发生一旦SPTEF置位,它就会被清除,直到它被服务。 SPTEF具有自动清除过程,在3.1.4 SPI状态寄存器中有描述。
5. 关于三线和四线
根据上面的描述,可以知道,SPI可以配置为全双工和半双工,全双工的情况下即为四线,半双工的情况为三线,并非一般意义所指的去掉或包含SS线。
上一篇:I2C总线详解笔记
下一篇:STM8 串口接收字符串问题
推荐阅读
史海拾趣
“品质陶瓷”公司深知品质是企业生存和发展的根本。因此,该公司建立了严格的质量管理体系,从原材料采购到产品出厂的每一个环节都进行严格把控。品质陶瓷还引入了先进的生产设备和技术,不断提升产品的性能和质量稳定性。这一品质管理策略使得该公司的产品在市场上具有极高的竞争力,赢得了众多客户的信任和好评。
“跨界陶瓷”公司凭借其前瞻性的战略眼光,积极探索与其他行业的跨界合作。该公司与多家科研机构和高新技术企业建立了战略合作关系,共同研发新型陶瓷电子材料和技术。通过跨界合作,跨界陶瓷成功将陶瓷材料应用于新能源汽车、智能家居等新兴领域,为公司开辟了新的发展空间和市场机会。
这些故事虽然基于虚构,但反映了电子行业中Ceramics公司可能面临的机遇和挑战,以及他们如何通过技术创新、环保理念、国际化战略、品质管理和跨界合作等方式实现发展的普遍现象。当然,实际情况中每家公司的具体发展历程和策略都会有所不同,需要根据具体情况进行分析和评估。
随着全球化趋势的加速推进,BAHCO也在积极拓展全球市场。目前,公司已在多个国家和地区设立了分支机构或销售网络,实现了全球范围内的业务覆盖。未来,BAHCO将继续加大在研发、生产、销售等方面的投入力度,不断提升产品质量和服务水平。同时,公司还将积极探索新的商业模式和合作方式,以适应不断变化的市场环境并实现可持续发展。
这些故事虽然不直接涉及BAHCO在电子行业的发展,但它们展示了BAHCO在工具制造领域的辉煌历程和不断进取的精神。作为一家拥有百年历史的知名企业,BAHCO凭借其卓越的品质、创新精神和全球市场布局,成功地在工具制造业中占据了重要地位。未来,随着技术的不断进步和市场需求的不断变化,相信BAHCO将继续保持其领先地位并迎来更加美好的发展前景。
为了加速绿色技术的推广和应用,GreenTech积极寻求与全球知名企业的战略合作。例如,公司与一家国际领先的电动汽车制造商达成合作协议,共同研发用于电动汽车的高效电池管理系统。通过这一合作,GreenTech不仅提升了自身在电池技术领域的竞争力,还成功将绿色技术应用于实际产品中,推动了电动汽车行业的绿色发展。
随着数据中心的能耗问题日益突出,GreenTech敏锐地捕捉到了这一市场机遇。公司研发了一套绿色数据中心解决方案,包括高效能服务器、智能温控系统和可再生能源供电系统等。这些创新技术有效降低了数据中心的能耗和碳排放,为云计算和大数据产业的绿色发展提供了有力支持。GreenTech的解决方案得到了多家互联网巨头的认可,并成功应用于多个大型数据中心项目。
随着公司的不断发展,Altitude Technology逐渐在电子行业中崭露头角。然而,市场竞争也日趋激烈,为了保持领先地位,公司决定加大研发投入,致力于技术突破。经过长时间的研发,Altitude Technology成功推出了一款采用最新芯片技术的智能手机,这款手机在性能、功耗和拍照效果等方面均达到了行业领先水平,为公司赢得了更多的市场份额。
【瑞萨 CPK-RA2L1 开发板】测评 - 2:RT-Thread 本帖最后由 MianQi 于 2022-11-19 17:19 编辑 回到 RT-Thread,安装 BSP 时下载遇到问题: 解决的办法是,下载压缩文件,单独安装: 新建项目时有提醒,路径中不能有空格: … 查看全部问答∨ |
pyboard v1.1进DFU显示STM32 BOOTLOADE无法升级固件解决 按照官方一般的教程,进入DFU模式后,应该可以在设备管理期间“STM Device in DFU Mode“,然后使用ST官方的 DefuSe Demo软件进行dfu固件升级。 但是我的pyboard v1.1进入DFU模式后在设备管理器下面没有看到“STM Device in ...… 查看全部问答∨ |
【中科亿海微EQ6HL45开发平台测评体验】+08.ICAP测试(zmj) 【中科亿海微EQ6HL45开发平台测评体验】+08.ICAP测试(zmj) 中科亿海微的FPGA重配置功能十分强大。那么重配置功能可以应对哪些场景?如何实现呢? 在实际工程应用场景中可能要实现几个不同功能的码流,如果采用几片FPGA+Flash的方 ...… 查看全部问答∨ |
|
看到EEWORLD和e络盟办的活动,买了几个物料。一共两颗IC,两个DDR4的连接器,今天刚收到快递,晒出来分享下 开箱 第一颗IC是FTDI的FT601Q-B-T,QFN-76封装 FT60x是FTDI第一代SuperSpeed USB3.0系列芯片,提供高达5Gbps的带宽 ...… 查看全部问答∨ |
|
我在网上找一个通讯猫MQTT服务器在线客户端。我有点糊涂,到底是服务器,还是客户端。 可以连上,也可以发数据,就是不知道跟谁连。 我从上面下了个WIN32客户端,打开,怎么设置都连不上。 用管理员模式打开,只是打开一瞬间连接灯黄一 ...… 查看全部问答∨ |
RT1052 ~2~工具生成代码 图1:MCU Xpreesso config tool 图2选芯片型号 图3找外设引脚 买的是野火的RT1052 EVK PRO 找个表格直接就可以 图6;配置引脚 找到这两个脚配置为,LPspi3 ...… 查看全部问答∨ |
【行空板 Python编程学习主控板】 四、所见所得的Mind+图形化WS2812灯带实现 一、硬件及连接 双十一之前在老五家上了一次车,屯了几十根ws2812小灯带,刚好拿来用行空板测评 行空板提供了很多接口,点亮灯珠的的管家用P24来实现 由于灯带的接口大多是2.54,而行空板的接口是2.0,因此借用P23接口的正极(中间 ...… 查看全部问答∨ |
村田制作所器件仿真软件推荐 https://ds.murata.co.jp/simsurfing/index.html?lcid=zh-cn 随便器件进入 ,点击仿真进入: https://ds.murata.co.jp/nfstp/? ...… 查看全部问答∨ |