目录
简介
寻址方式
通信过程
简介
详见链接:
stm入门教程 --SPI总线1(超详细!!)-****博客
寻址方式
SPI一主设备对一从设备
在主设备要给从设备发送信息之前,主设备会先在CS片选线向从设备发送使能信号(有的芯片,有效信号是低电平,有的芯片有效信号是高电平,要看具体芯片),再发送数据信号。
对于主机来说MOSI接口由主机发送从机接收,而MISO为从机发送主机接收
SPI一个主设备对多个从设备
多个从机时,主设备需要多一条从机的片选线,因为,每个从机都需要一个片选线,如图
当主机和某个从设备要进行通信时,主设备需要先向对应从设备的片选先上发送使能信号(高电平或低电平,视情况而定)表示选中该设备。
相比我们前面介绍的IIC协议,它在寻址的时候,是由主机先发送一个字节数据,这个字节数据包含对应想通信的从机地址,确认好想和哪个从机通信后,后面才是真正的发送数据。
对于SPI来说,我们有一根线叫CS(chip select),就是片选。
假设图中Master作为主设备,Slave2为我们想通信的从设备,主机会从CS2线向Slave2发送一个使能信号(这个信号有可能是高电平也可能是低电平,我们这里假设是低电平有效),所以就要往CS2发送1个低电平0;那确定和从设备2通信肯定就不能同时和从设备1通信了,那就要往CS1发送一个高电平1,如果其他设备有很多台,就一起发非使能信号高电平1。
此时 只有主机发送低电平的设备才能够和主机通信
问:如何判断给一个芯片发送高电平是使能信号还是发送低电平是使能信号?
一般情况,在电路图中,如果写的是CS则是高电平有效,如果写的是CS上加横线的,就是低电平有效。
通信过程
SPI总线在进行数据传送时,先传送高位,后传送低外;数据线为高电平表示逻辑“1”,低电平表示逻辑“0”;一个字节传送完成后无需应答即可开始下一字节的传送;SPI总线采用同步方式工作,时钟线在上升沿或下降沿时发送器像数据线上发送数据,在紧接着下降沿或上升沿时接收器从数据上读取数据,完成一位数据传送,八个时钟周期即可完成一个字节数据的传送。
SPI串行通信,先传送高位,在传送低位,比如0x55,二进制为:01010101,发送数据为10101010(右边为最先发送的数据)
在IIC通信中,主机发送完一段数据,从机需要往主机发送一段应答信号,表示从机收到信息了。
但SPI传送完一字节数据之后不需要应答就可以开始下一字节的传送。
问:通信过程中带应答和不带应答的对什么会有影响?
SPI通信过程中没有应答,相对IIC发送一个数据从机发送一个应答,SPI就有可能主机一直在发送,无法确定从机是否有收到数据
问:从机要如何判断主机发送的是01 还是0011(这俩数据信号都是由低电平转为高电平)
UART主要由波特率,也就是根据时间对应收到的具体几个数据来判断,数据发送之前确定对应波特率,波特率一定下来,发送每一位数据所需要的时间也就确定下来了,所以,异步通信靠的是测量数据发送的时间来确定
同步通信:是靠数据线中的时钟线来确定,时钟线由高电平变为低电平的时候,发送器往数据线上放一位数据,时钟线变为高电平时,接收器读取刚刚发送的数据
对于SPI来说,时钟线空闲时为高电平,
假设现在要发送数据,时钟线就会变成低电平,时钟线出现一个下降沿,这段时间就是让发送器发数据;时钟线再由低电平变为高电平时,即上升沿,接收器开始接收数据;再过一会时钟线由高电平变成低电平出现下降沿时,继续发送第二位数据,紧接着时钟线由低电平变成高电平,产生上升沿时,接收器开始接收第二位数据,以此往复。一个字节八位,时钟线高低高低变换八次就可以实现一个字节数据的发送。