浅谈物联网嵌入式系统的常用的外部存储器【拜托了,物联网!】
0、前沿
IoT 常用的物联网芯片一般内存都比较有限,那如何存储经常因为断网需要存储的数据的的呢,这时候就需要外部存储了。
1、外部存储器
常见MCU的存储器可以分为RAM—存储需要计算的数据和程序,ROM芯片内部用于保存的启动程序或整个程序代码,FLASH芯片的内置外部存储器;今天这里要说的是另一个常用来的操作的外部存储器——EEPROM
EEPROM和FLASH有什么分别呢
FLASH | EEPROM | |
写单位 | byte | byte |
擦单位 | 块 | byte |
寿命 | 1万次 | 100万次以上 |
常见大小 | 大于10MB | 小于512KB |
写入时间 | 长 | 短 |
成本 | 低 | 高 |
因为两者之间的差别,所以大多数时候我们经常需要外挂EERPOM来暂存数据,不用经常写的代码保存在FLASH中
2、常见EERPOM芯片
单独的 EEPROM 组件,其通信口通常可分为串行(serial)与并行(parallel)两类。除电源线外,串行通信口只使用1~4只接线来传递信号,所需接脚较并行式少,通常用来存储资料。运行用的程序则通常放在并行式的 EEPROM 中,以利访问。
1️⃣Microwire 通信口(4线):型号为以 93 开头的系列。例:93C46
2️⃣I2C 通信口(2线):型号为以 24 开头的系列。例:24LC02
3️⃣SPI 通信口(3线):型号为以 25 开头的系列。例:25LC08
4️⃣UNI/O通信口(1线):由 Microchip 公司出品,型号为以 11 开头的系列。
5️⃣1-Wire 通信口(1线):由 Dallas / Maxim 公司出品
这里面最常用的就是I2C总线的24系列芯片 。
3、IIC总线
I²C(Inter-Integrated Circuit)字面上的意思是集成电路之间,它其实是I²C Bus简称,所以中文应该叫集成电路总线。I²C的正确读法为“I平方C”("I-squared-C"),而“I二C”("I-two-C")则是另一种错误但被广泛使用的读法。
其物理拓扑如下图:
I²C只使用两条双向漏极开路(Open Drain)线,其中一条线为传输数据的串行资料线(SDA),另一条线是启动或停止传输以及发送时钟序列的串行时脉(SCL)线,这两条线上都有上拉电阻。I²C允许相当大的工作电压范围,但典型的电压准位为+3.3V或+5v。
软件实现:
一开始,主节点处于主节点发送模式,发送起始位(START),跟着发送希望与之通信的从节点的7bit位地址,最后再发送一个bit读写位,该数据位表示主节点想要与从节点进行读(1)还是写(0)操作。
如果从节点在总线上,它将以ACK字符比特位应答(低有效)该地址。主节点收到应答后,根据它发送的读写位,处于发送模式或者接收模式,从节点则处于对应的相反模式(接收或发送)。
4、LiteOS 使用EERPOM
LiteOS官方没有iic的通用驱动,一般是调用bsp的驱动去完成。如使用STM32,就可以直接代用HAL 的IIC驱动进行EERPOM的读写。启动LiteOS在Driver层实现EERPM-I2C的通用驱动在,这样换芯片就更容易移植了。
【拜托了,物联网!】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/296704
- 点赞
- 收藏
- 关注作者
评论(0)