开发过580/585的用户应该知道,想要将晶振校准值烧录到OTP中,我们只需往芯片的OTP Header中的某个固定的位置烧录一个两个字节的值即可。531的情况不太一样。DA14531的OTP Header分成了两部分: Configuration Script和Main group: 其中,Main group存放一些常用的配置如:SPI FLASH 引脚,蓝牙 MAC 地址,时间戳等;特定的OTP位置位置,有其特定的含义。 Configuration Script提供了比较灵活的配置,并且,字段的含义,和其在OTP中的位置没有对应关系。通过toolbox工具,用户可以通过add按钮增加一些字段来声明某种配置。晶振校准值的配置,需要添加到Configuration Script部分中。
操作步骤
按照下图的方式,配置好开发板的跳帽:
使用toolbox,将531当前的Configuration Script的值读出来,然后调出Configuration Script配置页面,并点Add按钮:
选择我们要配置的寄存器:
添加我们要往该寄存器写入的值然后OK:
注意,由于Configuration Script不是以OTP的某个位置来表示特定的含义的,因此,以上步骤,只是为了获取晶振校准值寄存器的OTP位置,和寄存器的值的OTP位置: 由上图可知:
晶振校准寄存器在531内的地址为:0x50000002 在OTP的地址为:0x07F87ED0+0x00000078 = 0x07F87F48 将要写入该寄存器的值是:0x0000000C 在OTP的地址为:0x07F87ED0+0x0000007C = 0x07F87F4C
完成以上配置之后,我们回到Toolbox OTP Header的页面,点一下burn按钮即可将XTRIM值写入OTP
除了使用toolbox来写入OTP之外,我们还可以通过prod_test.exe工具来写入OTP。由于OTP只能支持一次写入,故,若想通过prod_test.exe工具来完成该操作,则上述步骤6不能执行。 以下是prod_test.exe工具的用法:
从官网下载最新的SDK,在SDK文件目录中找到prod_test.hex(prod_test_531_UART_P05.hex)固件和prod_test.exe工具。将prod_test.hex(prod_test_531_UART_P05.hex)固件烧录到开发板中,然后按一下开发板上的复位按键,启动固件
进入命令行界面,敲入以下命令: prod_test_cmds>prodtest.exe -p 52 otp_write 7F48 50000002 status = 0 prod_test_cmds>prodtest.exe -p 52 otp_write 7F4C 000000C0 status = 0 其中, -p 用于指定串口号 7F48\7F4C 是相对 OTP Header (0x07F80000) 的偏移, 50000002/0000000C 是将要写入OTP某个地址处的值
以上成功后,我们重新用toolbox connect OTP,读出 OTP Header 的值,可看到和5步一样的内容