SPI通信

一、SPI

        SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线。有四根通信线:SCK(Serial Clock)、MOSI(Master Output Slave Input)、MISO(Master Input Slave Output)、SS(Slave Select)。同步,全双工,支持总线挂载多设备(一主多从)。

二、SPI硬件规定

         所有设备SCK、MOSI、MISO分别连接在一起;主机另外引出多条SS控制线,分别接到从机SS引脚;输出引脚配置为推挽输出,输入引脚配置为浮空输入或上拉输入。

        主机SCK发送给从机SCK,产生时钟;MOSI主机输出从机输入;MISO主机输入从机输出;主机SS连接从机SS,低电平为选中该从机。

        波特率发生器产生时钟信号,发送给主机移位寄存器和从机移位寄存器,时钟信号上升沿,主机移位寄存器和从机移位寄存器左移一位,放到MOSI和MISO,时钟信号下降沿,主机和从机对MOSI、MISO进行采样,将数据放到移位寄存器。

        SPI通信实质是进行数据交换。

三、SPI软件规定

1.起始、终止条件

起始条件:SS从高电平切换到低电平。

终止条件:SS从低电平切换到高电平。

2.交换一个字节

模式0(用到最多):CPOL=0:空闲状态时,SCK为低电平。

                                  CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据。

模式1:CPOL=0:空闲状态时,SCL为低电平。

             CPHA=1:SCK第一个边沿移出数据,第二个边沿移入数据。

模式2:CPOL=1:空闲状态时,SCL为高电平。

             CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据。

模式3:CPOL=1:空闲状态时,SCL为高电平。

             CPHA=1:SCK第一个边沿移出数据,第二个边沿移入数据。

四、SPI时序

1.发送指令

        向SS指定的设备,发送指令(0x06)。

2.指定地址写

        向SS指定的设备,发送写指令(0x02)。随后在指定地址(Address[23:0])下,写入指定数据 。

       在0x123456写入数据0x55。

3.指定地址读

        向SS指定的设备,发送读指令(0x03)。随后在指定地址(Address[23:0]),读取从机数据。

        在0x123456读取数据0x55。

五、W25Q64简介

1.W25Qxx

        W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器,常应用于数据存储、字库存储、、固件程序存储等场景。

        存储介质是Nor Flash(闪存),时钟频率80MHz/160MHz(Dual SPI)/320MHz(Quad SPI)。

        存储容量(24位地址:2^24=16MB):

        W25Q40:4MBit/512KByte

        W25Q80:8MBit/1MByte

        W25Q16:16MBit/2MByte

        W25Q32:32MBit/4MByte

        W25Q64:64MBit/8MByte

        W25Q128:128MBit/16MByte

        W25Q256:256MBit/32MByte

2.硬件电路

        普通模式:DO、DI。

        双重SPI模式:DI为IO0,D0为IO1。

        四重SPI模式:DI为IO0,D0为IO1,/WP为IO2,/HOLD为IO3。

        VCC接接线柱VCC,GND接接线柱GND,其他SPI通信线接接线柱SPI通信。/HOLD和/WP接VCC,C1用来滤波,R1用来分压,D1为电源指示灯上电就亮。

3.W25Q64框架

        W25Q64内存空间为了方便管理,分成了块(Block)、扇区(Sector)和页(Page)。块分为8*1024KB/64KB=128个,扇区分为64KB/4KB=16个,页4*1024Byte/256=16个。

        SPI Command&Control Logic是整个SPI管理员;Status Register状态寄存器是写保护、写使能和忙的状态;Write Control Logic与/WP设置写保护;Hight Voltage Generators高电压使掉电数据不丢失;Page Address Latch/Counter对页地址进行寻址;Byte Address Latch/Counter对字节地址进行寻址;Column Decode And 256-Byte Page Buffer字节数据页缓存区,使RAM类型,对输入输出数据进行缓存;Data进行数据传输。

4.Flash操作注意事项

        写入操作时:写入操作前,必须先进行写使能

                              每个数据位只能由1写为0,不能由0写为1

                              写入数据前必须先擦除,擦除后,所有数据位变为1

                              擦除必须按最小擦除单元进行(以扇区为最小擦除单元)

                              连续写入多字节时,最多写入一页的数据,超过页尾位置的数据,会回到页首                                覆盖写入

                              写入操作结束后,芯片进入忙状态,不响应新的读写操作

        读取操作时:直接调用读取时序,无需使能,无需额外操作,没有页的限制,读取操作结束                                  后不会进入忙状态,但不能在忙状态时读取

5.W25Qxx手册

①状态寄存器

        BUSY:忙标志位。

        WEL(Write Enable Latch):写使能或失能锁存。

②指令集

六、软件SPI读写W25Q64

1.实验现象

        

2.硬件设计

3.软件设计

4.用到函数

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值