嵌入式通信协议 - SPI

1. 致敬Motorola

喜欢摩托罗拉,第一部智能手机的品牌201207刀锋系列,质量也很好。Hello Motor!哈哈哈~~

同样也是一个伟大的品牌。不过落寞了,且被NXP收购了,飞思卡尔也被NXP收了。

引言

当您将微控制器连接到传感器,显示器或其他模块时,您是否考虑过这两种设备如何相互通信?他们到底在说什么?他们如何互相了解?

电子设备之间的通信就像人类之间的通信。双方都需要说相同的语言。在电子学中,这些语言称为 通信协议。对我们来说幸运的是,在构建大多数DIY电子产品项目时,我们只需要知道一些通信协议即可。

首先,我们将从有关电子通信的一些基本概念开始,然后详细说明SPI的工作原理。

SPI,I2C和UART比USB,以太网,蓝牙和WiFi等协议要慢很多,但它们更简单,使用的硬件和系统资源也更少。SPI,I2C和UART非常适用于微控制器之间以及不需要传输大量高速数据的微控制器与传感器之间的通信。

SPI的协议很灵活,很简单,时钟信号线SCK、数据信号传输线 MOSI、数据信号传输线 MISO、片选信号线(SS/CS/NSS)。
需要重点关注的是,时钟信号的传输格式(方波时钟信号的极性、相位和速率)。一个时钟周期信号传递一个bit位的信息。SPI主从间通信使用同一根信号线,所以属于同步通信,无需像UART异步通信那样去设置波特率进行解析。IIC虽然也是同步通信,但是IIC支持多主模式,通信过程需要协议规范通信启停、主从切换、设备寻址、通信竞争的仲裁等,但SPI没有就一根信号线和一根数据线,数据传输过程中,数据信号线直接在跟随时钟采样模式(4种,相位、极性)同步进行,0负担,不存在启停协议的实现,天然自带,再有就是MSB/LSB(先传最高位还是先传最低位)的匹配;SPI也无需寻址,因为它使用一根额外的信号片选线连接从机设备,所以它天然就是那种数字信号最原始的通信模式(时钟+数据),且传输速率很大,只局限于主从设备的时钟信号、电磁环境、传输距离等,因此,SPI的速率远高于IIC,IIC较高与UART。

SPI的使用方式很灵活

使用方式上,软件模拟或MCU内置的硬件SPI模块,都可以。软件模拟也超级简单。得益于“同步的”时钟信号。

最少需要一根时钟线(CLK),一根数据信号传递线(一般为MOSI),一根片选线(SS/NSS/CS),第二根数据线MISO根据需要,可以使用也可以不用。CS线可以使用MCU内置SPI硬件接口模块的,也可以不用,而是单独配置一个GPIO接口作为片选信号线。

SPI接口的外设模块,比如使用显示芯片ST7789的SPI4线制式的接口通信的显示模块,它的四个通信接口引脚是 CLK、MOSI、CS。加上一根数据命令线,这根线不是SPI协议范畴的线,属于ST7789协议控制线,高低电平决定MOSI上的数据对于ST7789控制器芯片是命令数据还是显示数据。

SPI如何运作?

时钟

时钟信号将主设备的数据位输出同步到从设备的位采样。每个时钟周期传输一位数据,因此数据传输的速度取决于时钟信号的频率。由于主机配置并生成时钟信号,因此SPI通信始终由主机启动。

设备共享时钟信号的任何通信协议都称为 同步。 SPI是一种同步通信协议。还有一些 异步 方法不使用时钟信号。例如,在UART通信中,双方都设置为预先配置的波特率,该波特率决定了数据传输的速度和时序。

可以使用时钟极性和时钟相位的属性来修改SPI中的时钟信号。这两个属性共同定义了何时输出位以及何时对其进行采样。主机可以设置时钟极性,以允许在时钟周期的上升沿或下降沿输出和采样位。可以设置时钟相位,以便在时钟周期的第一沿或第二沿进行输出和采样,而不管它是上升还是下降。

从机选择

主机可以通过将从机的CS / SS线设置为低电压电平来选择要与之通信的从机。在空闲,非传输状态下,从选择线保持在高电压电平。主机上可能有多个CS / SS / NSS引脚,这允许多个从机并行连接。如果仅存在一个CS / SS引脚,则可以通过菊花链将多个从机连接到主机。

多个从机

可以将SPI设置为与单个主机和单个从机一起运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值