FPGA设计与实战演练课件:SPI-I2C存储实验电路搭建与驱动程序设计_第1页
FPGA设计与实战演练课件:SPI-I2C存储实验电路搭建与驱动程序设计_第2页
FPGA设计与实战演练课件:SPI-I2C存储实验电路搭建与驱动程序设计_第3页
FPGA设计与实战演练课件:SPI-I2C存储实验电路搭建与驱动程序设计_第4页
FPGA设计与实战演练课件:SPI-I2C存储实验电路搭建与驱动程序设计_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SPI-I2C存储实验电路搭建与驱动程序设计基于口袋机综合实验设计目录一、实验目的

二、实验设备三、实验原理四、

实验代码解析五、实验步骤六、实验现象七、拓展思考八、应用领域一、实验目的了解EDA软件。程序的下载和仿真了解如何正确分配和配置单片机的I/O口熟悉和使用EEPROM和SPI_FLASH。二、实验设备口袋机口袋机下载线JC-PM4模块JC-PM15实验扩展板

三、实验设备

实验器件简介:

美国ATMEL公司的AT24系列(两线串行链接协议)及AT93系列(三线串行链接协议)由于此类芯片没有安全控制逻辑,所以在对安全性有一定要求的场合中很少应用。正因为其功能简单、价格较为便宜、较好的通用性等使其具有易于开发、使用方便等优点,比较适合于IC卡的初期推广应用及较为简单的应用场合,如食堂售饭卡等。详细资料见芯片手册

三、实验原理

SPI-I2C存储模块原理图:原理图说明I2C存储采用AT24C64芯片FLASH存储采用SST25VF016,SPI接口的FLASH

功能说明AT24C64,存储容量65,536bits,8192字节,采用I2C接口SST25VF016,存储容量16Mbit,采用SPI接口

三、实验原理

实验原理:我们先打开AT24C64的资料

64K代表多大的存储空间,我们计算一下8192X8=65536这个是bit

1个字节是8bit所以65536/8=8192字节/1024=64k字节所以芯片的存储空间是64k字节

三、实验原理

实验原理:芯片的引脚定义关于I2C接口的时序大家需要仔细看一下芯片手册下面我们看一下sst25vf016b的芯片手册

三、实验原理

实验原理:可以看到是SPI接口的16Mbit就是2M字节的存储芯片芯片的引脚定义和说明

三、实验原理

程序分析:程序编译然后使用下载软件,下载单片机程序,看一下现象AT24C64-WRITE:12向AT24C64芯片写入0x12AT24C64-READ:12从AT24C64芯片读出数据并显示0x12spi_flash_read_IDBF2541读取sst25vf016b芯片的ID读到的ID是0x25SPI_WRITE:00SPI_READ:00向sst25vf016b写入100个字节的数据0x00-0x64(0-100)从sst25vf016b读取100个字节的数据0x00-0x64(0-100)屏幕显示不了全部数据就显示了第一个字节,串口打印有全部的数据,可以使用串口调试助手查看

三、实验原理

程序分析:

下面我们结合程序,逻辑分析仪,时序图,讲解使用I2C总线读写AT24C64

使用逻辑分析仪连接的CH1CH2连接模块的I2C总线

三、实验原理

程序分析:

CH1连接PB13SDA

CH2连接PE1SCL

打开逻辑分析仪软件设置采样率和采样点数

三、实验原理

程序分析:软件的右上角添加I2C协议分析

三、实验原理

程序分析:

点击开始后复位一下单片机(按口袋机面板上右下角的按钮)注意这个触发方式要设置好,不然捕捉不到波形

三、实验原理

程序分析:

如果一直是这样等待的进度条,说明CH1没有波形改变需要检查的地方:1、复位单片机,试试2、重新下载,试试3、检查CH1的杜邦线是否连接到扩展板的PB13SDA

三、实验原理

程序分析:

捕捉到了波形后,使用鼠标的滚轮放大后面的那个波形前面这一段就是写时序

三、实验原理

程序分析:

SDA和SCL平时没有数据的时候都是高电平I2C的起始信号要求:SCL为高的时候,SDA由高变低,就是起始信号看一下程序程序没有问题

三、实验原理

程序分析:

再看一下结束时序SCL为高的时候SDA由低变高

三、实验原理

程序分析:

采集到的结束时序没有问题看一下程序在开始时序后,接着是8bit数据

三、实验原理

程序分析:

可以看到采集到的波形发送的数据是1010000016进制是0xA0程序中发送的正是0xA0

三、实验原理

程序分析:

发送8bit数据的函数原型,从高位开始发送

然后是一个ACK信号,时钟SCL需要主机发送一个脉冲,SDA输出高电平,这时,如果从器件收到前面的8bit数据后,就会把SDA总线拉低,单片机在SCL上给出高脉冲的同时读取SDA电平,如果是0就是有ACK信号,如果是1,从器件就没有应答

三、实验原理

程序分析:

SCL输出了一个脉冲SDA上是低电平,表示从器件发出了应答(从器件输出0,把SDA总线拉低了)程序中就是运行到了这一步

三、实验原理

程序分析:

下一步就是主机发送地址8bit逻辑分析仪软件会自动判断协议,并按照I2C的协议解析数据

三、实验原理

程序分析:

程序中后续又发送了3个字节并且从芯片都发出来ACK应答信号

