AD9522 的 EEPROM 缓冲段是一段寄存器空间,用来指定在 EEPROM 编程时哪些寄存器组会被保存。一般情况下用户无需手动修改,其上电默认值已允许把 AD9522 从寄存器 0x000 到 0x231 的全部内容一次性写入 EEPROM。
如果用户只想从 EEPROM 加载输出驱动设置,而不想破坏芯片内现有的 PLL 配置,可把缓冲段改成仅包含输出驱动相关寄存器,排除 PLL 相关寄存器。
缓冲段由两部分组成:
寄存器区定义组(register section definition groups)
操作码(operational codes)
每个“寄存器区定义组”给出一段连续寄存器的起始地址和字节长度。
若寄存器映射从 0x000 到 0x232 完全连续,只需一组“起始 0x000,长度 563 字节”即可;但 AD9522 寄存器映射不连续,且 EEPROM 只有 512 字节,因此需要通过多组定义把寄存器映射分段描述。
操作码共三种:
IO_UPDATE
数据结束(end-of-data)
伪数据结束(pseudo-end-of-data)
规则:
缓冲段最后必须是“数据结束”或“伪数据结束”;
在“数据结束”之前至少出现一次 IO_UPDATE。
寄存器区定义组格式(3 字节)
字节 0:本组连续寄存器字节数 – 1
0x00 表示 1 字节,0x01 表示 2 字节……最大 128 字节(0x7F)。
字节 1:本组起始寄存器地址低 8 位
字节 2:本组起始寄存器地址高 8 位
IO_UPDATE(操作码 0x80)
EEPROM 控制器遇到 0x80 时,会在下载过程中产生一次 IO_UPDATE,把缓冲寄存器组的内容搬进活跃寄存器组。
必须在最后一个寄存器区定义组之后至少放一条 IO_UPDATE,否则 EEPROM 读出的值不会生效。
数据结束(操作码 0xFF)
出现 0xFF 时,控制器立即终止本次 EEPROM 与寄存器之间的数据交换。缓冲段最后一项必须是 0xFF 或 0xFE。
伪数据结束(操作码 0xFE)
缓冲段最多只能放 23 字节,因此最多支持 7 个寄存器区定义组。若需要更多分组,可在第 7 组后放 0xFE。
控制器遇到 0xFE 时:
暂停传输;
清除 REG2EEPROM 位;
重新开放串行端口。
用户可再次写入新的缓冲段定义,然后把 REG2EEPROM 位(寄存器 0xB03)置 1,并给 IO_UPDATE 寄存器(0x232)写 1,内部 I²C 主控即从上次断点地址继续写入 EEPROM。
利用 0xFE 可突破缓冲段空间限制,也可对同一寄存器多次写入不同值。
EEPROM缓冲段示例图
