源码分析参见https://blog.csdn.net/xiangsimoyinjiu/article/details/106175606
EEPROM 24L04
- 4 Kbit EEPROM(Electrically Erasable Programmable read only memory)
- 2 blocks 256 * 8 bit memory with a 2-wire serial interface
- 100 kHz and 400 kHz clock compatibility
- Page write time 3 ms, typical
- 16-byte page write buffer
- Hardware write-protect
- More than 1 million erase/write cycles
封装
时序
- Bus Not Busy (A)
- Start Data Transfer (B)
- Stop Data Transfer ©
- Data Valid (D)
- Acknowledge
设备地址
- bit7-bit4:固定1010
- bit3-bit1:文档中说“dont care”,一些地方说是由A1-A3决定的
- bit1:Block Select Bits(2 Blocks)
- bit0:R(1)/W(0)
如果A1-A3为0,则设备的写地址是8’ha0,读地址是8’ha1
读写时序
仿真结果
写操作
- ACK是低电平,NACK是高电平,ACK后面跟了个高电平,这是因为,slave给了ACK以后就释放了SDA,这是SDA其实是高阻态,但接了上拉电阻,所以是高电平,下一个时钟,master接管SDA
- write_data是8’h22,下面那个是其其低四位并取反,所示是0010 -> 1101 -> d
读操作
- read_data是8’h61,下面那个是其其低四位并取反,所示是0001 -> 1110 -> f