关于如何控制FLASH,以下是从互联网上获取的最新信息,以及相关的详细解释和示例:
1、SPI协议简介
物理层:
信号线作用:SPI通讯设备之间通常使用3条总线(SCK、MOSI、MISO)及片选线(SS),这些信号线的作用如下:
SS (Slave Select):从设备选择信号线,也称为NSS或CS,当主机要选择从设备时,将该从设备的NSS信号线设置为低电平,从而选中该从设备。
SCK (Serial Clock):时钟信号线,用于通讯数据同步,不同的设备支持的最高时钟频率不一样。
MOSI (Master Output, Slave Input):主设备输出/从设备输入引脚,主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据。
MISO (Master Input, Slave Output):主设备输入/从设备输出引脚,主机从这条信号线读入数据,从机的数据由这条信号线输出到主机。
协议层:
基本通讯过程:SPI通讯的起始信号是NSS信号线由高变低,停止信号是NSS信号由低变高,在SCK的每个时钟周期,MOSI和MISO传输一位数据,且只在NSS为低电平时有效。
数据有效性:SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步,在SCK的下降沿时刻,MOSI及MISO的数据有效。
CPOL/CPHA及通讯模式:SPI一共有四种通讯模式,主要区别在于总线空闲时SCK的时钟状态以及数据采样时刻,CPOL表示SPI通讯设备处于空闲状态时,SCK信号线的电平信号,CPHA表示数据的采样时刻,SPI分成了四种模式,实际中采用较多的是“模式0”与“模式3”。
2、STM32的SPI特性及架构
SPI外设简介:
SPI外设功能:STM32的SPI外设可用作通讯的主机及从机,支持最高的SCK时钟频率为fpclk/2,完全支持SPI协议的4种模式,数据帧长度可设置为8位或16位,可设置数据MSB先行或LSB先行。
3、eFlash控制器的架构设计
架构设计思路分析:
模块分析:eFlash控制器是一个基于AHB的slave,需要一个AHB_slave_if处理AHB的信号,AHB_slave_if与AHB总线进行交互,对主设备的请求进行处理,并可以设置一些内部的寄存器,对AHB发送过来的信号进行解析。
Flash_ctrl信号分析:Flash_ctrl接收AHB_slave_if模块发送过来的命令(cmd)和数据(cmd_payloads),cmd表示读写擦操作(read/write/prog/page erase/mass erase),Flash_ctrl接收到命令之后,生成具体的Flash控制信号发送给Flash0或者Flash1。
读写操作控制:
读操作控制:读取数据时间需要24ns,如果使用200M的时钟,时钟周期是5ns, 读取Flash的数据需要5个cycle的时间,为了延迟5个cycle,Flash_ctrl模块需要返回一个hready_ctrl给AHB_slave_if,表示dout是不是有效的,读的时候,AHB发起请求之后可以进行等待,需要将hready_ctrl拉低5个cycle之后再拉高。
写操作详解:写操作,Tnvs = 5us,200M时钟频率,需要1000个周期进行建立时间,所以写一笔数据耗费的时间非常长,所以写操作不适合使用读操作的方式,而是使用中断的形式进行,配置完成之后,AHB_slave_if发起一个enable信号或者start信号,写命令和数据通过cmd和cmd_payload给到Flash_ctrl,Flash_ctrl根据状态机按照时序图将数据写入Flash,写完之后,Flash_ctrl发送一个finish信号给到AHB_slave_if。
4、FLASH与EEPROM芯片
Flash存储器:
特点:Flash存储器是一种非易失性存储器,具有RAM和ROM的一些特点,与ROM类似,Flash存储器的内容在断电时不会丢失,但与RAM类似,它可以通过编程来修改存储的内容,Flash存储器通常用于嵌入式系统中存储程序代码、配置数据等。
擦除和编程方法:Flash存储器通常使用扇区擦除的方式来擦除数据,并使用编程器进行编程,扇区擦除意味着需要一次性擦除一整个存储扇区,然后才能进行写入操作。
EEPROM:
特点:EEPROM是一种可编程的非易失性存储器,可以通过电擦除和编程来修改存储的内容,EEPROM具有RAM的特点,可以随机读写,但也具有ROM的特点,存储的内容在断电时不会丢失,EEPROM通常用于存储配置数据、参数设置等。
擦除和编程方法:EEPROM可以通过逐字节擦除和编程来修改数据,因此擦除和编程更加灵活和精细。
5、FLASH(W25Q64JV)常见操作
常见操作:
写使能:SPI采用模式0或3。
读状态寄存器:读取状态寄存器的值,以判断FLASH的状态。
读数据:先传输指令03h,然后地址,接着FLASH返回读数据。
页编程:写数据之前需要执行擦除,至少写一个byte数据,最大可写246byte,此时字节地址应该为0。
扇区擦除:给扇区擦除指令和地址即可进行扇区擦除。
控制FLASH涉及到多个方面的知识,包括SPI协议的理解、STM32的SPI特性及架构、eFlash控制器的设计以及FLASH与EEPROM芯片的区别等,这些知识可以帮助开发人员更好地理解和掌握如何控制FLASH存储器,从而提高嵌入式系统的开发效率。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/771918.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复