SCK为同步时钟,MOSI为主输出从输入,MISO为主输入从输出。看到SPI通讯中的某些资料,MOSI,MISO,SCK是直联的(经测试是可以的),但有些ISP编程器却加上三个上拉电阻。
输出1: MCU输出1+(上拉) 或 MCU高阻+上拉。
输出0: MCU输出0+(上拉) 或 MCU输出0+上拉。
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。
(1)SDO _ 主设备数据输入,从设备数据输出(修改时间17年120,如有错大家改正);
(2)SDI _ 主设备数据输出,从设备数据输入(修改时间17年120,如有错大家改正);
(3)SCLK _ 时钟信号,由主设备产生;
(4)CS _ 从设备使能信号,由主设备控制。
补充一下楼上的回答:1 接线的问题主机的输出就是从机的输入,主机的输入就是从机的输出。所以会有交叉连接。
2 就像楼主描述的全双工是双方可以同时发送数据,但是主从机的特点是谁输出SCK信号,而不是谁发送数据。如果从机有个数据要发送,但是主机却没有数据要发送,这时候从机要么等待主机定时发送,要么把主动把主机设置成从机。SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR。外围设备包括FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCLK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线NSS(有的SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。
SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。
SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。
编辑本段接口包括以下四种信号:
(1)MOSI – 主器件数据输出,从器件数据输入
(2)MISO – 主器件数据输入,从器件数据输出
(3)SCLK – 时钟信号,由主器件产生
(4)NSS – 从器件使能信号,由主器件控制,有的IC会标注为CS(Chip select)
在点对点的通信中,SPI接口不需要进行寻址 *** 作,且为全双工通信,显得简单高效。 多个从器件硬件连接示意图在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。
SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。如下图所示,在SCLK的下降沿上数据改变,同时一位数据被存入移位寄存器。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)