三大总线之SPI总线学习

最近由于很少写代码感觉自己变得菜的不要不要的,心里很是内疚,姑且写篇博客安慰下自己。

将以前写的spi接口配置Flash芯片从入手到仿真详细阐述一下吧。

1、项目接手我使用的芯片为M25P16Flash芯片,该款芯片首页如下:

从首页中我标红部分可以看到:该款Flash容量为16Mbit,兼容Spi总线接口,最大时钟频率可以达到50Mhz,超过10万次的擦除写入次数,长达20年的数据保存周期。

一页里面有256个字节,一个扇区里面有512kbit。

以该款芯片为例,讲解SPI总线接口的应用。

其实到这里我刚接手也是很迷茫,到底什么是页、什么是扇区、Flash内部结构到底是怎样的呢?下面我以一张图为大家详细展示。

从上图中可以看到Flash内部分为扇区-页-字节,Flash先把整块存储器件划分为多个扇区、再把扇区分为页,再把页分为字节,根据首页介绍一页里面即一个Page里面有256个字节,根据首页一个扇区里面有512Kbit折算下来一个扇区里面有256页,具体计算过程如下:

(512kbit x1024)/(256 x8) = 256页

根据首页介绍整块Flash容量为16Mbit,对它进行扇区计算,也就是说该款Flash总共有32个扇区,具体计算过程如下:

(16bit x1024Kbit)/(512Kbit) = 32扇区

到这里我们就很清楚了,这款Flash总共有32个扇区,每个扇区里面有256页,每页里面有256字节等。

Flash内部进行数据存储都是基于字节进行存储的,也就是说它的一个地址里面存的数据其实就是一个字节,8个bit。

那么如果说想对这款Flash进行写入或者读取的话,应该怎么做呢?寻址方式应该是怎么样的呢?

应该是这样的,我们首先要确定扇区地址,再确定页地址,再确定对该页哪一个字节进行操作,也就是说寻址方式首先要确定扇区,再确定页,之后再确定字节。

那如果说对该款Flash用上述方式进行寻址,总共需要多少个数据来表示地址呢?即计数器位宽应该是多少?总共是32个扇区,理论上需要5个bit来表示32个扇区的信息,扇区里面有256页,理论上需要8个bit来表示页地址,页里面有256个字节,理论上也需要8个bit,这样算下来扇区地址5个bit,页地址8个bit,字节地址8个bit,总共需要21个bit的数据来表示地址信息。

以上便是关于该款Flash的粗略介绍,以下介绍SPI总线。

2、SPI总线介绍

以FPGA和板级Flash芯片为例,简单介绍SPI总线的连接方式。

猜你喜欢

转载自www.cnblogs.com/jb9527/p/10785819.html