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的时钟极性和时钟相位可调

相关推荐
普通人61 天前
WebGL与WebGPU入门指南
开发语言·webgl·1024程序员节
猫猫不是喵喵.2 天前
从0到1创建一个微服务项目
java·数据库·微服务·1024程序员节
fish_zzzz5 天前
笔记-论数据结构2
1024程序员节
普通人66 天前
PHP文件读写完全指南
开发语言·php·1024程序员节
Martina_03216 天前
AI生成3D场景从白模换成精模后镜头全偏了?用6步检查单位、枢轴与层级替换
图像处理·人工智能·3d·ai·自然语言处理·材质·1024程序员节
星云_byto7 天前
CSS布局
人工智能·机器学习·目标跟踪·1024程序员节
张小姐的猫10 天前
【MySQL】访问 & 数据流动原理
android·数据库·mysql·adb·1024程序员节
工业HMI实战笔记11 天前
印刷电路板HMI:SMT贴装的元件定位界面
制造·设计规范·设计语言·1024程序员节
Martina_032111 天前
AI生成3D模型一合并网格,材质就串色?用6步检查材质槽、UV与图集重映射
图像处理·人工智能·3d·材质·uv·游戏策划·1024程序员节
橙光成长11 天前
android-ad-cleaner:android免 Root 批量关闭系统开屏与营销推送
android·1024程序员节