stm32入门教程--SPI协议3 超详细!!!

简介

寻址方式、通信过程

极性和相位

SPI总线由四种不同的工作模式,取决于极性(CPOL)和相位(CPHL)这两个因素

CPOL表示SCLK(时钟线)空闲时的状态

CPOL=0,空闲时SCLK为低电平

CPOL=1,空闲时SCLK为高电平

CPHA表示采样时刻

CPHA=0,每个周期的第一个时钟沿采样

CPHA=1,每个周期的第二个时钟沿采样

详解

CPOL(极性)=0,CPHA(相位)=0

图中默认电平为低电平,即CPOL为0,

在通信开始时往数据线上发送一位数据(---),

紧接着时钟线从低电平变为高电平(),接收器就可以把刚才这位数据读走

再往下,由高电平变为低电平时(),再发送第二位数据,

紧接时钟线由低电平变为高电平(),接收器就可以读走第二位数据

一共循环八次就可以完成一个字节数据的发送。

CPOL(极性)=0,CPHA(相位)=1

图中默认电平为低电平,即CPOL为0,CPHA为1,上升沿时发送数据,

在通信开始时,SCLK(时钟线)由低电平变为高电平()发送数据,

紧接着时钟线从高电平变为低电平(),接收器就可以把刚才这位数据读走

再往下,由低电平变为高电平时(),再发送第二位数据,

紧接时钟线由高电平变为低电平(),接收器就可以读走第二位数据

一共循环八次就可以完成一个字节数据的发送。

CPOL(极性)=1,CPHA(相位)=0

图中默认电平为高电平,即CPOL为1,

在通信开始时往数据线上发送一位数据(---),

紧接着时钟线从高电平变为高电平(),接收器就可以把刚才这位数据读走

再往下,由低电平变为高电平时(),再发送第二位数据,

紧接时钟线由高电平变为低电平(),接收器就可以读走第二位数据

一共循环八次就可以完成一个字节数据的发送。

CPOL(极性)=1,CPHA(相位)=1

图中默认电平为高电平,即CPOL为1,CPHA为1,下降沿时发送数据,

在通信开始时,SCLK(时钟线)由高电平变为低电平()发送数据,

紧接着时钟线从低电平变为高电平(),接收器就可以把刚才这位数据读走

再往下,由高电平变为低电平时(),再发送第二位数据,

紧接时钟线由高电平变为低电平(),接收器就可以读走第二位数据

一共循环八次就可以完成一个字节数据的发送。

需要说明的是,对于一个特定的从设备来说,一般在出厂时就会将其设计为某种特定的工作模式;我们在使用该设备时就必须保证主设备的工作模式和从设备保持一致,否则是无法进行通信的;所以一般我们需要对主设备的CPOL和CPHA进行配置

IIC和SPI的异同

相同点

1、均采用串行、同步的方式

2、均采用TTL电平,传输距离和应用场景类似

3、均采用主从方式工作

不同点

1、IIC为半双工,SPI为全双工

2、IIC有应答机制,SPI无应答机制

3、IIC通过向总线广播从机地址来寻址,SPI通过向对应从机发送使能信号来寻址

4、IIC的时钟极性和时钟相位固定,SPI的时钟极性和时钟相位可调

相关推荐
✿ ༺ ོIT技术༻5 天前
Linux:TCP和守护进程
linux·运维·服务器·网络·tcp/ip·1024程序员节
辅助东皇燕双鹰9 天前
行测知识()
1024程序员节
深蓝易网12 天前
探寻制造型企业MES管理系统:功能、架构与应用全解析
大数据·运维·人工智能·架构·制造·1024程序员节
Lenyiin17 天前
2848、与车相交的点
c++·算法·leetcode·1024程序员节
earthzhang202123 天前
《深入浅出HTTPS》读书笔记(31):HTTPS和TLS/SSL
开发语言·网络·python·https·1024程序员节
不讲废话的小白25 天前
怎么样把pdf转成图片模式(不能复制文字)
pdf·1024程序员节
明明真系叻1 个月前
2025.1.26机器学习笔记:C-RNN-GAN文献阅读
人工智能·笔记·深度学习·机器学习·生成对抗网络·1024程序员节
Joeysoda1 个月前
Java数据结构 (从0构建链表(LinkedList))
java·linux·开发语言·数据结构·windows·链表·1024程序员节
清风-云烟1 个月前
使用redis-cli命令实现redis crud操作
java·linux·数据库·redis·spring·缓存·1024程序员节
Joeysoda1 个月前
Java数据结构 (链表反转(LinkedList----Leetcode206))
java·linux·开发语言·数据结构·链表·1024程序员节