首页 > 编程知识 正文

什么是芯片配置,24c16芯片说明

时间:2023-05-06 09:28:57 阅读:165856 作者:1880

一、SPI闪存芯片能做什么,存储了什么类型的数据? SPI FLASH一般比EEPROM大得多。 所以容量SPI FLASH占优势。 但是,价格方面EEPROM占优势。

1、IIC EEPROM------容量小,采用IIC通信协议; 用于在关闭电源时保存系统配置参数,如屏幕亮度。 常用芯片型号有AT24C02、FM24C02、CAT24C02等,常用封装多为DIP8、SOP8、TSSOP8等;

2、SPI NorFlash------容量稍大,采用SPI通信协议; 用于存储程序和数据。 程序和数据可以存储在同一个芯片上,具有独立的数据总线和地址总线,可以高速随机读取,系统直接从Flash中读取代码并执行; 可以用单字节或字编程,但不能用单字节擦除。 必须对Sector单位或整个片执行擦除操作。 常见的S25FL128、MX25L1605、W25Q64等机型都是SPI NorFlash。

3、spin and flash----采用spino rflash等SPI通信协议存储数据; 读写速度变化不大,但存储结构采用与Parallel NandFlash相同的结构,因此SPI nand相对于SPI norFlash具有改写次数多、改写速度快的优点。

4、eMMC闪存----eMMC采用统一的MMC标准接口,eMMC相当于NAND闪存主IC; 内置MMC控制器,存储单元与NandFlash相同。 常见的KLMAG8DEDD、THGBMAG8B4JBAIM、EMMC04G-S100等机型都是EMMC闪存。

5、SD卡------它是在MMC的基础上发展起来的,有两种可选的通信协议。 SD模式和SPI模式。

二. W25Q16原理图和图钉

(cs ) cs是芯片选择引脚,低电平有效。 接通电源后,在执行新命令之前,/CS管脚必须具有下降沿。 DO(miso ):do为串行数据输出端子,在CLK )端子的下降沿输出数据。 WP:WP是写保护引脚,有效电平为低电平。 高电平可写,低电平是只读的。 DI(mosi ):DI是串行数据输入引脚,数据、地址和命令通过DI引脚输入芯片内部,在CLK (串行时钟)引脚的上升沿捕获数据。 CLK(slck ):clk是串行时钟引脚。 在SPI时钟引脚上,向输入输出提供时钟脉冲。 HOLD:HOLD为固定引脚,低电平有效。 CS为低电平,降低HOLD时,数据输出引脚将保持高阻状态,数据输入引脚和时钟引脚的信号将被忽略。 提高固定针,设备恢复正常工作。 VCC:电源2.7v至3.6v。 接地:接地。 三. SPI FLASH四种模式标准SPI

标准SPI通常称为SPI,是一种串行外围设备接口标准,有四个引脚信号: clk、cs、mosi和miso

双SPI

此模式仅适用于SPI闪存,但不适用于所有SPI外围设备。 对于SPI

Flash,由于全双工并不普遍,所以扩展了mosi和miso的用法,为了使数据传输加倍,进行了半双工操作。 即双SPI情况

Flash,您可以发送命令字节进入双模式,以便MoSi (数据输入)成为SiO0)序列

0 )、通过将MoSi (数据输出)变为SiO1) serialio1),可以在1个时钟脉冲内传输2个比特数据,数据传输将加倍。

Qual SPI

与双SPI类似,向SPI Flash、Qual SPI和Flash添加了两条I/O线(SIO2、SIO3 ),目的是在一个时钟内传输四个位。

因此,SPI Flash有标准的SPI Flash、双SPI、四SPI三种,分别支持3-wire、4-wire、6-wire,在同一时钟中,线路数越多,传输速率越大

四. w25 qxx闪存芯片存储器1、存储大小

W25Q16的存储单位为Page页、Sector扇区、块块,其中

第1页==256 Bytes1Sector扇区==第16页=4096B=4KB1Block块==16 Sector扇区=95536B=64KB

