-
ATLYS
开发板之
SPI
flash
实验
通过本篇,
您可以了解到如何在
p>
MicroBlaze
系统中实现对
SPI
FLASH
的擦除和读写及
校验的方法。
一、简介
< br>本开发板上使用了
ST
公司的
8
Mbit
SPI
串行接口的
FLAS
H,
芯号为
N25Q128
。
SPI
的接口
速率最大可以达到
108Mhz
。
FLASH
的
容量由
256
个
Sector
组成,每个
Sector
有
256
个
Page,
每个
Page
有
256
个<
/p>
byte
。所以总共为
16777216
个
byte
。
N25Q128
的擦除方法有两种,一种为
Bulk(128Mbit)
擦除,一种为
Sector(
512Kbit)
擦除。
N25Q1
28
的编程方法为
Page
编程,一次
可以写入
256
字节。
FPGA
通过命令的方式对
N25Q128
进行操作,
不管是读,
编程,
< br>擦除或其它操作首先在
第一个字节要对
N25Q128<
/p>
写入命令号。
根据命令格式的不同,
有些
命令后面不跟地址
和数据,有些命令后面需要输出地址或数据,有些命令命令后面既需要
地址又需要
数据。以下是
N25Q128
所支持的命令
具体细节信息,请查看
DATASHEET
。
二、
SPI
FLASH
硬件设计
1
.电路
设计
FPGA
和
N25Q128
的硬件连接非常简单,只有四跟线
SPI
FLASH
的片选信号
CS,
SPI
的
时钟信号
SCK , FLASH
FLASH
数据写入信号
SDI
和数据读出信号
SDO
。
步骤一:
打开
XPS
的
BSB
向导,选择工程要存放的位置和
PLB
总线类型,以及指定
板级支持包的路径,点击
O
K
。
p>
步骤二:
一直点击下一步,默认设置就可以直到出现
选择<
/p>
microblaze
的
Local
Memory
为最大的
64kb
步骤
三:
继续点击下一步出现让你选择处理器外围设备,选择如下
步骤四
:
继续点击
next
直到完成
BSB
向导。
设置参数如下:
参数代表的含义:
Include
both
Receiver
and
Transmitter
FIFOs
这是代表是否
SPI
接口包含接收
FI
FO
寄存器,这里选择包含
TRUE
Ratio of PLB Clock Frequency To SCK Fre
quency
代表
SPI
接口和
SPI FLASH
的时钟
sck
周期是
PLB
时钟的几倍,这里选择
4
倍。
Number
of SPI transfer bits:
代表
SPI
p>
接口一次传输数据的位数,这是选择
8
位。
Total Number of Slave
Select Bits in SS Vector:
代表从设备
SLAVE
的个数,这
里只有一个设备,所以选择
1.
步骤五:修改
MHS
和
ucf
文件
< br>将
xps_spi
的端口修改为如下:
< br>
PORT SCK_O = Flash_SPI_SCK_O
PORT MISO_I = Flash_SPI_MISO_I
PORT MOSI_O = Flash_SPI_MOSI_O
PORT SS_O = Flash_SPI_SS_O
顶层连接修改成如下:
PORT
fpga_0_SPI_FLASH_SCK_pin = Flash_SPI_SCK_O, DIR =
O
PORT fpga_0_SPI_FLASH_MISO_pin =
Flash_SPI_MISO_I, DIR = I
PORT
fpga_0_SPI_FLASH_MOSI_pin = Flash_SPI_MOSI_O, DIR
= O
PORT fpga_0_SPI_FLASH_SS =
Flash_SPI_SS_O, DIR = O
将
UCF
文件修改为如下:
Net
fpga_0_SPI_FLASH_SCK_pin
LOC=R15
|
IOSTANDARD=LVCMOS33;
Net fpga_0_SPI_FLASH_MISO_pin LOC=R13
|
IOSTANDARD=LVCMOS33;
Net fpga_0_SPI_FLASH_MOSI_pin LOC=T13
|
IOSTANDARD=LVCMOS33;
Net
fpga_0_SPI_FLASH_SS
LOC=V3
|
IOSTANDARD=LVCMOS33;
三、
SPI
FLASH
软件设计
为
FLASH
测试新建一个工程,操作方式如下图所示
,
菜单
File
→
< br>New
→
Xilinx
C
Project
在工程向导界面,红圈1处输入项目名称,我将其修改为
p>
hello_flash
,红圈
2
处选
择
Hello_World
工程模版。
点击下一步选择
create a
new board support package project.
点击
Finish
< br>,
完成工程向导。
回到开发环境后在工程窗口会出现
p>
hello_flash
的工程目
录。
p>
到这一步,
hello_flash
的软件
工程已经建好了,
接下去我们来编写
SPI
flash
的测试软
件程序。
首先我们先对
helloworld.c
重命
名为为
hello_flash.c,
再添加两个
.c
源程序,一个
是
SF_
commands.c
,另一个为
xps_spi_drive
s.c
。再添加两个
.h
头程序,一个
为
SF_commands.h
,另一个为
xps_spi_drives.h
。
下面我们来编写
SPI
FLASH
的测试程序。
我们先来编
写
.c
的程序代码。在这个程序里完成对
SPI Flash
的擦
除,编程
和读取验证。如果读取的数据和编程的数据一致,返回
ok
。编
写好的
程序如下:
.c
再来编写
SF_commands.
c
和
SF_commands.h
的程
序代码。
在
SF_commands.c
的程序中编
写了
SPI FLASH
的一些操作函
数。修改好的
SF_commands.c
程序如下图所示:<
/p>
SF_commands.c
-
-
-
-
-
-
-
-
-
上一篇:FreeRTOS进程管理
下一篇:最新人教版三年级下册英语第一单元教案