大家好!
这可能是一个基本的问题,但是是否有办法在不使用SmartSnippets工具的情况下访问和编程OTP区域。我已经尝试访问和修改OPTC_MODE_REG以及SYS_CTRL_REG,但都没有成功。我使用我自己的自定义设置连接到芯片使用T_TMS (SWDIO)和T_TCK (SWCLK),并能够修改位于SRAM中的数据。在一个寄存器中是否有特定的设置,允许我访问OPTC_MODE_REG和SYS_CTRL_REG?某种寄存器解锁。
谢谢你!
设备:
嗨steven.mcgrath,
我强烈建议你使用SmartSnippets工具箱来烧OTP,因为我们不支持自定义设置。但是,你可以参考在5.0.4\utilities\flash_programmer SDK路径下的flash程序员项目。请检查otpc.h / .h文件。
谢谢,PM_Dialog
你好,
感谢您的快速回复。我已经引用了您提到的flash程序员项目,特别是,当我调用optc_clock_enable函数时,我似乎失去了对OTP区域的访问(至少OTP内存不能再被查看)。当调用optc_write_fifo函数时,会出现OTPC_STAT_PERR_U、OTPC_STAT_PERR_L和OTPC_STAT_PERROR标志,并导致操作失败。
我可以看到我想要被编程的数据存在于OTPC_FFPRT_REG中,但是我如何将其转移到OTP区域?也许我缺少一些重要的信息,但我似乎是按照指示与SDK一起。任何帮助都将非常感激。谢谢。
嗨steven.mcgrath,
请查看“Source file”项目文件夹下的program .c文件,并搜索ACTION_OTP_WRITE定义。这可能对你有帮助!您还可以检查ACTION_OTP_READ。
谢谢,PM_Dialog
你好,
c文件是源代码,我一直引用和使用时,遇到这些问题。如前所述,当我调用optc_clock_enable函数时,OTP (0x47000-0x47FFF)内存不再可见。我可以用正确的数据编程OTPC_FFRT_REG(0x40008018),但这如何传输到OTP区域?同样,一旦调用了optc_clock_disable函数,OTPC_FFRT_REG中的数据就不再存在。我基本上使用所有的源代码从程序员。c它只是似乎信息被编程进入先进先出区域,不去任何地方从那里。是否需要额外的步骤来访问OTP区域并传输此数据?
任何帮助都非常感激。谢谢你花时间回复我。
你好,
对此事的快速评论。我一直在查阅DA14580设备的文档,注意到OTPC_PCTRL_REG,您可以在其中启用OTP的上、下bank以进行编程。在SDK中,你提到了我,我已经做了我的大部分工作基于,没有任何参考这个寄存器,但它似乎很重要,以编程的OTP内存。您能否提供任何见解,如果这个寄存器是必要的编程OTP区域和什么其他启用可能是必要的,因为SDK似乎遗漏了这一信息。
另外一个边注,来自SDK的OTP_READ函数是有效的,我能够在OTP中查看数据,包括OTP头信息。
谢谢你的支持。我期待得到答复。
史蒂夫
嗨,史蒂文,
我为耽搁道歉。我提到过,我们使用SmartSnippets工作室来编写OTP。关于flash_programmer项目,请检查otpc_write_fifo()。当你尝试烧OTP时,你必须确保编程电压是干净的,不能超过6.8V。另外,6.8V只能在VBAT3V供应后应用于VPP,必须在VBAT3V被移除之前从VPP移除,否则可能会损坏芯片。
谢谢,PM_Dialog