SPI总线的初步认识
2016-09-17 20:39
190 查看
SPI一般使用4条线通信
1、 MISO ————— 主设备数据输入、从设备数据输出
2、 MOSI ————— 主设备数据输出、从设备数据输入
3、 SCLK ————— 时钟信号、由主设备产生
4、 NSS(CS) ————– 从设备片选信号,由主设备控制
通信方式
SPI是单主设备通信协议,这意味着总线中只有一个中心设备能发起通信,当SPI主设备想读/写从设备时,它要拉低从设备对应的CS线(CS是低电平有效的)。主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。寄存器通过MOSI信号线将字节传送给从机,实现“写”的功能。从机也将自己的移位寄存器中的内容通过MISO信号线返回给主机,实现“读”的功能。这样,两个移位寄存器中的内容就被交换,外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之。若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。
SPI有四种操作模式,模式0、模式1、模式2、模式3。它们的区别是定义了在时钟脉冲的哪条边沿转换输出信号,哪条边沿采样输入信号,还有时钟脉冲的稳定电平值(就是时钟信号无效时是高还是低)。每种模式都由参数时钟极CPOL和时钟期CPHA刻画。
SPI的主从设备必须使用想用的工作参数,SLCK,CPOL,CPHA,才能正常工作,如果有多个从设备,并且它使用了不同的工作参数,那么主设备必须在读写不同从设备间重新配置这些参数。
硬件SPI和软件模拟SPI的区别有哪些?
硬件SPI的效率要比软件模拟SPI高,写程序的时候只要把要发的数据写在寄存器里,硬件就会自动给你发了,软件模拟SPI则需要器实现时钟的拉高拉低,数据串行输出等等。硬件SPI必须要处理器支持才可以用,软件SPI就不需要特定的要求了,一般IO口就可用
今天在做项目时开始接触到了SPI的总线,遇到了一些问题所以查了很多资料,最重要的是弄清楚SPI总线的四条通信线,在画原理图的时候不能接错。由于之前接触过iic总线,所以在看一些资料的时候还是比较轻松的,下面是今天找到的一份资料
SPI总线
SPI是摩托罗拉公司定义的一种串行外围设备接口。SPI总线主要应用于EEPROM、FLASH、实时时钟、AD转换器、还有数字信号处理器和数字信号解码器之间。SPI是一种高速的、全双工的同步通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。SPI一般使用4条线通信
1、 MISO ————— 主设备数据输入、从设备数据输出
2、 MOSI ————— 主设备数据输出、从设备数据输入
3、 SCLK ————— 时钟信号、由主设备产生
4、 NSS(CS) ————– 从设备片选信号,由主设备控制
通信方式
SPI是单主设备通信协议,这意味着总线中只有一个中心设备能发起通信,当SPI主设备想读/写从设备时,它要拉低从设备对应的CS线(CS是低电平有效的)。主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。寄存器通过MOSI信号线将字节传送给从机,实现“写”的功能。从机也将自己的移位寄存器中的内容通过MISO信号线返回给主机,实现“读”的功能。这样,两个移位寄存器中的内容就被交换,外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之。若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。
SPI有四种操作模式,模式0、模式1、模式2、模式3。它们的区别是定义了在时钟脉冲的哪条边沿转换输出信号,哪条边沿采样输入信号,还有时钟脉冲的稳定电平值(就是时钟信号无效时是高还是低)。每种模式都由参数时钟极CPOL和时钟期CPHA刻画。
SPI的主从设备必须使用想用的工作参数,SLCK,CPOL,CPHA,才能正常工作,如果有多个从设备,并且它使用了不同的工作参数,那么主设备必须在读写不同从设备间重新配置这些参数。
硬件SPI和软件模拟SPI的区别有哪些?
硬件SPI的效率要比软件模拟SPI高,写程序的时候只要把要发的数据写在寄存器里,硬件就会自动给你发了,软件模拟SPI则需要器实现时钟的拉高拉低,数据串行输出等等。硬件SPI必须要处理器支持才可以用,软件SPI就不需要特定的要求了,一般IO口就可用
相关文章推荐
- SPI总线的初步认识
- 对51系列单片机SPI总线的认识
- SPI时序初步认识
- spi的初步认识
- SPI总线的基础认识
- SPI时序初步认识
- Hadoop云计算的初步认识
- 和菜鸟一起学linux总线驱动之初识spi驱动数据传输流程
- java网络编程的初步认识,服务器端编程
- javase_20(Awt初步认识)
- Js 原型初步认识
- B/S——初步认识
- 关于I2C 4000 和SPI总线协议
- Spark SQL 下DateFrame的初步认识(1)
- 【C#】对Visual Studio使用的初步认识
- 我的Android进阶之旅------>对Java中注释/**@hide*/的初步认识
- 网站RSS开发的初步认识
- JAVA-初步认识02-第一章
- 【ASP.net】基础知识的初步认识
- [零基础学python]关于类的初步认识