相关阅读: NUCLEO-F412ZG试用:SYSTICK,独立看门狗,随机数发生. NUCLEO-F412ZG试用:ADC+PWMDAC综合实验 NUCLEO-F412ZG试用体验:DS3231,DS18B20,LCD1602用户自定义外... AT24CXX系列是IIC总线通信的EEPROM(电子可擦除存储器),XX的数字代表单元格数量,以今天用到的AT24C512为例子,AT24C512有512Kb个单元格,即64KB个,即可以存储65535个字节的数据,因此地址空间是0x0000到0xFFFF。AT24CXX每个单元都可以存储一个字节的数据,可以擦除十万次,默认数据是0xFF,可以编程为0x00~0xFF中的任意一个数据。EEPROM的优点是擦除寿命长,写入读出快,缺点是容量小,因此适用于少量频繁更新的数据(如传感器检测数据,临时变量)等的存储。 值得注意的是,因为EEPROM是按地址进行单元格读写,读跟写的函数都必须传送正确的地址,而AT24C02跟AT24C04,AT24C08...AT24C256,AT24C512的地址传送方式是完全不一样的,AT24C02的存储空间大小是2Kb即256B,因此可寻址空间是0x0000到0x00FF,因此传送地址只需要传送一个字节(即仅低八位有效);而AT24C04及以上的EEPROM的可寻址空间都是占用八位以上,即使是可寻址空间只有九位或十位(AT24C04是0x0000到0x01FF,AT24C08是0x0000到0x03FF)也需要传送十六位地址即两个字节,也就是要分两次传送,先传送高八位(addr>>8),再传送低八位(addr%256),跟AT24C02的区别是非常大的。 W25QXX系列是WinBond公司研发的SPI总线通信的FLASH(闪存),XX的数字同样是代表容量,以今天用到的W25Q128为例子,W25Q128有128Mb个单元格,这个单元格跟EEPROM的单元格用法一样,都是可以存储一个字节的可编程的0x00~0xFF的任意一个数据,默认数据也是0xFF,但是物理特性不同,每个单元格只能擦除1000次,并且在编程之前必须发送擦除指令。FLASH的优点是存储容量大,缺点是擦除寿命短,写入读出慢,数据受到物理因素影响易丢失(EEPROM没有这个缺点),因此适用于大量不常更新的数据(如图片文字符号的字模,UI点阵)等的存储。 值得主意的是,FLASH的读写机制是跟DMA一样的,是按起始地址进行一连串的数据读写,因此必须保证起始地址和地址长度没有搞错,并且再次说明写入前必须擦除,否则写入失败。与容量较小的EEPROM不一样,FLASH的的容量都是以MB来计算的,因此地址数值需要用long int(32位)来存储。 W25Q128及以下的型号地址要分三次传送,先传送高八位(addr>>16),再传送中八位(addr>>8),最后传送低八位(addr%256),而W25Q256及以上的型号则要分四次传送。 AT24CXX和W25QXX都是当今单片机使用非常广泛的片外存储器,它们共同的特点是: 1.体积小,拥有SOP封装,可以安装到非常小的电路板上面; 2.串行通信,占用引脚少,比旧式的并行通信总线的存储器更好用; 3.功耗低,只需3.3V供电。 实验效果如下: 老规矩,上传头文件。 |
w25Q64只能擦写1000次?? |