10、详解面试的必答题——I2C协议 (下)


内容简介

2024-02-02

对于从事FPGA行业的应届生来说,在面试过程中很可能会被问到关于I2C协议的一些内容,尤其是碰到比较重视基本功的面试官,答好了,就是大大的加法,答不上了,也是大大的减分。为什么呢?首先因为这个协议简单,简单的都不会必然容易引起人的遐想,其次,它很好的考查了应试者对时序对协议的理解,FPGA玩的就是时序,如果答不上了那就有理由怀疑FPGA学的程度了。故在此笔者将详细的阐述IIC协议,并用AT24C04芯片进行实验。

03

AT24C04的IIC接口


    AT24C04是Ateml公司的4Kb得电可擦除存储芯片,采用I2C总线实现与主设备进行数据交换。该芯片可以说是我们学习I2C协议的一个很好的实验对象,而且还挺便宜。硬件结构也简单,如图所示,



3.1 单字节写操作

    节写操作如图所示,就是用上述八种状态进行组合



    其中,写从器件地址就是写操作,高4bit是硬件ID,固定的,A2、A1根据硬件连接确定,由于4Kbit存储空间的寻址范围是0到511,写地址的8bit是不够的,故用P0作为写地址的最高位。



3.2 连续写

    连续写和单字节写是一样的,但连续写也不是你想写多少就写多少,AT24C04每页大小为8byte,如果从页起始来写如(0000_0000或0000_1000),则可以写8字节,如图从0000_0010。来写,则最多只能写6字节,在换页之间还有有一定的延时。



3.3 读当前地址数据

    读当前地址是操作最为简单的一种操作方式,也是最不常用的一种方式,如图所示,写完设备地址直接读数据。



3.4 随机读单字节

    随机读顾名思义就是可以读任意位置的一个字节数据,其实可以说随机读是在读当前地址数据上演化来的,我们将读指针指向我们要读的地址位置,再去读当前地址数据就是随意读了。



3.5 顺序读

    顺序读说白了就是读多字节,如图所示,当然读也是有限制的,和连续写一样一样的。



想了解更多内容请点击原文链接








快来扫描下方二维码关注公众号,领取站内所有相关资料,所有哦~

有建议、有需求、有疑问、联系我

<