外扩的flash接口一般都是SPI(与片上flash不一样,片上flash理解为在已经集成在芯片内部了,集成在芯片内部的flash就一般不存在SPI接口说法了,都是通过总线进行数据的交换。而外扩的flash是理解为硬盘就可以了)。因此外扩的flash一般也说是spi-flash。
SPI是什么?
网上说SPI DSPI QSPI有几根数据线什么,对新手来说谁特么听的懂啊。
直接不多说,上图讲解:
GD25Q16BS为一款FLASH,这个不重要,重要的是接口的8根线。下面逐一讲解:
CS:片选信号,这个不用多说。CS为低电平,FLASH被选中。也就是CS低电平有效。
SCLK:时钟信号,不多说了。时钟信号肯定是由主设备产生的。
VCC:供电的嘛,还用说吗?
GND:接地嘛。
HOLD:保持接口,具体这个接口什么功能不讲述。但是上面这张图,HOLD旁边还写了SPI5_HOLD_I03了吗,待会说。
WP:写保护接口,具体这个接口什么功能不讲述。但是上面这张图,WP旁边还写了SPI5_WP_IO2了吗?待会说。
SO:也就是其他博客说的MISO,全名为mater in slave out。一般mater(也就是主设备)为芯片,对于mater来说,这个口为数据接收。一般slave(从设备)为 flash,对于slave来说,这个口为数据发送。
SI:同理,也为其他博客说的MOSI,mater out slave in。
就是SO,SI组成了 SPI全双工通信的基础,可同时收发。SO,SI,加上CS,和CLK,也就是网上说的四线制,组成了SPI。懂吗?
那么DSPI,是怎么个回事呢?网上说DSPI的数据传输率是SPI的两倍,咋回事呢?
其实很简单,就是上面的SO 和SI 成为普通IO,对于主设备来说可以收,可以发。明白什么意思了吗?
就是SI,对于主设备只能是输出,发送数据。SO,对于主设备只能接收数据。当SPI变成DSPI的时候,SO对于主设备可以输出,也可以输出,SI对于主设备可以输出也可以输入。因此可以同时SO SI输出,或者SO SI 输入,那自然传输数据量肯定是SPI的两倍啊。至于SPI怎么变成DSPI,需要查flash的DATASHEET,这不是本文的重点,就不说了哈。
所以DSPI也是四线制,SI SO CS CLK这四根线。
那么!QSPI为6线制又是咋回事呢,简单点就是,上面的WP和HOLD线,也变成了数据线。所以看到上面图WP和HOLD旁边的标识了没,一个是SPI5_HOLD_I03,一个是SPI5_WP_IO2。也可以变成SPI接口的IO,也可以传输数据。
因此QSPI的6线,为SI SO HOLD WP CS CLK这6根线。至于怎么从SPI变成QSPI,也是需要查手册的。
很多flash都同时支持这SPI DSPI QSPI模式。至此讲解完毕,有什么不懂的可以留言点赞交流。