怎样理解SPI总线时钟的极性(CPOL)与相位(CPHA)?

article/2025/11/2 17:10:39

转自 https://zhuanlan.zhihu.com/p/32803973

在单片机与外围设备的通信中,SPI总线是一种常用的通信方式。SPI是英文"Serial Periphral Interface"的缩写,中文翻译为"串行外围设备接口"。今天这篇文章,我们就来谈谈SPI通信的原理,并详细讨论下总线时钟的极性与相位。

SPI(Serial Periphral Interface)最早是由摩托罗拉公司设计并实现,它是一种高速的、全双工的通信总线,采用主机(Master)-从机(Slave)的方式进行通信。SPI占用芯片的四个引脚,也就是说采用四条信号线来进行通信。这四条线分别是:主设备输入与从设备输出线(Master In Slave Out,MISO);主设备输出与从设备输入线(Master Out Slave In,MOSI);串行同步时钟信号线(Serial Clock,SCK);外围设备片选信号线(Slave Selection,SS)。

SPI总线的主机和从机都有一个移位寄存器,当主机向自己的移位寄存器写入数据时,数据会通过MOSI信号线进入到从机的移位寄存器;同时,从机移位寄存器里的数据,通过MISO信号线进入到主机的移位寄存器。这样,主机和从机就完成了一次数据交换。下面这张图,是SPI通信的简明原理图:

https://pic4.zhimg.com/80/v2-11b497be4bb392fd3d02226325f31907_hd.jpg

SPI数据的传输是在串行同步时钟信号(Serial Clock,SCK)的控制下进行的。主机的时钟发生器一方面控制主机的移位寄存器,另一方面通过从机的SCK信号线来控制从机的移位寄存器,从而保证主机与从机的数据交换是同步进行的。

SPI串行同步时钟可以设置为不同的极性(Clock Polarity ,CPOL)与相位(Clock Phase ,CPHA)。

时钟的极性(CPOL)用来决定在总线空闲时,同步时钟(SCK)信号线上的电位是高电平还是低电平。当时钟极性为0时(CPOL=0),SCK信号线在空闲时为低电平;当时钟极性为1时(CPOL=1),SCK信号线在空闲时为高电平;

时钟的相位(CPHA)用来决定何时进行信号采样。

当时钟相位为1时(CPHA=1),在SCK信号线的第二个跳变沿进行采样;这里的跳变沿究竟是上升沿还是下降沿?取决于时钟的极性。当时钟极性为0时,取下降沿;当时钟极性为1时,取上升沿;如下图:

https://pic3.zhimg.com/80/v2-1141b7036cf151564818cc6cb676d275_hd.jpg

当时钟相位为0时(CPHA=0),在SCK信号线的第一个跳变沿进行采样。跳变沿同样与时钟极性有关:当时钟极性为0时,取上升沿;当时钟极性为1时,取下降沿;如下图:

https://pic3.zhimg.com/80/v2-e69e8be0703f70f3e6eb781fa86fee05_hd.jpg

在STM32系列单片机中,可以通过SPI_CR1寄存器来设置时钟的极性(CPOL)与相位(CPHA)。

