SPI是一个全双工的同步串行接口,在数据传输过程中,总线上只能是一个主机和一个从机进行通信;
通信四种模式:
1、MISO(Master In Slave Out)
主机输入,从机输出;
2、MOSI(Master Out Slave In)
主机输出,从机输入;
3、SCK(Serial Clock)
串行时钟信号
4、SS(Slave Select)
从机选择信号,低电平有效;(即作从机时,该位置低)
SPI总线可在软件的控制下构成各种系统
SPI总线与多从机连接
SPI的基本结构相当于两个8位移位寄存器的首尾相接,构成16位的环形移位寄存器,从而实现了主机与从机的数据交换;
SPI接口的基本结构图
SPI主从模式
设置MSTR(主设备选择)和SPE位(使能位)来选择是否工作在主模式还是从模式;
stm32强大之处:因为从机NSS位必须接0,而主机NSS位接1;stm32可以有软件来设置相应的主从位;
SPI下时钟信号的相位和极性(设置由与之通信的具体芯片来设定)
SPI接口可由CPOL和CPHA设定4种不同传输格式的时序;
CPOL决定时钟脉冲SCK的有效脉冲方式(正脉冲、负脉冲)。CPHA决定数据线MOSI什么时候输出数据或采集数据;
根据CPOL和CPHA的组合数目,一共四种设置情况;
数据图分析:
数据帧的格式
根据SPI_CR1寄存器中的LSBFIRST位,输出数据位时可以MSB(高位先传)在先也可以是LSB(低位先传),根据SPI_CR1寄存器的DFF位,每个数据帧可以是8位或者16位,所选择的数据帧格式对发送/接收都有效;
SPI通信配置步骤:(在主模式下,串行时钟在SCK脚产生)
1、通过SPI_CR1寄存器的BR[2:0]位定义串行时钟波特率;
2、选择CPOL和CPHA位,定义数据传输和串行时钟间的相位关系;
3、设置DFF位来定义8/16位数据帧格式;
4、配置SPI_CR1寄存器的LSBFIRST位定义帧格式;
5、如果NSS引脚需要工作在输入模式,硬件模式中在整个数据帧传输期间应把NSS脚连接到高电平;在软件模式中,需要设置SPI_CR1寄存器的SSM和SSI位,如果NSS引脚工作在输出模式,则只需设置SSOE位;
6、必须设置MSTR和SPE位(只当NSS被连到高电平,这些位才能保存置位)。
在这个配置中,MOSI脚是数据输出,而MISO脚是数据输入;
SPI通信过程:
stm32之SPI通信视频资料
>
利用SPI可以在软件的控制下构成各种系统。如一个主控制器和几个从控制器、几个从控制器相互连接构成多主机系统(分布式系统)、一个主控制器和一个或几个从I/O设备所构成的各种系统等。在大多数应用场合,可以使用一个主控制器作为主控机来控制数据。
并向一个或几个从外围器件传送该数据。从器件只有在主控机发命令时才能接收或发送数据,其数据的传输格式是高位(MSB)在前,低位(LSB)在后。典型的单主系统,该系统只有一台主控制器,其他均为从控制器。
扩展资料:
SPI有主从两种工作方式。在主模式下,SPI为其他节点的SPICLK引脚提供串行时钟,数据从SPISIMO引脚输出,从SPISOMI引脚输入。主控制器写人数据到寄存器SPITXBUF便启动发送,数据从SPITXBUF传送到SPIDAT中再通过SPISIMO引脚发送出去,先发送最高位;
同时,主控制器接收到的数据通过SPISOMI引脚移入寄存器SPIDAT的最低位。当选定数量的位数发送完时,整个数据发送完毕。
紧接着接收完毕(通过SPISIMO引脚发送的SPIDAT的数据最高位每移出一位后就会从SPISOMI引脚移人一位到SPIDAT最低位)。首先将接收到的数据传送到寄存器SPIRXBUF,并进行右对齐,供CPU读取。
参考资料来源:百度百科-SPI接口
SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM, FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。
SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号:
(1)MOSI – 主器件数据输出,从器件数据输入
(2)MISO – 主器件数据输入,从器件数据输出
(3)SCLK – 时钟信号,由主器件产生
(4)/SS – 从器件使能信号,由主器件控制
在点对点的通信中,SPI接口不需要进行寻址 *** 作,且为全双工通信,显得简单高效。
在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。
SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。如下图所示,在SCLK的下降沿上数据改变,同时一位数据被存入移位寄存器。
SPI接口内部硬件图示:
最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。主从设备作用上的区别在于:
1、PCI主设备可以获取PCI总线主控权, 控制PCI从设备; PCI从设备不能获取PCI总线主控权, 只能被PCI主设备控制。
2、PCI主设备可以执行DMA,实现突发传输,峰值数据率为132MB/s; PCI从设备没有DMA能力,x86上,PCI从设备不能实现突发传输,所以,峰值数据率为32MB/s。
PCI(Peripheral Component Interconnect)是 一种由英特尔(Intel)公司1991年推出的用于定义局部总线的标准。此标准允许在计算机内安装多达10个遵从PCI标准的扩展卡。区别:SPI:高速同步串行口。3~4线接口,收发独立、可同步进行
UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢
SPI:一种串行传输方式,三线制,网上可找到其通信协议和用法的
3根线实现数据双向传输
串行外围接口 Serial peripheral interface
UART:通用异步收发器
UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终
端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了
。作为接口的一部分,UART还提供以下功能:
将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行
数据转换为字节,供计算机内部使用并行数据的器件使用。在输出的串行数据流中加入
奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,
并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠票也是
串行设备)。可以处理计算机与外部串行设备的同步管理问题。有一些比较高档的UART
还提供输入输出数据的缓冲区,现在比较新的UART是16550,它可以在计算机需要处理数
据前在其缓冲区内存储16字节数据,而通常的UART是8250。现在如果您购买一个内置的
调制解调器,此调制解调器内部通常就会有16550 UART。
I2C:能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)