IIC SPI协议基本解析

IIC协议简介
IIC协议是一种通信协议,串行通信协议,半双工通讯,可以让mcu与其他外设进行通讯,可以挂载多个主机与从机,每次通信只可以一个主机与一个从机通讯。iic有两根总线,SCL总线(串行时钟线)用来时钟同步收发,SDA总线(双向串行数据线)用来数据的收发。要实现设备的通讯就要首先知道设备的独立地址,一般这个地址在设备的手册上有查阅设备手册就可以知道,地址有7位地址与10位地址,一般用的是7位地址,IIC设备的读与写(传输方向选择位)与设备的7位地址组成了一个新的8位地址,读是1,写是0。例如,EEPROM的设备地址格式为1010XXX,如果一个设备的地址为1010 000即0x50,与传输方向选择位组成一个新的8位地址。1010 0000 (0xA0)设备写地址,1010 0001(0xA1)设备读地址。
IIC的引脚模式必须使用开漏模式GPIO_Mode_AF_OD
IIC读写的基本过程
1:产生起始信号(SCL保持高电平,SDA由高电平变为低电平后,延时(>4.7us),SCL变 为低电平)
2:广播设备地址+传输方向选择位
3:等待应答信号。
4:发送数据(字节)(1个字节为8bit)
5:等待应答信号
6:重复发送数据(4,5)
7:停止信号(SCL保持高电平。SDA由低电平变为高电平)

传输速率:在初始化中配置,
标准模式下是100kbit/s,
快速模式下400kbit/s,
高速模式下3.4Mbit/s

IIC协议的优点
可以添加多个从机设备(连接到相同总线的 IC 数量受到总线的最大电容 400pF 限制 。 ),只有两根总线占用资源少,故障的诊断和调试简单

SPI通信协议简介:
一种串行外围设备接口,是一种高速全双工的通讯总线,它被广泛地使用在ADC、LCD等设备与MCU间,要求通讯速率较高的场合。一般只有一个主机,有多个从机,主机与从机间有三根总线,一根片选线。三根总线并联在各个设备之间,片选线串联在主机与从机之间。
三根总线分别是:
SCK(时钟信号线):用于通讯数据同步,由通讯主机产生,决定了通讯的速率。
MOSI(主设备输出/从设备输入):主机的数据由这条线输出,从机的数据由这条线输入
MISO(主设备输入/从设备输出):主机从这条信号线读入数据,从机的数据由这条信号线输出到主机

片选线:CS/NSS
有多少个从机设备与主机相连,就有多少条片选线,每个设备拥有一条独立的片选线,spi设备没有设备地址,通过拉低CS作为设备通讯的开始信号,CS拉高作为设备通讯结束信号。

SPI一共有四种通讯模式(SPI0,SPI1,SPI2,SPI3),它们的主要区别是总线空闲时SCK的时钟状态以及数据采样时刻,通过不同的时钟极性CPOL和时钟相位CPHA来设置

时钟极性CPOL是指SPI通讯设备处于空闲状态时,SCK信号线的电平信号,即SPI通讯开始前、 NSS线为高电平时SCK的状态,SCK在空闲状态时为低电平,CPOL=1时,相反。

时钟相位CPHA是指数据的采样的时刻,当CPHA=0时,MOSI或MISO数据线上的信号将会在SCK时钟线的“奇数边沿”被采样。当CPHA=1时,数据线在SCK的“偶数边沿”采样

SPI主模式收发流程
1:控制NSS信号线,产生起始信号
2:把要发送的数据写入到“数据寄存器DR”中,该数据会被存储到发送缓冲区
3:通讯开始,SCK时钟开始运行。MOSI把发送缓冲区中的数据一位一位地传输出去;MISO则把数据一位一位地存储进接收缓冲区中;
4:当发送完一帧数据的时候,“状态寄存器SR”中的“TXE标志位”会被置1,表示传输完一帧,发送缓冲区已空;类似地,当接收完一帧数据的时候,“RXNE标志位”会被置1,表示传输完一帧,接收缓冲区非空;
5:等待到“TXE标志位”为1时,若还要继续发送数据,则再次往“数据寄存器DR”写入数据即可;等待到“RXNE标志位”为1时,通过读取“数据寄存器DR”可以获取接收缓冲区中的内容。

SPI的传输速率受以下影响
1:SPI的最大时钟频率
2:CPU处理SPI数据的能力
3:pcb所允许的最大传输速率

SPI的最大时钟频率在spi初始化中设置SPI_BaudRatePrescaler ,设置波特率分频因子,分频后的时钟即为SPI的SCK信号线的时钟频率。这个成员参数可设置为fpclk的2、4、6、8、16、32、64、128、256分频。 最大是2分频时钟频率。stm32f103ve系列时钟频率是72M
那么最大spi传输速率可达36Mbit/s

版权声明:本文为CSDN博主「数与形」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qqp1455755691/article/details/122906804

