时钟源芯片CDCE937,内部有EEPROM,接口采用类I2C协议,主要在时序上与专用EEPROM略有差别,尤其是在开始和结束的建立时间上,要求4.7us,而整个SCL高电平为5us(100kHz频率对应10us周期)。
现在用FPGA控制芯片,写好了写入时序部分,利用TI-pro配置软件,生成HEX文件来初始化rom,写入CDCE937,写入成功,通过signalTap观察没问题,并且能正确输出想要的频率。写入成功后,想验证读取功能,发现读取的寄存器数据有异常(与写入的不对)。所以就做了如下实验,在offset为18H的寄存器中,单字节写入40H,然后读取18H的寄存器,结果显示是7FH。这两个过程没有断电,只是重新烧写了FPGA程序,因为现在写和读是两个工程。
这是问题一:写入肯定没问题,因为芯片都能按照预想工作,那读取又是在哪里出问题了呢?
问题二:每次断电,写入的数据都还原了。怎样锁存EEPROM写入的程序,使得第二次上电,它依然按照配置的频率输出。是配置EELOCK这个位吗?
问题三:如果寄存器被锁住,不再使用scl/sda,那么S0 S1 S2是不是就是按照datasheet中的7种状态配置,实现某种状态输出?
谢谢!