如何擦除超级时序控制器的EEPROM空间,以及如何逐字节地写入该空间

描述

本应用笔记介绍如何擦除超级时序控制器的EEPROM空间,以及如何逐字节地写入该空间。

成块擦除EEPROM空间

欲对EEPROM空间进行块擦除,请执行下列步骤。

1. 将0x01写入UPDCFG寄存器0x90。这是存储器更新控制寄存器。向寄存器0x90写入0x01能使配置寄存器持续更新。建议在整个读/写在线测试(ICT)过程中使该位保持置位状态。

2. 擦除或访问0xFA00到0xFBFF地址范围的EEPROM时,首先必须中止时序控制引擎。将0x01写入SECTRL寄存器0x93以中止时序控制引擎。每次对时序控制引擎的EEPROM空间执行读或写处理时,都必须中止该引擎。

3. 擦除或访问ADM1166/ADM1168/ADM1169上0xF800到0xF89F或0xF900到0xF9FF地址范围的EEPROM时,应将0x01写入BBCTRL寄存器0x9C。该写操作中止黑盒操作,并访问0xF800到0xF89F和0xF900到0xF9FF地址范围的EEPROM。

4. 将0x05写入UPDCFG寄存器0x90。此写操作使能EEPROM块擦除功能。

5. 利用下面列出的程序擦除任何EEPROM空间中的页面。该程序分解了单页擦除功能的系统管理总线(SMBus)处理。

• 发送从机地址。• 接收应答消息。• 发送EEPROM高位地址(例如0xFA)。• 接收应答消息。• 发送EEPROM低位地址(例如0x00)。• 接收应答消息。• 发送停止消息。• 发送从机地址。• 接收应答消息。• 发送页擦除命令代码(0xFE)。• 接收应答消息。• 发送停止消息。

6. 对于要擦除的每一页,将低位地址递增32字节,即0x20、0x40、0x60、0x80、0xA0、0xC0和0xE0,然后重复第4步中的例行程序。

7. 擦除所有页面后,重复第4步中的例行程序,根据需要将高位地址更改为0xF9、0xFA或0xFB,并按照第6步所述设置低位页面地址。

8. 将0x01写入寄存器0x90。此写操作将禁用EEPROM块擦除功能。

注意:EEPROM 0xF8地址范围(0xF8A0至0xF8FF)被保留,若试图访问此范围,将产生不应答(NACK)。

逐字节写入EEPROM空间

字节写入

1. 要逐字节写入EEPROM空间,请执行下列步骤:• 发送从机地址。• 接收应答消息。• 发送EEPROM高位地址(例如0xF8)。• 接收应答消息。• 发送EEPROM低位地址(例如0x00)。• 接收应答消息。• 发送数据。• 从机应答。• 发送停止消息。

2. 对于全部0xF8 EEPROM空间,重复第1步中的例行程序。不过,每写入一个字节的数据后,必须递增低位地址。

3. 当0xF8地址范围内的全部EEPROM(0xFA00至0xFBFF)均已写入时,将高位地址更改为0xF9、0xFA或0xFB,然后重复第1步和第2步。

4. 在0xFA00至0xFBFF范围内进行编程时,应将0x00写入SECTRL寄存器0x93,使时序控制引擎进入正常工作模式。

5. 对ADM1166/ADM1168/ADM1169上0xF800到0xF89F或0xF900到0xF9FF地址范围的EEPROM进行编程时,应将0x00写入BBCTRL寄存器0x9C,以使能黑盒。

ADM1166/ADM1168/ADM1169考虑因素

黑盒利用0xF980至0xF9FF地址范围存储黑盒故障记录。当使能一个或多个黑盒触发器写入EEPROM时,0xF800至0xF9FF地址范围的EEPROM就会激活一个访问锁。因此,读取、写入或尝试擦除0xF800到0xF89F或0xF900到0xF9FF地址范围的EEPROM之前,必须禁用黑盒功能以确保能够访问。要禁用黑盒功能,应向BBCTRL寄存器0x9C写入0x01。不再需要访问EEPROM时,应向BBCTRL寄存器0x9C写入0x00以重新使能黑盒功能。

如果擦除存储器区域0xF980至0xF9FF以清除任何现有黑盒故障记录,则还需要复位黑盒写入的下一个可用位置,即向BBSEARCH寄存器0xD9写入0x01。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分