简单记录一下spi的四种mode

通过用户态驱动来读写spi 设备 当有一个spi device的时候,但是不想再内核态写spi_driver的话,可以使能CONFIG_SPI_SPIDEV 这样的话会生成一个spidev.ko ,插入这个ko后就可以在用户态open((“/dev/spidev0.0”), O_RDWR)的方式pen 这个设备 然后通过SPI_IOC_WR_MODE/SPI_IOC_RD_MODE 设置SPI_MODE_0,设置SPI_IOC_WR_BITS_PER_WORD/SPI_IOC_RD_BITS_PER_WORD为25000000,设置SPI. 阅读详情
AI摘要

文章介绍了SPI通信协议中的四种模式,由时钟极性CPOL和时钟相位CPHA组合而成。CPOL定义了时钟空闲时的电平,CPHA定义了数据在时钟边沿的哪个时刻被采样。通过对这两个参数的不同设置,形成了mode0至mode3的四种工作模式,文中通过图表详细解释了每种模式的特点和采样时机。

0 前言

最近在学习SPI,刚开始接触四种mode的时候,还有点懵,也是搜了好几个博客,才算搞懂,特此记录下,防止下次又要翻好几篇博客才找到答案 >_<

1 四种mode的组成单元

这四种mode是由时钟极性和时钟相位组成,2 bits数据刚好组成4种情况,

  • 时钟极性CPOL(Clock POLarity):即SPI空闲时,时钟信号SCLK的电平

    • 0:空闲时低电平
    • 1:空闲时高电平
  • 时钟相位CPHA(Clock PHAse):即SPI在SCLK第几个边沿采样数据

    • 0:第一个边沿
    • 1:第二个边沿

时钟极性就不多说了,描述的很清楚了

时钟相位中说的第一个边沿和第二边沿是这样理解的,简单画一个clk信号,如下图

从图中可以看到,这个clk有两个边沿,红色的上升沿,和绿色的下降沿

从左往右看去,第一个边沿是上升沿(红色),第二个边沿是下降沿(绿色),所以在这种情况下

  • CPHA = 0,表示在clk上升沿采样

  • CPHA = 1,表示在clk下降沿采样

2 四种mode

很多介绍spi四种mode时用的都是下面这种图,虽然简洁,但不利于新手理解(别问我是怎么知道的)

列个表给出四种mode

CPOLCPHA
00mode 0
01mode 1
10mode 2
11mode 3

2.1 mode 0

mode 0表示:空闲的时候是低电平,在上升沿采样,如下图所示,在红色虚线处采样

image-20230514121627754

2.2 mode 1

mode 1表示:空闲的时候是低电平,在下降沿采样,如下图所示,在红色虚线处采样

2.3 mode 2

mode 2表示:空闲时是高电平,在下降沿采样,如下图所示,在红色虚线处采样

2.4 mode 3

mode 3表示:空闲的时候是高电平,在上升沿采样,如下图所示,在红色虚线处采样

SPI通信协议时序图解:模式0、模式1、模式2、模式3全面讲解 本文深入解析SPI通信协议的四种工作模式(Mode 0~3),通过CPOL和CPHA参数对比及时序分析,结合STM32驱动W25Q64等实际案例,揭示常见通信失败原因及解决方案,帮助开发者快速定位配置错误、信号干扰等问题,提升嵌入式系统稳定性。 阅读详情

相关推荐

STM32F103 SPI DMA收发(SPI2发送 SPI1接收)