IIC协议简介
IIC协议是一种通信协议,串行通信协议,半双工通讯,可以让mcu与其他外设进行通讯,可以挂载多个主机与从机,每次通信只可以一个主机与一个从机通讯。iic有两根总线,SCL总线(串行时钟线)用来时钟同步收发,SDA总线(双向串行数据线)用来数据的收发。要实现设备的通讯就要首先知道设备的独立地址,一般这个地址在设备的手册上有查阅设备手册就可以知道,地址有7位地址与10位地址,一般用的是7位地址,IIC设备的读与写(传输方向选择位)与设备的7位地址组成了一个新的8位地址,读是1,写是0。例如,EEPROM的设备地址格式为1010XXX,如果一个设备的地址为1010 000即0x50,与传输方向选择位组成一个新的8位地址。1010 0000 (0xA0)设备写地址,1010 0001(0xA1)设备读地址。
IIC的引脚模式必须使用开漏模式GPIO_Mode_AF_OD
IIC读写的基本过程
1:产生起始信号(SCL保持高电平,SDA由高电平变为低电平后,延时(>4.7us),SCL变 为低电平)
2:广播设备地址+传输方向选择位
3:等待应答信号。
4:发送数据(字节)(1个字节为8bit)
5:等待应答信号
6:重复发送数据(4,5)
7:停止信号(SCL保持高电平。SDA由低电平变为高电平)

传输速率:在初始化中配置,
标准模式下是100kbit/s,
快速模式下400kbit/s,
高速模式下3.4Mbit/s

IIC协议的优点
可以添加多个从机设备(连接到相同总线的 IC 数量受到总线的最大电容 400pF 限制 。 ),只有两根总线占用资源少,故障的诊断和调试简单

SPI通信协议简介:
一种串行外围设备接口,是一种高速全双工的通讯总线,它被广泛地使用在ADC、LCD等设备与MCU间,要求通讯速率较高的场合。一般只有一个主机,有多个从机,主机与从机间有三根总线,一根片选线。三根总线并联在各个设备之间,片选线串联在主机与从机之间。
三根总线分别是:
SCK(时钟信号线):用于通讯数据同步,由通讯主机产生,决定了通讯的速率。
MOSI(主设备输出/从设备输入):主机的数据由这条线输出,从机的数据由这条线输入
MISO(主设备输入/从设备输出):主机从这条信号线读入数据,从机的数据由这条信号线输出到主机

片选线:CS/NSS
有多少个从机设备与主机相连,就有多少条片选线,每个设备拥有一条独立的片选线,spi设备没有设备地址,通过拉低CS作为设备通讯的开始信号,CS拉高作为设备通讯结束信号。

SPI一共有四种通讯模式(SPI0,SPI1,SPI2,SPI3),它们的主要区别是总线空闲时SCK的时钟状态以及数据采样时刻,通过不同的时钟极性CPOL和时钟相位CPHA来设置

时钟极性CPOL是指SPI通讯设备处于空闲状态时,SCK信号线的电平信号,即SPI通讯开始前、 NSS线为高电平时SCK的状态,SCK在空闲状态时为低电平,CPOL=1时,相反。

时钟相位CPHA是指数据的采样的时刻,当CPHA=0时,MOSI或MISO数据线上的信号将会在SCK时钟线的“奇数边沿”被采样。当CPHA=1时,数据线在SCK的“偶数边沿”采样

SPI主模式收发流程
1:控制NSS信号线,产生起始信号
2:把要发送的数据写入到“数据寄存器DR”中,该数据会被存储到发送缓冲区
3:通讯开始,SCK时钟开始运行。MOSI把发送缓冲区中的数据一位一位地传输出去;MISO则把数据一位一位地存储进接收缓冲区中;
4:当发送完一帧数据的时候,“状态寄存器SR”中的“TXE标志位”会被置1,表示传输完一帧,发送缓冲区已空;类似地,当接收完一帧数据的时候,“RXNE标志位”会被置1,表示传输完一帧,接收缓冲区非空;
5:等待到“TXE标志位”为1时,若还要继续发送数据,则再次往“数据寄存器DR”写入数据即可;等待到“RXNE标志位”为1时,通过读取“数据寄存器DR”可以获取接收缓冲区中的内容。

SPI的传输速率受以下影响
1:SPI的最大时钟频率
2:CPU处理SPI数据的能力
3:pcb所允许的最大传输速率

SPI的最大时钟频率在spi初始化中设置SPI_BaudRatePrescaler ,设置波特率分频因子,分频后的时钟即为SPI的SCK信号线的时钟频率。这个成员参数可设置为fpclk的2、4、6、8、16、32、64、128、256分频。 最大是2分频时钟频率。stm32f103ve系列时钟频率是72M
那么最大spi传输速率可达36Mbit/s

版权声明:本文为CSDN博主「数与形」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qqp1455755691/article/details/122906804

生成海报
点赞 0

数与形

我还没有学会写个人说明!

暂无评论

相关推荐

STM32使用各种传感器的demo

各种传感器的demo 最近有假期有空整理了一些传感器的使用方式 激光测距 激光测距是我在完成电磁炮项目用的模块,大家也可以去借鉴我以前的文章,使用起来也是方便,当时涂方便,利用的是串口