没有合适的资源?快使用搜索试试~ 我知道了~
首页完整的读写flash解读(IIC方式与SPI方式相比较,基于STM32F103ZET6)
前言 前面的博客描述了如何读写flash,可能还对读写flash思路还是不是那么的清晰,首先我们用的是外置的flash,就要模拟跟外部硬件通讯的时序,这样外部硬件才能识别主控侧发出的信号是什么! SPI是全双工,同步的时钟总线! 目的 通过SPI的方式,实现对外部flash(W25Q128)的读与写,写入的内容读出后在TFTLCD上显示出来。SPI方式可以控制FLASH,EEPROM,虽然前面的博客时使用IIC来控制EEPROM(24c02),其实是一个结果,用不同的方式实现功能。 原理 我们来简单看一下内部的构造图: 从内部简明图可以看出,主机smart和从机slave都有一个串行移位寄存
资源详情
资源评论
资源推荐

完整的读写完整的读写flash解读解读(IIC方式与方式与SPI方式相比较方式相比较,基于基于
STM32F103ZET6)
前言前言
前面的博客描述了如何读写flash,可能还对读写flash思路还是不是那么的清晰,首先我们用的是外置的flash,就要模拟跟外
部硬件通讯的时序,这样外部硬件才能识别主控侧发出的信号是什么!
SPI是全双工,同步的时钟总线!
目的目的
通过SPI的方式,实现对外部flash(W25Q128)的读与写,写入的内容读出后在TFTLCD上显示出来。SPI方式可以控制
FLASH,EEPROM,虽然前面的博客时使用IIC来控制EEPROM(24c02),其实是一个结果,用不同的方式实现功能。
原理原理
我们来简单看一下内部的构造图:
从内部简明图可以看出,主机从内部简明图可以看出,主机smart和从机和从机slave都有一个串行移位寄存器,主机通过向他的都有一个串行移位寄存器,主机通过向他的SPI串行移位寄存器写入数据进行串行移位寄存器写入数据进行
发起数据传输,此寄存器通过发起数据传输,此寄存器通过MOSI将数据(将数据(1BYTE)传输给从机,此时,从机通过自己的移位寄存器将其中的内容)传输给从机,此时,从机通过自己的移位寄存器将其中的内容
((1BYTE)移出来发送给主机,这样就实现了,两个移位寄存器中内容的交换。)移出来发送给主机,这样就实现了,两个移位寄存器中内容的交换。
所以外设的写操作和读操作是也就是这样被完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从
机的一个字节,就必须发送一个空字节来引发从机的传输。
SPI 接口一般使用接口一般使用 4 条线通信:条线通信:
MISO 主设备数据输入,从设备数据输出。
MOSI 主设备数据输出,从设备数据输入。
SCLK 时钟信号,由主设备产生。
CS 从设备片选信号,由主设备控制。
通信时钟极性与相位通信时钟极性与相位
SPI 总线四线工作方式 SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配
置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果 CPOL=1,串
行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果
CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果 CPHA=1,在串行同步时钟的第二个跳变沿
(上升或下降)数据被采样。SPI 主模块和与之通信的外设备时钟相位和极性应该一致。
对比对比
和IIC对比,两者都是相似的配置方式
不同点:
IIC:需要模拟真实的硬件时序,数据接收,数据发送的每一个时序需要自己从底层函数构造起来
SPI:不需要构造最基础的单个字节数据发送与接收函数,可以直接调用库函数
相同点:
初始化结束,构造出能够发送与接受(单个字节)函数,作为调用的接口,在构造能够写入指定的地址,数据,长度等等,都
是通过发送和接收函数完成的。
从从IIC读写读写24c02(eeprom)到到SPI读写读写falsh((w25q128),都是先构造使用此方式实现器件的读写基础函数,适用于大多数使),都是先构造使用此方式实现器件的读写基础函数,适用于大多数使
用此原理进行通信的外部硬件,再根据具体的外部硬件属性,构造出来真正可以与外部器件通信的函数,如果读者没有发现,用此原理进行通信的外部硬件,再根据具体的外部硬件属性,构造出来真正可以与外部器件通信的函数,如果读者没有发现,
就需要大家自己要对自己的代码进行总结,为何要分模块编写我们的器件就需要大家自己要对自己的代码进行总结,为何要分模块编写我们的器件?
硬件连接硬件连接



















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0