好了,关于SPI通信就先介绍到这里,欢迎登陆官网(http://www.founderchip.com)浏览其它技术类文章。

 


http://chatgpt.dhexx.cn/article/fTY8JP2E.shtml

相关文章

Python 之 cPickle用法

欢迎大家扫码关注我的微信公众号: Python 之 cPickle 用法 - 目录 一、概述二、序列化与反序列化的几个常用方法2.1 dump() 与 load()2.2 dumps() 与 loads()2.3 带 s 与不带 s 的区别 三、cPickle 类的孪生—— pickle 一、概述 序列化 (Serializatio…

HDU 2509 Nim博弈变形

1、HDU 2509   2、题意:n堆苹果,两个人轮流,每次从一堆中取连续的多个,至少取一个,最后取光者败。 3、总结:Nim博弈的变形,还是不知道怎么分析,…

LibreOJ #2509.「HNOI2018」排列 贪心+堆

题意 n<500000 分析 不难分析到其实就是有一棵树&#xff0c;然后每次要选一个节点。在选某个节点时必须先选其父节点&#xff0c;第i个选的节点的系数为i&#xff0c;问最大的权值和。 先这么想&#xff0c;对于一个最权值小的节点&#xff0c;当我们选了其父亲后&#…

hdu2509 Be the Winner (反尼姆博弈 )

hdu2509 Be the Winner Problem Description Let’s consider m apples divided into n groups. Each group contains no more than 100 apples, arranged in a line. You can take any number of consecutive apples at one time. For example “” can be turned into “” …

本地win10安装的MySQL8.0.12用navicat12报错 2509 -Authentication plugin ' caching_sha2_password' cannot be :

本地安装了MySQL8.0.12用navicatl 12报错了&#xff0c;报错请款如下: 网上很多的方法都是说在my.ini 文件中添加 default_authentication_pluginmysql_native_password&#xff1b; 我知道有的人的是可以的&#xff0c;但是我的报错 然后有需要修改my.ini文件 最后一行加上…

学习MySQL的第二天,安装MySQL的远程连接工具与解决2509的报错

1&#xff0c;下载并安装MySQL的远程连接工具 安装MySQL远程连接工具结果都一样哈&#xff0c;都是为了方便快捷&#xff0c;点击下方连接从“sqlyogcommunity官网”来下载安装。 https://github.com/webyog/sqlyog-community/wiki/Downloads 下载完后就可以来安装了&#xff…

nivicat破解包安装以及问题解决。MySQL安装版本Navicat连接报错2509解决方案

nivicat安装步骤 https://blog.csdn.net/yhflyl/article/details/95779920。 安装之后出现两个问题&#xff1a; 如图所示&#xff1a;网上查询过后&#xff0c;发现这个错误出现的原因是在mysql8之前的版本中加密规则为mysql_native_password&#xff0c;而在mysql8以后的加…

MySQL安装版本Navicat连接报错2509解决方案

MySQL安装版本Navicat连接报错2509解决方案 【问题产生】 新安装后打开数据库连接报错 【产生原因】 由于新版本的MySQL新特性导致的。 mysql> select Host,User,plugin from mysql.user; ------------------------------------------------- | Host | User | plugin | --…

Windows无法连接到Group Policy Client服务

Citrix XenApp服务器通过PVS启动后&#xff0c;用户访问出现如下的报错&#xff1a; 此报错是由于该Windows服务器的 Group Policy服务没有启动导致的&#xff0c;可以直接登录到该服务器开启Group Policy的服务即可。 但是如果你有好多好多的服务器&#xff0c;你也不知道哪个…

Circumventing Group Policy Settings

Group policy settings are an integral part of any Windows-based IT environment. If you’re a network administrator you use them to enforce corporate security and desktop management policy, and if you’re a user you’ve almost certainly been frustrated by t…

GPP(Group Policy Preferences)策略组首选项漏洞

概念 组策略是配配置计算机中某一些用户组策略的程序 SYSVOL是AD(活动目录)里面一个存储域公共文件服务器副本的共享文件夹&#xff0c;所有域内主机都能访问&#xff0c;里面保存组策略相关数据&#xff0c;包含登录脚本配置文件等 dir /s /a \\域控IP\SYSVOL\*.xml GPO是组策…

Group Policy Client解决方法

最近我同学的电脑遇到了这样的一个问题&#xff1a; 在开机登录界面时无法进入&#xff0c;提示Group Policy Client服务未能登录 其实在开始我也没遇到这样的问题&#xff0c;上网查了很久的资料&#xff0c;最后终于让我给解决了&#xff0c;呵呵…… 现在我就把我的解决方…

windows无法连接到group policy client服务.此问题阻止标准用户登陆系统.

问题描述如图&#xff1a; 解决&#xff1a; 1.winR 输入 regedit,打开注册表编辑器 2.对上图区域右键->权限 3.选定你的用户&#xff0c;点添加->高级->立即查找 4.找到SYSTEM&#xff0c;点击确定 5.然后注册框中出现&#xff0c;点确定&#xff0c;然后重启&#…

Powershell如何修改组策略(group policy)

上一篇&#xff0c;田总手把手给指导了如何实现多跳&#xff0c;手动实现的&#xff0c;没有问题。但是机器众多&#xff0c;这一篇我们用命令来实现组策略的修改。 首先&#xff0c;Powershell不是万能的&#xff0c;Powershell是可以获取到域的组策略(GPO)&#xff0c;并且权…

计算机 服务未能登陆,w7电脑开机提示Group Policy Client服务未能登陆的修复方法...

‍ ‍ w7系统是目前比较多用户自己使用的系统&#xff0c;比较普遍&#xff0c;但是出现的故障也比较多&#xff0c;一般都是大家能自己动手解决的。那么w7电脑开机提示Group Policy Client服务未能登陆怎么回事&#xff1f;要怎么处理这个问题&#xff1f;下面小编就以w732位旗…

win7服务器未能登录怎么解决,win7开机提示group policy client服务未能登录拒绝访问怎么办...

‍‍ 有些win7专业版用户在电脑开机的时候提示group policy client服务未能登录拒绝访问&#xff0c;导致无法进入系统开不了机&#xff0c;遇到这种情况该怎么办呢&#xff1f;group policy client服务用于应用由这台计算机的管理员或者其他用户通过组策略组件配置的设置&…

计算机服务 访问拒绝,Win7开机提示group policy client服务未能登录,拒绝访问的解决方法...

我们在使用电脑的过程中&#xff0c;经常会遇到一些小问题&#xff0c;尤其是电脑开机之后的问题最为常见。近期有一位用户遇到电脑开机提示“group policy client服务未能登录,拒绝访问”。那么我们要如何解决这个问题呢&#xff1f;下面装机之家分享一下Win7开机提示group po…

故障:ID1085 的 GroupPolicy 警告日志

1、故障现象: 1)Windows Server 2008 with SP2 的域控制器上,每隔 5 分钟,在 System Log 中出现 ID1085 的 GroupPolicy 警告日志: 2)同时,在 Application Log 中出现 ID8194 的 Group Policy Services 错误日志: 2、故障处理: 1)删除文件夹: C:\ProgramData\Appl…

使用Windows10 group policy关闭Virtualization Security

执行命令msinfo32: 查看system info&#xff0c;发现Virtualization-based security处于running状态&#xff1a; 执行命令行gpedit&#xff0c;打开group policy&#xff1a; 沿下列路径展开&#xff1a; Local Computer Policy > Computer Configuration > Administr…

win10服务器未能登录怎么办,win10系统开机提示Group policy Client服务未能登陆的解决技巧...

有越来越多的用户喜欢win10系统了。在日常的安装和使用过程中&#xff0c;免不了总能碰见win10系统开机提示Group policy Client服务未能登陆的问题。面对突然出现的win10系统开机提示Group policy Client服务未能登陆的问题&#xff0c;对于一些仅仅将电脑作为工具使用的菜鸟来…