spi使用和说明

本文详细介绍了SPI(SerialPeripheralInterface)的定义、工作方式,包括主从通信、片选线、时钟线和数据线的作用,以及硬件SPI和软件模拟SPI之间的区别,强调了硬件SPI的效率优势和对处理器支持的需求。
摘要由CSDN通过智能技术生成

一、SPI定义和分类

spi是什么?

1、spi全称为serial perripheral interface,也就是串行外围设备接口。
2、是摩托罗拉公司推出的高速(最高可以工作在上百Mhz)、全双工、同步的串行总线。
3、spi工作方式为主从工作,通常是一个主设备加上一个或多个从设备。既然会出现多个从设备,那就需要片选线(cs/ss)进行选择通信的从设备,因此有几个从设备那就需要几根片选线,选择从设备的方式就是把相应从设备的片选线拉低就好了。
4、主设备与从设备通信,为了保持同步,那就需要一根时钟线,(sck)。
5、既然要发送数据,那就需要数据线,spi是有两根数据线的,一根是MOSI/SDO(主出从入),master out slaver in/serial data output, 这根数据线只能用于主机发送(输出)从机接收(输入)。另一根什么作用不言而喻,MISO(SDI)(主入从出),这根数据线只能用于主机接收(输入)从机发送(输出)。
6、spi的发起是由主机发起的,因此时钟信号由主机控制(主机提供通信的时钟信号)。
7、大多数从机设备都有着三态逻辑的特性,因此当设备未被选中时,它们的MISO信号线会变成高阻抗状态(电气断开)。没有三态输出的设备则需外接三态缓冲器才能与其他的从机设备共享SPI总线。
8、SPI通信中有4种不同的操作模式,不同的从机设备,可能在出厂时就被设置了某种模式,并且无法更改,但是SPI通信必须处于同一种模式下才能进行。因此,我们应该对自己手里的SPI主机设备进行模式的配置,也就是通过CPOL(时钟极性)和CPHA(时钟相位)来控制SPI主设备的通信模式
9、Clock Polarity -- 时钟极性。时钟的极性(CPOL)用来决定在总线空闲时,同步时钟(SCK)信号线上的电位是高电平还是低电平。当时钟极性为0时(CPOL=0),SCK信号线在空闲时为低电平;当时钟极性为1时(CPOL=1),SCK信号线在空闲时为高电平。
10、Clock Phase -- 时钟相位。时钟的相位(CPHA)用来决定何时进行信号采样。当时钟相位为1时(CPHA=1),在SCK信号线的第二个跳变沿进行采样;这里的跳变沿究竟是上升沿还是下降沿,取决于时钟的极性。当时钟极性为0时,取下降沿;当时钟极性为1时,取上升沿;

二、硬件SPI

配置SPI外设寄存器。
SPI是单主设备通信协议,这意味着总线中只有一个中心设备能发起通信。
当SPI主设备想读/写从设备时,它要拉低从设备对应的CS线(CS是低电平有效的)。
主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。
寄存器通过MOSI信号线将字节传送给从机,实现“写”的功能。
从机也将自己的移位寄存器中的内容通过MISO信号线返回给主机,实现“读”的功能。
这样,两个移位寄存器中的内容就被交换,外设的写操作和读操作是同步完成的。
如果只进行写操作,主机只需忽略接收到的字节;反之。
若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。

硬件SPI和软件模拟SPI的区别有哪些?
硬件SPI的效率要比软件模拟SPI高,写程序的时候只要把要发的数据写在寄存器里,硬件就会自动给你发了。
软件模拟SPI则需要实现时钟的拉高拉低,数据串行输出等等。
硬件SPI必须要处理器支持才可以用,软件SPI就不需要特定的要求了,一般IO口就可用。

三、软件(模拟)SPI

在github上或者gitee上clone代码就行,方便、稳定、易移植。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最怕问初衷,幻梦成空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值