以W25Q16JV为例,16表示内存容量为16M_bit。 上图为W25Q16JV的框图,其他各机型的容量请参照下表。

W25Q80DV容量为8M-bit、16 Block、256 Sector、4096 Page W25Q16容量为16M-Bit、32 Block、512 Sector、8192 Page W25Q32容量为32M-Bit、 64块即16384页w25q 64容量为64M-Bit、128块、2048 Sector、32768页w25q 128容量为128M-Bit、256块、4096 Sector、65536页

闪存芯片

内的数据只能由1变0,不能由0变1(这也是往FLASH写入数据先看是否全1,如果不是先擦除的原因)。擦除大小最小为4K。在Flash中,是按照Page进行写数据的,Page(256字节)是写的最小单位,写的起始地址也必须永远是Page的倍数。
5.2 数据格式
数据格式为数据长度8位大小,先发高位,再发低位

五、W25Q16的SPI指令

通过SPI给FLASH发送特定的数据使得FLASH完成特定功能,这些数据即W25Q16的SPI指令,这些指令在W25Q16数据手册讲解很详细,比如你可以通过阅读数据手册编程实现FLASH读取数据的功能,但由于正点原子已经将这些指令封装成了一堆库函数,你只需要知道库函数的功能就可以了,所以指令不再细讲。详解见下面大佬链接:
大佬博客:SPI指令详解

六、W25Q16的实时数据存储

要文件系统[链接],为啥??,其实不用,我只是想学学,所以找了下面几个原因:
1、难以记录有效数据的位置
2、难以确定存储介质的剩余空间
3、不明确应以何种格式来解读数据

文件系统FATFS创建及移植步骤:官网下载 -> 配置ffconf.h文件相关功能 -> 打开 diskio.c,进行底层驱动编写(官网有辅助文档)-> f_mkfs函数格式化-> f_mount函数注册工作区域,参考野火的文件系统教程,很详细。

移植过程详细配置步骤:
1、ffconf.h文件配置:

FF_USE_MKFS1FF_USE_FASTSEEK1FF_USE_LABEL1FF_CODE_PAGE437FF_USE_LFN1FF_VOLUMES1FF_MIN_SS512FF_MAX_SS4096

2、diskio.c编写,参考野火视频讲解。
3、main函数编写测试文件(主要的测试包括格式化测试、文件写入测试和文件读取测试三个部分,主要程序都在main.c文件中实现。),参考野火视频教程。

下面是FATFS移植参考链接:
超详细的FATFS移植教程:链接
W25Q16移植文件系统:链接
正点原子文件过于冗余:链接

经过一星期的学习,我实现了Flash上文件系统的读写操作,但这里使用SPI Flash芯片作为物理设备,并不像SD卡那么方便直接用读卡器就可以在电脑端打开验证。另外一个问题,就目前来说,在SPI Flash芯片上挂载FatFs好像没有实际意义,无法发挥文件系统功能,但至少学会如何移植了。

七、在FLASH中存储小数

FLASH是一个物理设备,他的存储原理与场效应管差不多,只能存储0或1,所以存储在其中的数据没有类型可言,只有把数据读出来之后存储的地方才决定了如何解读这些数据。
例: 现在将int型 a1=2,float型 b1=3.3,double型 c1=4.4存储到的FLASH中,存储长度与变量类型长度相同。然后再从FLASH中读取相应数据到:int型a2,float型b2,double型c2,之后你会发现a2=a1、b2=b1、c2=c1,为啥呢?
因为不管要往FLASH写入什么类型的数据,传输的都是数据在MCU的内存中存储的机器数,拿 float型举例,float A = 66.8 ; 66.8存储在MCU就是一个由 0、1 组成长度为 32 位的机器数(大概第一位表示符号位,中间几位表示指数位,后面表示数值位,具体参考链接),这个 32 位的机器数8位8位的发送存储到FLASH没改变排列顺序。如果你用一个 float 型变量读取 FLASH 中的 32 位数据,其实就是把 FLASH 中的 32 位数据8位8位的传输到了float型变量在MCU的内存中,所以这个变量 B 依然表示66.8 。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。