NUE-PSK3.1调制解调器的配置信息需要保存在外部可读写存储器中。这里采用了I2C接口的EEPROM存储器24AA256。该存储器为256KB的CMOS非易失存储器,包含三位译码地址,且具有写保护功能,内部64个字节为一页。24AA256与dsPIC33FJ128MC706的接口原理如图7-17所示。
图7-17 24AA256接口原理图
该电路中24AA256的地址选取000,硬件写保护失效。24AA256为从设备,通过I2C接口与dsPIC33FJ128MC706相连。对24AA256的操作分为读、写两个部分。
读操作分为当前读、随机读和顺序读三种。当前读的时序如图7-18所示。
图7-18 24AA256当前读时序图
随机读需要先向24AA256发送两个地址字节,然后再读取数据。随机读的时序如图7-19所示。
图7-19 24AA256随机读时序图
顺序读是在随机读的基础上连续读出N个字节。
写操作分为单字节写和整页写两种。单字节写的时序如图7-20所示。
图7-20 24AA256单字节写时序图(www.xing528.com)
而整页写是在单字节写的基础上连续写入64个字节(见图7-21)。
图7-21 24AA256整页写时序图
dsPIC33FJ128MC706对24AA256的初始化代码由NUE_PSK_main_1.c中的Init_I2C1()函数完成,该函数在NUE_PSK_I2C.c文件中定义,具体代码如下:
对24AA256的操作由I2C1_Byte_Write(int Write_Address,char Write_Data)和I2C1_Byte_Read(int Read_Address)函数完成。这两个函数也在NUE_PSK_I2C.c文件中定义,I2C1_Byte_Write(int Write_Address,charWrite_Data)函数用于从M24AA256中读数据,具体代码如下:
I2C1_Byte_Read(int Read_Address)函数用于实现向24AA256写入数据的功能,具体代码如下:
该函数实现向24AA256写入数据的功能。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。