目录 STM32 SPI DMA收发 GPIO初始化 SPI初始化 DMA初始化 问题记录 STM32F103 SPI DMA收发 GPIO初始化 void my_spi_init(void) { SPI_InitTypeDef SPI_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphCloc...

REALIOT'S BLOG 9901

SPI四种模式区别

SPI四种模式区别   spi四种模式SPI的相位(CPHA)和极性(CPOL)分别可以为0或1,对应的4种组合构成了SPI的4种模式(mode) Mode 0 CPOL=0, CPHA=0  Mode 1 CPOL=0, CPHA=1 Mode 2 CPOL=1, CPHA=0  Mode 3 CPOL=1, CPHA=1 时钟极性CPOL: 即SPI空闲时,时钟信

yihui8的专栏 10万+

SPI Mode 3 波形分析实战:从示波器抓取到6字节数据解析(附时序图)

本文详细解析了SPI Mode 3(CPOL=1, CPHA=1)的波形分析与数据解析实战,从示波器抓取到6字节数据解析的全过程。通过时序图展示和具体案例,帮助开发者深入理解SPI Mode 3的通信特性,解决嵌入式系统中的SPI通信问题,提升调试效率。

weixin_34101784的博客 414

STM32F103学习记录-SPI初始化结构体参数讲解

*!/*!/*!/*!/*!/*!/*!/*!/*!在定义处我们可以看到注释如下图1、库函数定义处注释双击划线部分可以跳转(双击选中,按下Ctrl + F,点击Find Next)到可填入参数的定义处;

2401_84384479的博客 4572

Linux spi:用户空间“免设备驱动”读写spi设备方法——spidev

spi_device虽然用户空间不需要直接用到spi_device结构体,但是这个结构体和用户空间的程序有密切的关系,理解它的成员有助于理解SPI设备节点的IOCTL命令,所以首先来介绍它。0x010x02(0|0)(0|)(|0)(|)0x040x080x100x20spi_device的mode成员有两个比特位含义很重要:SPI_CPHA选择对数据线采样的时机,0选择每个时钟周期的第一个沿跳变时采样数据,1选择第二个时钟沿采样数据;...

weixin_44498318的博客 8229

STM32H7+LAN8720A之ETH与LWIP配置问题(End)

开篇介绍 由于项目中需要使用到STM32H7系列的芯片,且该系列无法移植ST的标准库,只能使用ST的HAL库,通过STM32Cube生成HAL库的基本代码。在项目开发中需要使用到STM32板载的ETH口,在简化的四层模型中充当着数据链路层的角色,我们只需添加PHY并配置好IP,即可实现基本的TCP主从机通信、UDP通信等等。 一、激光雷达3i-T1 由于使用了一款只具有网口通信的单线激光雷达,其具有TCP和UDP方式的通信方式,为了避免进行TCP中的socket报文解析和繁琐的通信握手过程,我们首先将雷达配

weixin_42024702的博客 1万+

SPI Mode调试经验分享

SPI Mode调试经验分享 去发现同类优质开源项目:https://gitcode.com/ 在此资源中,我们分享了关于SPI Mode调试的宝贵经验。通过本资源的学习,您可以了解到由于SPI Mode设置不当所导致的读出数据错误问题,并学习如何避免和解决这些常见问题。 资源描述 当SPI Mode未正确设置时,可能会导致数据读取错误,影响系统的正常运作。本文档详细记录了我们在SPI Mode调...

gitblog_06718的博客 472

NXP S32K1 SPI驱动实战:从配置到DMA传输的完整流程解析

本文深入解析了NXP S32K1系列MCU的SPI驱动开发全流程。基于S32 Design Studio环境,详细阐述了从引脚配置、LPSPI模块初始化,到实现阻塞、中断及DMA三种传输模式的实战代码与配置要点。文章重点剖析了DMA传输的配置细节与性能优化,旨在帮助开发者构建高效、稳定的嵌入式SPI通信,并提供了SPI Flash驱动的综合案例。

blue42的博客 717

40 Linux SPI通信问题记录

38.1 SPI简要介绍 SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一 种同步串行接口技术,是一种高速的,全双工,同步的通信总线。 SPI是通过移位寄存器进行数据收发的,也就是由主机发起动作,如果主机进行单字节传输,主机发一个数据就会从从机中拿到一个数据,不管你愿不愿意,每发送一个数据,从机都会发一个数据过来。如果是没...

Chasing_Chasing的博客 3043

保姆级教程:用GMT6.1绘制专业地形起伏图(从数据下载到出图避坑)

本文提供了一份详细的GMT6.1绘制地形起伏图的保姆级教程,从环境搭建到数据下载,再到核心绘图命令解析,帮助用户避开常见错误。特别适合科研人员和地理信息爱好者快速掌握专业地形图的绘制技巧,提升工作效率。

weixin_42549723的博客 279

工业视觉检测实战指南:从硬件配置到AI算法部署

本文提供了一套完整的工业视觉检测系统搭建实战指南。从硬件选型(相机、光源、镜头、工控机)到AI算法(深度学习模型)部署,详细解析了如何为生产线配置一双“会思考的眼睛”。重点探讨了深度学习算法在复杂缺陷识别中的应用,并分享了模型训练、优化及云边协同部署的实战心得,旨在帮助工程师实现从实验室Demo到7x24小时稳定运行的工业落地。

weixin_29051193的博客 459

【SPI】SPI学习之SPI驱动相关

spi驱动框架 目录:linux/driver/spi/ <从设备驱动层>  spidev.c                             自己编写 <核 心 层>  spi.c                             内核提供 <控 制 器 层>  spi-xxx.c(瑞芯微:spi-rockchip.c  全志:spi-sunxi.c)     原厂提供 ...

诸葛一帆丶的博客 3699

UE5实战:如何用Mesh Shader优化你的游戏场景渲染(附性能对比)

本文深入探讨了在UE5中利用Mesh Shader优化游戏场景渲染的实战方法。通过对比传统渲染管线与GPU Driven Pipeline,详细阐述了Mesh Shader如何通过任务着色器和网格着色器两阶段并行处理,实现更精细的meshlet级剔除,从而显著降低Draw Call和GPU带宽,提升渲染性能。文章附有具体的性能对比数据与代码示例,为开发者优化高复杂度场景提供了有效路径。

sunny的博客 297

STM32 SPI双机通讯记录总结

STM32 SPI双机通讯记录总结 目的:STM32F103RCT6作为主机、STM32F103C8T6作为从机,实现主机发送12个字节从机回12个字节 第一步:了解SPI口的接线方式,查找了相关资料,描述如下 SPI 接口一般使用 4 条线通信: MISO 主设备数据输入,从设备数据输出。 MOSI 主设备数据输出,从设备数据输入。 SCLK 时钟信号,由主设备产生。 CS 从设备片选信号,由主...

weixin_43247498的博客 2236

PCL RANSAC拟合空间圆【2026最新版】

RANSAC三维点云空间3D圆拟合。博客长期更新,本文最新更新时间为:2026年4月13日。代码在PCL1.15.0中测试通过

点云侠的博客 7455

30 中望CAD二次开发(ZRX C++)-windows下的qt开发

本文介绍了中望CAD在windows下,如何使用qt开发插件界面,给出了具体的编码步骤,并生成了模态对话框和非模态对话框,其中非模态对话框可以调用CAD命令,实现交互操作。

cilvsuanna的博客 189

SPI工作模式STM32CubeMX配置

用 STM32CubeMX 配置 SPI 极性时踩了个大坑,故简单记录下。根据时钟极性 (CPOL) 及相位 (CPHA) 不同,SPI 有 4 种工作模式。

aidi1111的博客 1932

deepstream车道线检测自定义插件化,其中要注意pipeline的配置,如果插件位置配置不对,会报input format should be RGBA when using blur-obje

以上代码中,我们先从对象池中获取一个 DsUserMeta 对象,然后使用 get_lane_line_from_frame 函数获取车道线检测结果,并使用 add_lane_line_meta 函数将其添加到 DsUserMeta 对象中。注意,上述代码中的 get_lane_line_from_frame 函数和 add_lane_line_meta 函数需要你自己实现,用于从视频帧中提取车道线检测结果,并将其添加到 DsUserMeta 中。

pvmsmfchcs的博客 690

【Embedded Development】【SPI】SPI通信协议的时序学习过程记录

SPI是一种高速同步串行外设接口协议,采用全双工通信方式,通过SCLK、MOSI、MISO和SS四根信号线实现主机与从机之间的数据传输。其核心特点是时钟同步、传输速率高(1MHz-50MHz),支持四种工作模式(Mode0-3),通过CPOL和CPHA参数配置时钟极性和相位。SPI广泛应用于Flash、ADC、传感器等外设通信,优势在于结构简单、速率快,但缺乏内置应答机制,可靠性需额外保障。典型应用包括单主机多从机架构,通过SS片选信号控制设备选通。开发时需特别注意主机与从机的工作模式匹配。

qq_73648789的博客 1363

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

STM32F030xx硬件SPI调试记录

笔者最近调试STM32F030F4这颗芯片的硬件SPI,本以为将F103的程序直接移植过去就可以,但是却出了很多问题,故在此记录一下,避免后面再走弯路,顺便也给广大网友做一个前车之鉴。 注意:本文使用的是STM32F030标准库(V1.0.0 23-March-2012版本),使用HAL库没有此问题,可以略过本文。 1.STM32F030的硬件SPI初始化比F103多了一个配置函数。 ...

分享嵌入式Linux技术知识 6440

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SPI协议个人记录

SPI(Serial Peripheral Interface)是一种同步串行接口技术,由Motorola公司推出。SPI总线系统是一种同步串行外设接口,允许MCU与各种外围设备以串行方式进行通信和数据交换。外围设备包括FLASHRAM、A/D转换器、网络控制器、MCU等。SPI是一种高速的、全双工、同步的通信总线。SPI没有定义速度限制,通常能达到甚至超过10M/bps。

马上毕业的小菜菜 338

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

SPI通信协议深度解析:从四种模式到DMA驱动的嵌入式开发实战

串行外设接口(SPI)是一种高速、全双工的同步串行通信协议,广泛应用于嵌入式系统与外围设备的数据交换。其核心原理基于主从架构和同步时钟,通过简洁的四线制(SCLK、MOSI、MISO、CS)实现高效通信,避免了异步协议中复杂的波特率协商。SPI的技术价值在于其极高的数据传输速率和灵活的硬件连接能力,使其成为连接Flash存储器、LCD显示屏、各类传感器(如陀螺仪、加速度计)以及无线模块(如Wi-Fi、蓝牙芯片)的理想选择。在实际工程应用中,理解并正确配置时钟极性(CPOL)和时钟相位(CPHA)构成的四种工

weixin_31534091的博客 242

【学习记录】软件spi

软件spi目前只支持了spi四种模式中的一种,后续用到会同步更改。已经有软件iic了,所以顺便把软件spi也做了。

liarsup的博客 586

spi四种工作模式时序图_干货 | 快速理解SPI总线协议及SPI时序图

SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。下面为一种情况例举:上升沿发送、下降沿接收、高位先发送。上升沿到来的时候,sdo上的电平将被发送到从设备的寄存器中。下降沿到来的时候,sdi上的电平将被接收到主设备的寄存器中。假设主机和从机初始化就绪:并且主机的sbuff=0xaa (10101010),...

weixin_39916511的博客 2342

STM32的SPI通信(软件读写W25Q64)

本文详细介绍了SPI通信协议及其与I2C的区别。SPI是一种主从式、同步、全双工的串行通信协议,通过4根信号线(SCK、MOSI、MISO、CS)实现高速数据传输。文章重点解析了SPI四种模式(Mode0-3)的时序差异,包括CPOL、CPHA参数如何决定时钟极性和采样边沿。并以W25Q64 Flash芯片为例,展示了软件模拟SPI实现读写操作的全过程。最后对比了SPI与I2C在通信方式、速率、引脚数量等方面的差异,指出SPI适合高速外设(如Flash),而I2C更适合低速设备(如传感器)。

2504_92863595的博客 1571
上一篇: C语言结构体位域简单介绍
下一篇: 我用ChatGPT写了一个简单的Python自动化测试脚本
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值