资讯详情

STM32的SPI及IIC

SPI是串行外设界面(Serial Peripheral Interface)缩写是一种高速、全双工、同步通信总线,芯片管脚只占用四条线,节省了芯片管脚,同时也是PCB由于这种简单易用的特点,越来越多的芯片集成了这种通信协议

SPI总线是一种四线总线,因为它的硬件功能很强SPI有关的软件就相当简单,使中央处理器(Central Processing Unit,CPU)有更多的时间处理其他事务。正是由于这种简单易用的特性,越来越多的芯片集成了这种通信协议,如AT91RM9200。SPI串行接口技术高速高效。它通常由一个主模块和一个或多个从模块组成,选择一个从模块同步通信,以完成数据交换。SPI它是一个环形结构,通信时至少需要4条线(实际上单向传输时3条线也可以)。

SPI通信原理非常简单。它以主从的方式工作。在这种模式下,通常有一个主设备和一个或多个从设备,至少需要四条线。事实上,三条线也可以(单向传输)。这一切都是基于SPI的设备共有的,它们是MISO(主设备数据输入),MOSI(主设备数据输出),SCLK(时钟)、CS(片选)。

(1)MISO– Master Input Slave Output从设备数据输出输入主设备数据;

(2)MOSI– Master Output Slave Input,从设备数据输入主设备数据输出;

(3)SCLK – Serial Clock,由主设备产生的时钟信号;

(4)CS – Chip Select,主设备控制从设备使能信号。

其中,CS它是从芯片是否被主芯片选中的控制信号,也就是说,只有当芯片选择信号是预先规定的能量信号(高电位或低电位)时,主芯片才能从芯片的操作中有效。这使得多个连接在同一总线上SPI设备成为可能。

接下来,负责通信的三条线。通信是通过数据交换完成的,这里首先要知道SPI是串行通信协议,也就是说数据是一个一个传输的。这就是SCLK时钟线存在的原因是SCLK提供时钟脉冲,SDI,SDO基于此脉冲完成数据传输。通过数据输出 SDO线,数据在时钟上升或下降时变化,在下降或上升时读取。同样的原理也用于完成数据传输。因此,完成8位数据的传输至少需要8次时钟信号的变化(上下边缘为一次)。

时钟信号线SCLK主设备只能控制,设备不能控制。同样,在一个基础上SPI至少有一个主要设备。这种传输方式有一个优点,可以在数据位的传输过程中暂停,即时钟周期可以不等宽,因为时钟线由主设备控制。当没有时钟跳转时,数据不会从设备中收集或传输。SPI还是数据交换协议:因为SPI数据输入和输出线是独立的,因此数据输入和输出可以同时完成。芯片集成的SPI寄存器可以配置串行同步时钟极性和相位,IO模拟的SPI串行同步时钟需要根据设备支持的时钟极性和相位进行通信。

最后,SPI接口的缺点之一:没有指定的流量控制,没有响应机制来确认是否接收数据。

SPI片选可扩展选择16个外设,此时PCS输出=NPCS,说NPCS0~3接4-16译码器,需要外接4-16译码器,输入译码器NPCS0~3.输出用于选择16个外设。

强烈推荐观看视频学习【通信原理精讲】! SPI通信原理及应用 纯干货_哔哩哔哩_bilibili

也可以通过图文SPI协议详解(图文并茂 超详细) - 知乎 (zhihu.com)

配置方式(SPI 驱动OLED屏幕)

这里就不多说基本配置了。以及我以后要说的IIC都需要插入文件

进行spi的基础配置

注:根据需要设置Blaud rate.

正常生成工程文件夹后,将所需的第一个文件放入文件夹中,然后打开KALI

在主函数main.c添加头文件

可参考STM32_SPI驱动OLED屏幕

)其实是Bus简称,所以中文应该叫,它是一条串行通信总线,由飞利浦公司在20世纪80年代开发,使主板、嵌入式系统或手机连接低速周边设备。I2C正确的读法是I平方C”("I-squared-C"),而“I二C”("I-two-C")另一种错误但广泛使用的读法。

