2025-11-08 06:26:57
串口读eeprom就是用i2c总线跟芯片通信。先拿三根线连上,一根接电源供电,两根传数据。比如拿个24lc256芯片,先发个开机器的信号叫起始位,再发芯片地址和读控制位,拿数据线收8个字节的资料。要记住供电得够3.3v,时序别乱,每发完一次数据要发停止位。
为什么得这么操作呢?i2c是带地址总线的,每个芯片都有固定地址。比如24lc256的地址是7位,前三位固定是1010,后四位由接在SDA/SCL上的拉高电阻决定。读数据时得先发地址加读标志,芯片收到后才会回应数据。实测发现拉高电阻接4k7时地址是a0=1010000,接10k时变成1010100。数据线每传一个字节要等SCL拉高再发,否则会出错。供电不足的话芯片根本不工作,测电压表发现低于3.0v就收不到数据了。时序混乱的话波特率得卡死在100khz,比如用单片机io口测波形,发现SCL每9个时钟周期传一个字节才对。
本题链接: