1)按照方案先对IIC模块进行初始化:使能IIC模块,模块时钟频率设为50kbit/s,不发送应答信号,其初始化函数代码如下。
2)E2PROM地址。
图12-14 E2PROM设备地址
IIC通信过程中,E2PROM通常为从设备模式。MCU对AT24C02B的读/写操作在传输开始信号后要求一个8位的E2PROM地址,如图12-14所示。AT24C02B的地址的前4位是固定的1010。接下来的A2~A0是E2PROM地址位(此3位由输入其相应引脚上的硬件连线所决定),因而在IIC总线系统中最多可寻址8个E2PROM设备。E2PROM地址的最低位是读/写操作选择位。读操作时设置为高,写操作时设置此位为低。在寻址过程中E2PROM的地址匹配寻址地址后,E2PROM输出0(即应答MCU),否则芯片将返回待机状态。综上,按照设计电路图12-13所示,本例中E2PROM的地址引脚接地,故A2A1A0=000,因而AT24C02B地址为1010000X(其中X为读写控制)。
3)写字节操作。
AT24C02B的数据传输遵循IIC总线规范。一个写操作要求在E2PROM地址字(其中R/W位应为0,表示“写”)和应答位后紧跟一个8位数据字地址,在E2PROM收到数据字地址后,E2PROM输出0应答MCU,然后接收一个8位数据字存入该地址,完成后E2PROM输出0应答MCU,最后MCU必须发出STOP信号终止写操作。字节写流程时序如图12-15所示。
图12-15 字节写流程时序图
按照此时序编写写字节函数,其代码如下,其中参数Addr为当前写入E2PROM中的地址,Data为当前写入的数据,Delay()延时函数读者自行编写。
(www.xing528.com)
4)读字节操作。
读操作的初始化过程和写操作相似,区别在于E2PROM地址字中的R/W在读操作过程中设为1(表示“读”)。E2PROM有3种读方式:当前地址读、任意地址读和顺序读。这里只介绍任意地址读方式。
任意地址读首先要求写入要读的数据字地址。在E2PROM接收设备地址字和数据字地址后,MCU必须生成另一个开始信号,然后MCU将E2PROM地址字中的R/W位设为1。当E2PROM收到地址字后,输出0应答MCU,随后MCU开始接收8位数据,在数据接收完成后MCU不应答,直接产生STOP信号结束一次任意地址读操作。任意地址读流程时序如图12-16所示。
图12-16 任意地址读流程时序图
按照此时序编写读字节函数,其代码如下,其中参数Addr为所要读取数据的地址,读出的数据通过变量RecvData返回Delay()延时函数读者自行编写。
5)主函数负责模块初始化、连续向AT24C02B中写入8个数据,并以此读出后送PTE端口。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。