硬件结构

I2C串行总线一般有两条信号线,一条是双向数据线SDA,另一个是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线SDA上,每台设备的时钟线SCL接到总线的SCL上。

为了避免总线信号的混乱,所有设备在连接到总线的输出端时都必须漏极(OD)输出或集电极开路(OC)输出。串行数据线在设备上SDA接口电路应双向,输出电路用于向总线发送数据,输入电路用于接收总线上的数据。串行时钟线也应双向。作为控制总线数据传输的主机,一方面应通过SCL输出电路发送时钟信号,另一方面检测总线SCL电平决定何时发送下一个时钟脉冲电平;作为接受主机命令的从机,按总线SCL发出或接收信号SDA也可以向上发出信号SCL线发出低电平信号,延长总线时钟信号周期。当总线空闲时,由于每个设备都是泄漏输出,上拉电阻Rp使SDA和SCL线都保持高电平。任何设备输出的低电平都会降低相应的总线信号线,即各设备的低电平SDA与关系,SCL也是与关系。

总线对设备接口电路的制造工艺和电平没有特殊要求(NMOS、CMOS可兼容)I2C总线上的数据传输率可高达每秒10万位,高速模式每秒40万位以上。此外,总线上允许连接的设备数量不得超过400pF为限。

主机控制总线的运行(数据传输)。所谓主机,是指启动数据传输(发出启动信号)、发出时钟信号输结束时发出停止信号的设备。被主机搜索的设备称为从机。为了通信,每个人都收到了I2C总线设备有一个唯一的地址,供主机搜索。主机和从机的数据传送,可以由主机发送数据到从机,也可以由从机发到主机。将数据发送到总线的设备称为发送器,从总线接收数据的设备称为接收器。

I2C存储器、LED及LCD驱动器、A/D及D/A转换器等。为了确保数据的可靠传输,总线只能由任何时候由一个主机控制,每个微处理器都应该在总线的空闲时间发送启动数据。为了妥善解决多个微处理器同时发送启动数据的传输(总线控制权)冲突,决定哪个微处理器控制总线,I2C允许连接不同传输速率的设备。时钟信号在多个设备之间的同步过程称为同步化。

数据传输

在I2C在总线传输过程中,将两种特定情况定义为开始和停止条件(见图3):SCL保持高,SDA从高到低为起点;SCL保持高SDA停止条件从低变为高。主控制器产生开始和停止条件。使用硬件接口可以很容易地检测到开始和停止条件。没有此接口的微机必须每小时至少两次SDA取样以检测这种变化。

SDA线上的数据在时钟“高”期间必须是稳定的,只有当SCL当在线时钟信号较低时,可以改变数据在线的高或低状态。输出到SDA每个字节在线必须是8位,每个字节不受限制,但每个字节必须有响应ACK。如果一个接收器在完成其他功能(如内部中断)之前不能接收另一个数据的完整字节,它可以保持时钟线SCL当接收器准备接收数据的其他字节并释放时钟时,促使发送器进入等待状态SCL之后,数据传输继续进行。I2C数据总线传输时序。

有必要回应数据传输。与响应对应的时钟脉冲由主控制器产生,发送器必须在响应期间下拉SDA线。当被控器件无法响应时,数据保持在较高水平,导致主控器停止并终止传输。在传输过程中,当使用主控制接收器时,主控制接收器必须向被控制发送器发结束信号,使被控发送器释放数据线,以允许主控制器产生停止条件。合法的数据传输格式如下:

I2C总线开始条件后的首字节决定了哪个被控制器将被控制器选择。例外,通用访问地址可以在所有时间内找到。当主控制器输出一个地址时,系统中的每个设备将开始条件后的前7个地址与自己的地址进行比较。如果相同,该设备认为它被主控制器搜索,而被控接收器或被控发送器则取决于R/W位。

配置方式

与SPI如果配置过程相似,请参考本教程

标签: 开口环形脉冲电容器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司