嵌入式开发学习日志41——stm32之SPI总线基本结构

在熟悉了I2C总线之后,让我们来看看stm32提供的另一种通信协议------SPI。

SPI意为串行外围接口,主要应用在EEPROM、FLASH、实时时钟、AD转换器等。由于SPI是一种高速的、全双工同步通信总线,并且在芯片上占据了极少的管脚,节省了更多的空间,所以越来越多芯片开始应用这种通信协议。

相比于I2C的两条通信线,SPI一般使用4条,三条作为SPI总线,一条用作CS片选。

三条总线分别是MISO、MOSI、SCLK。MISO是主设备输入/从设备输出引脚,可用于主机读入数据;MOSI是主设备输出/从设备输入引脚,用于主机输出数据;SCLK光从名字上看就与时钟信号有关,它被用于实现通信数据的同步,它由主机产生,决定了通信的速率。

就像I2C种所有从机和主机都共用一根SDA线一样,SPI中接入的所有设备也会共用上述的三根总线。

CS片选线则和上面三根线不同,每个从设备都会有一根独立的CS片选线连接到主机的引脚上,有多少设备就有多少根线,而片选线的功能就相当于I2C中的I2C寻址,也是用于主机对从设备的选择的。

如何选择呢?

当主机要选择从设备时,该从设备的CS信号线就会被设置为低电平,此时该从设备就被选中,也就是所谓的片选有效,当CS线的电平被拉高,那么就代表通信结束,原理十分简单易懂。

SPI也有属于自己的特点。由于是实现全双工通信,所以SPI可以做到同时接受和传输串行数据。同时类似于I2C中的停止信号,SPI也有自己的发送结束中断标志。此外,他还有写冲突与总线竞争等保护机制。

在了解完这些基本结构后,下一章将会详细叙说关于SPI的工作方式的内容。

相关推荐
数智工坊7 小时前
机器人运动控制:采样、优化与学习三大流派深度对比与实战
android·学习·机器人
ZC跨境爬虫7 小时前
跟着 MDN 学JavaScript day_7:数学运算与逻辑判断实战测试
开发语言·前端·javascript·学习·ecmascript
普中科技8 小时前
【普中STM32F1xx开发攻略--标准库版】-- 第 45 章 FSMC-外扩 SRAM 实验
stm32·单片机·嵌入式硬件·fsmc·普中科技·外扩sram·is62wv51216
MartinYeung510 小时前
[论文学习]隐私保护联邦特徵选择与差分隐私的的工程实践框架
学习
qeen8710 小时前
【C++】类与对象之类的默认成员函数(二)
android·c语言·开发语言·c++·笔记·学习
xiaoyuchidayuma10 小时前
永磁同步发电机的线电压和直流母线电压的关系
嵌入式硬件
潜创微科技10 小时前
4K60 over IP 方案简介
网络·嵌入式硬件·网络协议·tcp/ip·音视频
rit843249910 小时前
基于C#的USB HID设备读取测试软件
嵌入式硬件
Flandern111111 小时前
Pull Requests(PR)
学习·github·pr
三佛科技-1873661339711 小时前
FT32F103C8AT7兼容GD32F103C8T632 位通用微控制器MCU,替代性分析
单片机·嵌入式硬件