程序小白
认证:优质创作者
所在专题目录 查看专题
RT-Thread驱动之路:stm32设备驱动开发之uart设备创建②
RT-Thread驱动之路:stm32设备驱动开发之uart操作方法③
RT-Thread驱动之路:stm32设备驱动开发之uart中断处理④
RT-Thread驱动之路:stm32设备驱动开发之浅析注册机制⑤
RT-Thread驱动之路:stm32设备驱动开发之SPI原理①
RT-Thread驱动之路:stm32设备驱动开发之SPI对象创建②
作者动态 更多
RT-Thread Studio:硬件移植篇①
1天前
RT-Thread驱动之路:stm32设备驱动开发之HWTIMER开发①
1星期前
RT-Thread驱动之路:stm32设备驱动开发之SPI总线操作方法③
2星期前
RT-Thread驱动之路:stm32设备驱动开发之SPI对象创建②
2星期前
电子元器件那些事儿:三极管工作区的判断如此简单①
3星期前

RT-Thread驱动之路:stm32设备驱动开发之SPI原理①


      开篇分割线,本篇我们来聊聊SPI(串行外围接口)的原理,这种通信主要用于短距离通信,主要应用于EEPROM、flash、实时时钟、AD转换器、解码器等一类外围芯片通信,通信一般使用4根线(记住一般就可以了)。

      SPI是一种总线通信技术,也就是以主从方式工作,想想485总线很类似,通常有一个主设备和一个or多个从设备组成,通信是由主设备发起,通过CS选择想要通信的从设备,也就是每个从设备都有一个片选输入信号CS,一般为低电平使能,高电平禁用,通过主设备来控制从设备是否使能,也就是主设备要和哪一台从设备通信第一步就是将从设备的cs片选拉低,其它的从设备保持高电平处于禁用状态。

      SCLK是串行时钟线,是由主设备输出时钟信号到从设备,MISI是主设备发送数据到从设备,MISO是主设备接收来自从设备的数据,关于数据的方向看图中箭头就可以分辨。

      一般MCU内部都有两个SPI控制器,当然他们大部分时间都是用来做主站(主设备用),挂载多个从设备如下图:

      这个时候我们就需要看下时序图来了解下数据是怎样完成传输的,在那个点上采集电平的:

      从图中我们看到由CPOL和CPHA组合共有四种工作模式,CPOL是时钟的初始电平,CPHA是采集数据的时钟沿,这里可能是上升也可能是下降沿,所以只做第一个沿和第二个沿区分。

      针对标准的SPI通信,摩托罗拉公司还对其进行了增强,增加了QSPI扩展,在原有协议的基础上增加了队列传输机制,退出了队列串行外围接口协议(QSPI),使用该接口用户可以一次性传输16个8位or16位的数据传输队列,一旦启动队列传输是不需要CPU进行干预的,硬件上以80字节的RAM代替数据收发寄存器。

      SPI接口应用最多的就是外围flash芯片,除了标准SPI以外有的还提供Dual和Quad SPI接口:

      Dual SPI:通过发送一个命令字节进入Dual半双工模式,可以加倍的传输数据,这个时候MOSI变成SIO0 MISO变成SIO1,即一个时钟周期发送2个bit数据,数据传输速率加倍。

      Quad DPI:和Dual SPI类似,只是增加了两根IO线,共6根传输线,这样一个时钟内就能传输4个bit数据。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 5
收藏 7
关注 138
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