主题中讨论的其他器件: LMK04832
您好!
我将编写一个内核驱动器、以通过 i2c 对 LMK03318时钟芯片进行编程。
这些寄存器我可以写入、它们会使芯片的实时输出发生相应变化。
出于完整性考虑、我使用 i2c_master_send 发送单个 字节、并使用 i2c_master_recv 接收单个字节(尚未进入突发模式)。
我的 I2C 时钟在总线上为400kHz。
我可以写入任何单独的寄存器并读回、以确认正确的写入操作。
我还可以使用 Excel 文档(3857.LMK033x8_EEPROM_programming_v1)直接写入 SRAM、作为地址值与 TICS 生成的 EEPROM 文件对的生成器。
我可以通过回读这些值并将它们与原始值进行比较来确认正确的 SRAM。
当我尝试将 SRAM 设置到 EEPROM 时、就会出现这个问题。
我们处于软引脚模式、GPIO 2/3都设置为接地。
我已经尝试了按照 PDF 的10.5.4写入 SRAM 部分进行操作。
我尝试了第一种方法、方法是写入我需要设置的所有寄存器并确认实时操作。
然后将0x00写入 R145以设置页0。
然后向 R137.6写入1、以将实时寄存器复制到 SRAM。
然后、我按照第10.5.5节"写入 EEPROM "进行操作。
将0xEA 写入 R144可解锁 EEPROM
向 R137.0写入1以开始传输。
在等待400ms 后、我确实再次锁定了 EEPROM、但现在我没有重新锁定、因为我不确定它是否会导致写入失败。
我还尝试了第二种首先写入 SRAM 的方法、我可以确认值采用了我可以读回的方法。
然后、按照 上述说明执行第10.5.5节"写入 EEPROM "。
发生的情况是、在 I 下电上电之前、R137永远不会将其保持为0x01。
这是之前的图像、圈出了 EEPROM 计数器、NVMCTL 和 NVMUNLK 寄存器。

该芯片在嵌入系统之前就被 TICS 程序编程过一次。
完成上述 EEPROM 写入步骤之后、将进入待机模式。
7.
您可以看到 NVMCTL 寄存器卡在0x01处、计数器仍在0x01处、解锁当前在0xEA 处"解锁"。
对不起,这是一个很长的帖子,我只是想涵盖我能想到的一切。
希望有人能帮忙。
谢谢
安东
