1、根据命令格式的不同,有些命令后面不跟地址和数据,有些命令后面需要输出地址或数据,有些命令命令后面既需要地址又需要数据。以下是N25Q128所支持的命令具体细节信息,请查看DATASHEET。二、SPI FLASH硬件设计 1电路 设计FPGA和N25Q128的硬件连接非常简单,只有四跟线 SPI FLASH的片选信号CS, SPI 的时钟信号 SCK , FLASH FLASH数据写入信号 SDI和数据读出信号 SDO。步骤一:打开XPS的BSB向导,选择工程要存放的位置和PLB总线类型,以及指定板级支持包的路径,点击OK。步骤二:一直点击下一步,默认设置就可以直到出现选择microblaze
2、的Local Memory为最大的64kb步骤三:继续点击下一步出现让你选择处理器外围设备,选择如下步骤四:继续点击next直到完成BSB向导。设置参数如下:参数代表的含义:Include both Receiver and Transmitter FIFOs这是代表是否SPI接口包含接收FIFO寄存器,这里选择包含TRUERatio of PLB Clock Frequency To SCK Frequency代表SPI接口和SPI FLASH的时钟sck周期是PLB时钟的几倍,这里选择4倍。Number of SPI transfer bits:代表SPI接口一次传输数据的位数,这是选择8
3、位。Total Number of Slave Select Bits in SS Vector:代表从设备SLAVE的个数,这里只有一个设备,所以选择1.步骤五:修改MHS和ucf文件将xps_spi的端口修改为如下:PORT SCK_O = Flash_SPI_SCK_OPORT MISO_I = Flash_SPI_MISO_IPORT MOSI_O = Flash_SPI_MOSI_OPORT SS_O = Flash_SPI_SS_O顶层连接修改成如下:PORT fpga_0_SPI_FLASH_SCK_pin = Flash_SPI_SCK_O, DIR = OPORT fpga_
4、0_SPI_FLASH_MISO_pin = Flash_SPI_MISO_I, DIR = IPORT fpga_0_SPI_FLASH_MOSI_pin = Flash_SPI_MOSI_O, DIR = OPORT 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_SP
5、I_FLASH_MOSI_pin LOC=T13 | IOSTANDARD=LVCMOS33;Net fpga_0_SPI_FLASH_SS LOC=V3 | IOSTANDARD=LVCMOS33;三、SPI FLASH软件设计为FLASH测试新建一个工程,操作方式如下图所示, 菜单FileNewXilinx C Project 在工程向导界面,红圈处输入项目名称,我将其修改为hello_flash,红圈2处选择Hello_World工程模版。点击下一步选择create a new board support package project.点击Finish,完成工程向导。回到开发环境后在工
6、程窗口会出现hello_flash的工程目录。到这一步,hello_flash的软件工程已经建好了,接下去我们来编写SPI flash的测试软件程序。首先我们先对helloworld.c重命名为为hello_flash.c,再添加两个.c源程序,一个是SF_commands.c,另一个为xps_spi_drives.c。再添加两个.h头程序,一个为SF_commands.h,另一个为xps_spi_drives.h。下面我们来编写SPI FLASH的测试程序。我们先来编写hello.flash.c的程序代码。在这个程序里完成对SPI Flash的擦除,编程和读取验证。如果读取的数据和编程的数据
7、一致,返回ok。编写好的程序如下:Hello.flash.c再来编写SF_commands.c和SF_commands.h的程序代码。在SF_commands.c的程序中编写了SPI FLASH的一些操作函数。修改好的SF_commands.c程序如下图所示:SF_commands.c在SF_commands.h头文件中定义SF_commands.c中的函数及使用的一些常量。修改好的SF_commands.h文件如下图所示:SF_commands.h再编写xps_spi_drives.c和xps_spi_drivers.h的程序代码。修改好的程序如下图所示:xps_spi_drives.c在x
8、ps_spi_drivers.h头文件中定义xps_spi_drivers.c中所调用的一些常量和函数。编写好的xps_spi_drivers.h文件如下图所示:xps_spi_drives.h程序修改完成后我们就可以来调试运行了,运行之前先保存工程,SDK会自动编译一遍。因为我们要printf函数输出到串口的terminal中去,所以我们首先要安装串口驱动。如何下载驱动并且安装参考手册。安装好驱动后,知道用的是COM4口下面我们来调试程序的运行:Because this is an FPGA, you must configure it with a bitstream that loads
9、 a design into theFPGA. In this case, the design is an embedded processor system.1. In SDK, select Xilinx Tools Program FPGA.The bitstream (BIT) and block memory map (BMM) files are automatically populatedfor you.2. Click Program. When the Programming completes, your FPGA is configured withyour desi
10、gn.At this point, you have downloaded the bitstream to the FPGA and initialized themicroprocessor with a single-instruction “branch-to-itself” program called“bootloop.”Bootloop keeps the processor in a known state while it waits for anotherprogram to be downloaded to run or be debugged.3. In the Pro
11、ject Explorer, under hello_world_0 Binaries, right-clickhello_world_0.elf and select Debug As Launch on Hardware.The executable is downloaded to the hardware where specified in the linker script.A dialog box might appear, informing you that the perspective is about to change fromC/C+ to Debug. Selec
12、t the Remember my Decision check box and click Yes. TheDebug Perspective opens.4. Open a terminal emulation program and set the display to 9600 baud, 8 bit data, 1 stopbit. Be sure to set the COM port to correspond to the COM port that the Silicon Labsdriver is using.5、Execute the code by clicking the Resume button or pressing F8 on your keyboard。等一会terminal 1会输出如下SPI FLASH的测试实验就讲完了。本实验主要讲解如何在MicroBlaze系统中使用SPI控制器及对SPI FLASH的擦除,编程,读取的操作。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2