咱们知道,打电话的时分,当拨通电话,接听方捡起电话必定要回一个“喂”,这便是告知拨电话的人,这边有人了。同理,这个第九位 ACK 实践上起到的便是这样一个效果。当咱们发送完了这7位地址和1位方向后,假如发送的这个地址的确存在,那么这个地址的器材应该回应一个 ACK(拉低 SDA 即输出“0”),假如不存在,就没“人”回应 ACK(SDA将坚持高电平即“1”)。
那咱们写一个简略的程序,拜访一下咱们板子上的 EEPROM 的地址,别的再写一个不存在的地址,看看它们是否能回一个 ACK,来了解和承认一下这个问题。
咱们板子上的 EEPROM 器材类型是 24C02,在 24C02 的数据手册3.6节中可查到,24C02 的7位地址中,其中高4位是固定的 0b1010,而低3位的地址取决于详细电路的规划,由芯片上的 A2、A1、A0 这3个引脚的实践电平决议,来看一下咱们的 24C02 的电路图,它和 24C01 的原理图彻底相同,如图14-4所示。
图14-4 24C02 原理图
从图14-4能够看出来,咱们的 A2、A1、A0 都是接的 GND,也便是说都是0,因而 24C02 的7位地址实践上是二进制的 0b1010000,也便是 0x50。咱们用 I2C 的协议来寻址 0x50,别的再寻址一个不存在的地址 0x62,寻址结束后,把回来的 ACK 显现到咱们的 1602 液晶上,我们比照一下。