导航:首页 > IDC知识 > spi主机

spi主机

发布时间:2020-09-04 09:11:18

1、SPI的工作原理中有一句话:如果只进行写操作,主机只需忽略接收到的字节。请问,如何设置主机忽略?

SLAVE是不用主动进行操作的我没用过STM三二,不过可以从SPI接口的原理来解释一下,一般都是按我说的方式工作SPI需要设为MASTER/SLAVE,而且必须一方为主,另一方为从,同步的时钟信号由主设备输出,从设备根据主设备给出的时钟信号进行相应操作。主设备:配置好相关寄存器---->写数据到SPI数据寄存器---->输出时钟脉冲的同时将数据移位输出从设备从设备:配置好相关寄存器---->写数据到SPI数据寄存器---->随着主设备输出的时钟脉冲同时将数据移位输出给主设备 由上可知,SPI的收发是同时进行的,这样就有一些问题需要解释: 一.主设备想读从设备的数据,先发命令,这好理解,直接将命令写到数据寄存器输出即可,但后面读数据的过程主设备应该发送什么?这个问题需要先明白SPI自己并不能支持数据读写这样的操作,而是用户自己利用SPI接口扩展出来的功能,需要定制相关协议,对于读从设备数据,数据序列一般如下。主设备:命令字节一,命令字节二,...,命令字节N,任意数据一,任意数据二,...,任意数据M从设备收到命令字后知道是主设备读数据,就会忽略主设备后面发出的数据,直接将主设备需要读回的数据回传给主设备,主设备发任意数据一的时候从设备回所需读数据第一个字节,依次类推。需要注意的是,从设备必须在主设备发送任意数据一之前就把第一个字节写入SPI数据寄存器,否则主设备读到的数据会不对。 二.在主设备发数据的时候,如果从设备不写数据到SPI数据寄存器,主设备会不会收到数据?对于主设备,只要设置成收发同时进行的模式,就是不连从设备,一样可以收到数据,实际上是每输出一个时钟脉冲,主设备就会将SPI发送口设为相应状态,并从SPI接收口读一个状态放入接收移位寄存器,所以从设备不写数据到SPI数据寄存器,主设备依然可以收到数据。对于这种情况,从设备回传的数据内容不能确定,理论上讲应该是其SPI数据寄存器之前的内容。 三.有的SPI会支持FIFO、DMA等功能,这只是把软件的工作由硬件来完成,收发流程并没有什么不同。 四.你所说的空字节正确的称呼应该是哑元字节(my byte),意思是填充上来凑数的,没有表示任何实际意义

2、关于SPI通信的几个问题。。。。。。

SPI通信方式从机不能主动给主机发送数据。因为SPI是全双工的,主机在发送数据的同时也在接收数据。所以,主机可以通过查询(发送数据给从机,查看接收到的数据)方式来判断从机是否有数据发送给主机,如果有,则主机继续发送数据给从机来获取从机想要发送给主机的数据。
可以继续理解下SPI的工作方式~

3、两台单片机SPI通讯时,为什么有时两台都作为主机,这和一台主机一台从机间通讯有什么区别?

因为你两个单片机都要问和回答,主从是一台问,一台答,而你现在用的有时候要发送问,接收到对方问的时候还要回答

4、spi主机与从机之间发送与接收,从机如何发送数据给主机?

1.如果用主从机切换的方法的话,切换的时机不好掌握,这个问题在主机和从机都想往对方送信的情况下尤其明显,比较方便的方法是主机定周期发送数据(也可以是空数据包),同时收取从机数据包,一般情况下都可以满足通信要求。 2.其实也不是,选用何种通信方式主要是取决于通信协议的要求,还有从设备的接口方式,合适的才是最好的。关于SPI通信从机送信好像还有一种办法,就是从机有送信要求时给主机一个信号,一般用一个端子电平变化,主机利用外部中断截获这个信号,然后驱动通信,应该也可以。

5、spi通信从机如何告诉主机它要发数据

从机不能告诉主机它要发数据,因为数据传输都是由主机发起的

6、在spi传输协议中,从设备要发数据给主设备,这个过程具体是什么样子的?从设备可以很方便的发数据给主设备

利用SPI可以在软件的控制下构成各种系统。如一个主控制器和几个从控制器、几个从控制器相互连接构成多主机系统(分布式系统)、一个主控制器和一个或几个从I/O设备所构成的各种系统等。在大多数应用场合,可以使用一个主控制器作为主控机来控制数据。

并向一个或几个从外围器件传送该数据。从器件只有在主控机发命令时才能接收或发送数据,其数据的传输格式是高位(MSB)在前,低位(LSB)在后。典型的单主系统,该系统只有一台主控制器,其他均为从控制器。


(6)spi主机扩展资料:

SPI有主从两种工作方式。在主模式下,SPI为其他节点的SPICLK引脚提供串行时钟,数据从SPISIMO引脚输出,从SPISOMI引脚输入。主控制器写人数据到寄存器SPITXBUF便启动发送,数据从SPITXBUF传送到SPIDAT中再通过SPISIMO引脚发送出去,先发送最高位;

同时,主控制器接收到的数据通过SPISOMI引脚移入寄存器SPIDAT的最低位。当选定数量的位数发送完时,整个数据发送完毕。

紧接着接收完毕(通过SPISIMO引脚发送的SPIDAT的数据最高位每移出一位后就会从SPISOMI引脚移人一位到SPIDAT最低位)。首先将接收到的数据传送到寄存器SPIRXBUF,并进行右对齐,供CPU读取。

7、spi主设备怎么选择spi从设备

1. 与IIC不同,SPI没有明文标准,只是一种事实标准,对通信操作的实现只作一般的抽象描述,芯片厂商与驱动开发者通过data sheet沟通实现上的细节。因此各种不同的多从机,多主机主要看芯片厂商对芯片的设计。(仔细看datasheet就对了)

2. 多从机的SPI正常的应用会有多根SS线(类似片选线),不同的片选连接不同的从机的SS,想要选择哪个从机只要拉低相应的SS线就可以了。如果芯片本身没有多根SS线,可以用普通的IO口模拟,只是这样一来,通讯开始之前就要先操作IO口了。

8、spi协议从机可以主动传数据给主机吗?或者是必须由主机发起?

1.如果用主从机切换的方法的话,切换的时机不好掌握,这个问题在主机和从机都想往对方送信的情况下尤其明显,比较方便的方法是主机定周期发送数据(也可以是空数据包),同时收取从机数据包,一般情况下都可以满足通信要求。
2.其实也不是,选用何种通信方式主要是取决于通信协议的要求,还有从设备的接口方式,合适的才是最好的。关于SPI通信从机送信好像还有一种办法,就是从机有送信要求时给主机一个信号,一般用一个端子电平变化,主机利用外部中断截获这个信号,然后驱动通信,应该也可以。

9、当单片机的SPI通信有多个从机时,是不是每一个从机上都要连接一个CSN,另外的SCK,MOSI,MISO都是并联的?

当单片机的SPI通信有多个从机时,确实是每一个从机上都要连接一个选片信号CSN,另外的SCK,MOSI,MISO都是并联的。见下图SPI总线的结构图。


一般情况下,从机少于4、5个时,主机用一个IO脚作从机片选还可以。但从机过多了,就不能采用这种方式片选了,占用主机IO脚太多了,应该用74HC138实现片选,可节省主机IO脚了。

10、单片机做spi模拟时怎么知道哪个是主机哪个是从机啊?

CLK MOSI MISO SS,你看片选SS,对主机来说是输出,丛机来说是输入 不是吗?呵呵

与spi主机相关的知识