驱动外设总结

eeprom模块:

1、介绍:支持协议为IIC,以字节为单位进行读写,也就是一个内部储存器地址所指向的数据长度为8个位即一个字节,它支持一次读写一个字节和一次连续读写8个字节。

2、常见的分为AT24C01/02/04/08/16/32/64/128/256/512/1024,分别提供1kbit/2kbit/4kbit/8kbit/16kbit/32kbit/64kbit/128kbit/256kbit/512kbit/1024kbit空间来读写。

3、设备地址:地址位数为8,前四位固定为1010,后四位中的前三位由3个引脚决定,最后一位是R/W位,即最后一位由写或读决定,写是0,读是1。其中3个引脚分别为A0、A1和A2。也就是说最多可以接8个eeprom。但不是每个器件的设备地址都全由A0、A1和A2来控制,有的有其中两个来控制有的有一个甚至有的不由A0、A1和A2来控制,这是由于剩下的位用来做内部存储器地址。相应的表如下,

9a55960c76cd407f967353caaa70e6c8.png

例如,要对at24c02读操作且引脚全都接地,则地址为1010 0001,即0xA1,写的话地址为0xA0.

4、内部储存器地址:首先说明一点内部储存器地址长度是由容量决定的,首地址从0开始,然后依次递增,也就是说地址可以是0可以是1可以是2,但是最大是由位数决定的。AT24C01、AT24C02地址长度为8位。AT24C04地址长度为9位,其中第一位是由A0引脚决定,这也就是为什么AT24C04的设备地址抛去A0引脚的原因。注意AT24C16的设备地址将3个引脚全抛去了,也就是说总线上只能接一个AT24C16,且AT24C16的内部储存器地址长度为11位。猜测at24c32及32以上芯片应该内部储存器地址长度为16位。在hal库中MemAddSize可以设为I2C_MEMADD_SIZE_8BIT或I2C_MEMADD_SIZE_16BIT.

5、写保护引脚:wp,接gnd允许正常读写,接vcc写保护。

6、注意事项:要将i2c时钟速度调低,我测试过了,取10000以下的都可以,系统时钟基本不会产生影响取72mhz即可,影响才能正常操作,速度太快eeprom反应不过来。每次写完数据都要加一个延时,比如Hal_Delay(5).

w25qxx模块:

1、介绍:属于NOR flash,支持spi协议中的模式0和模式1,以扇区为单位或整片进行擦除操作。在写数据之前要先进行擦除操作,因为它可以将1写为0但是不可以将0写为1,由于w25qxx的这种以扇区为单位进行擦除的特性,使得它修改数据是不易操作的,所以一般将它中的数据读到eeprom中然后再进行读写修改操作,再保存的w25qxx中。W25Q64内部分为128个块(Block),每个块的大小是64K字节。  每个块分为16个扇区(Sector),每个扇区的大小是4K字节。每个扇区分为16页(Page),每个页的大小是256个字节。各型号分成的块和扇区大小是一样的,只是不同大小的flash分成块的数量不一样。一个地址指向1个字节的空间,w25qxx共有24位的地址,也就是寻址空间为128Mbit。特别注意在进行擦除或写的时候要先进行写使能,只要是改变数据就要先进行写使能操作。在擦除某个扇区时,一般发送的地址取这个扇区的首地址,当然地址只要是这个扇区里面的地址都可以,只不过习惯地址取这个扇区的首地址。在此将读写操作概括如下。

1、读取设备id(常用来测试是否能正常测试芯片)

  (1)cs引脚设为低电平。

          读取设备id

          cs引脚设为高电平。

2、擦除操作

(1)cs引脚设为低电平。

          判断是否忙碌,即判断状态寄存器的s0是否为1,为1表示忙碌。

          cs引脚设为高电平。

  (2)cs引脚设为低电平。

           写使能命令

           cs引脚设为高电平。

  (3)cs引脚设为低电平。

           擦除命令

           cs引脚设为高电平。

3、写操作(这里把擦除操作也放里面了,当然也可以不擦除直接写,但是要注意原来flash中的数据是否都是0xff,如果不是则要进行擦除操作):

  (1)cs引脚设为低电平。

          判断是否忙碌,即判断状态寄存器的s0是否为1,为1表示忙碌。

          cs引脚设为高电平。

  (2)cs引脚设为低电平。

           写使能命令

           cs引脚设为高电平。

  (3)cs引脚设为低电平。

           擦除命令

           cs引脚设为高电平。

  (4)cs引脚设为低电平。

           判断是否忙碌

           cs引脚设为高电平。

  (5)cs引脚设为低电平。

           写使能命令

          cs引脚设为高电平。

  (6)cs引脚设为低电平。

           写入数据命令

           cs引脚设为高电平。

4、读操作:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值