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分频时钟频率,可达到50Mbps。stm32f103ve系列时钟频率是72M 那么最大spi传输速率可达36Mbit/s
|