三、实验原理

程序分析:

我们存储的数据是0x12,逻辑分析仪显示的是18显示进制的问题我们一起设置一下

三、实验原理

程序分析:选择HEX显示就可以了已经和程序一致了

三、实验原理

程序分析:就在第二个波形中,就是读时序我们使用鼠标滚轮展开波形上面是I2C写时序,相同的原理,我们看一下I2C读时序

三、实验原理

程序分析:

结合读的程序可以自己分析一下还可以参考AT24C64的资料的第8页,有详细的说明

三、实验原理

程序分析:

我们使用相同的方案分析一下SPI总线的sst25vf016b芯片的读写使用逻辑分析仪连接扩展板上的SPI-FLASH相应的引脚先把刚才使用的I2C协议删除添加SPI接口协议

三、实验原理

程序分析:

按照默认配置添加按照程序中的引脚定义连接CH1PA5CH2PD7CH3PA4CH4PF1

三、实验原理

程序分析:

先简单介绍一下SPI接口SPI接口一般为4跟线分主设备和从设备主设备一般是单片机,从设备一般是被控设备,如FLASH、数字芯片式传感器CS为片选信号,右主设备发出,从设备接收低电平有效,也就说从设备的CS为低时,从设备才能和主设备通过SPI接口通讯,为高时,从设备不响应。MOSI(masteroutslavein)是主发送从接收MISO(masterinslaveout)是主接收从发送SCLK是时钟,由主设备发送,从设备接收

三、实验原理

程序分析:SPI接口通过多路片选和分时与不同的从设备通讯只要在发送数据和接收数据前把要通讯的从设备的片选置低就可以了,其他设备片选全是高电平,这样通讯就不会错乱,口袋机上的网口芯片USBhost芯片都是采用SPI接口的SPI总线上挂载了三个设备,都是通过片选分时复用的(可以从口袋机原理图中看出)

三、实验原理

程序分析:

SPI时序主设备给从设备发送一个字节MOSI是有数据的高位在前在每个CLK上升沿,从设备读取数据CLK开始前片选CS先变低一个字节发送完毕后片选CS变低

三、实验原理

程序分析:

上图是SPI发送两个字节(一般是写从机的寄存器)

第一个字节一般是命令或者地址第二个字节是要写入的数据只有MISO有效,MISO不用关心(因为不需要读取数据通过SPI主机从从机哪里读取一个字节第一个字节是读取命令或者是地址第二个字节是MISO发出来的,单片机会自动读取

三、实验原理

程序分析:

我们使用逻辑分析仪采集一下SPI接口的波形设置采样频率和采样点设置16进制显示数据

三、实验原理

程序分析:

修改一下main.c文件主函数中,先读取了FLASH的ID,然后向FLASH中写入100字节,再读出100字节由于波形太多,所以我们先把后面读写100字节那部分程序注释掉,这样便于采集波形打开main.c文件,把上图部分的程序注释掉然后编译下载

三、实验原理

程序分析:

开始采集按一下口袋机的复位键,重启设备放大后的波形

三、实验原理

程序分析:

对应的程序同时可以打开芯片资料

三、实验原理

程序分析:

打开到19页,描写有关读取芯片ID的部分可以对比一下波形

三、实验原理

程序分析:

读取的第一步:CS片选变低然后单片机先发送一个0x9F,数据在MOSI线上

三、实验原理

程序分析:第二个字节是读取数据从器件会在MISO上发送数据第三字节和第四字节也是相同的读取器件ID分析完毕开发SPI-FLASH技巧总结先看手册中是否有读取芯片的ID部分,或者是某些寄存器能够读取到固定的数据,然后编程读取程序,运行读取程序,使用串口的printf函数把读取到的数据打印出来,使用串口调试助手观察,如果读取到的数据和手册中的数据一致,说明SPI发送程序正常,读取的数据不对,检查程序,或者使用逻辑分析仪观察时序,看是哪一步出了问题,第一步读取固定数据正常后,再利用写好的基础程序,编写其他功能程序。

三、实验原理

程序分析:

下面开始写数据、读数据把主函数中的注释去掉编译下载到单片机中然后运行使用逻辑分析仪采集波形放大采集到的波形

三、实验原理

程序分析:

这部分的时序就是FLASH的擦除,写入,读取。可以结合程序,芯片资料,时序图,了解一下芯片是如何擦除,写入,读取的

三、实验原理

程序分析:同时程序会把写入的数据和读取到的数据通过串口打印出来可以打开串口调试助手查看写入100字节(0x00-0x63)读取100字节(0x00-0x63)说明读取到的数据和写入的数据相同读写功能正常

四、实验原理

模块引脚说明:

四、参考代码分析

STM32F4XX单片机GPIO框架图

五、参考代码分析

STM32F4XX单片机GPIO库函数解析-结构体

五、参考代码分析

STM32F4XX单片机GPIO库函数解析-结构成员配置模式功能配置速度配置

四、参考代码分析

STM32F4XX单片机GPIO库函数解析-结构成员配置输出类型端口上下拉初始状态

四、参考代码分析

存储配置函数详细配置函数见参考程序五、参考代码分析

主函数时钟初始化开始外设初始化收发数据并打印结束

五、实验步骤

1、将实验模块插在扩展模块的位置4,如下图2、打开程序3、下载程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论