I am seeing times when the OTP programming is not successful, looks like it misses an entire FIFO.
Details:
Accessing memory via DAP (Debug Access Port).
1) CPU Halted
2) OTP Access
* CLK_AMBA_REG = OTP_ENABLE
* SPOTP_TEST_REG = LDO_OTP_WRITE
3) OTP Write
* OTPC_MODE_REG = 0
* OTPC_CELADR_REG = starting address value
* OTPC_NWORDS_REG = number of words to be written
* CPMC_MODE_REG = XPMC_MODE_APROG
* repeat the following for each word to write
** OTPC_FFPRT_REG = next data value to write
NOTE: The code processing the write commands repeats every 0.000460 Seconds.
4) Read back all values to verify programming was successful
The failure seen on a small percentage of devices (5 of 4660) is that values are skipped during the write process.
The skipped values seem to occur in groups of 8, the values are skipped without incrementing the write address. As seen below the values intended for address 2000050C was written to 200004EC. After a group of 8 skipped values, the values written continue correctly for a while and then another group of 8 address values is skipped; in a write sequence of 7211 addresses 100 – 200 groups of 8 addresses values where skipped.
Example (highlighted values are mismatches)
Address Expected Write Value Actual Value Written to address listed Artificially re-aligning values. Result if Value had not been skipped
200004E8 47084910 47084910 47084910
200004EC 46712004 8009F3EF Skipped
200004F0 D0034208 47084908 Skipped
200004F4 8009F3EF 8008F3EF Skipped
200004F8 4708490D 47084906 Skipped
200004FC 8008F3EF E7FEE7FE Skipped
20000500 4708490B E7FE Skipped
20000504 46712004 20000475 Skipped
20000508 D0034208 20000451 Skipped
2000050C 8009F3EF 200022CB 8009F3EF
20000510 47084908 200022C5 47084908
20000514 8008F3EF 20002645 8008F3EF
20000518 47084906 21014308 47084906
2000051C E7FEE7FE 46030389 E7FEE7FE
20000520 E7FE 4937430B E7FE
20000524 20000475 4 b37800b 20000475
20000528 20000451 80084318 20000451
2000052C 200022CB 43022009 200022CB
20000530 200022C5 4770804A 200022C5
20000534 20002645 880A4932 20002645
20000538 21014308 19B230F 21014308
2000053 c 2000053 439 a0700 46030389
20000540 4937430B 43020D80 4937430B
20000544 4B37800B 4770800A 4B37800B
Using DA14581 in a Murata module
Hi Daniel.Landherr,
Apologies for the delay. Could you please clarify how you are doing the OTP programming and which tool are you using?
Thanks, PM_Dialog
We developed an interface through the Debug Access Port that directly programs the memory using the settings listed above.
3V on VBAT(pin5)
6.8V on VPP(pin26)
communicating using the SWD (Single Wire Debug) Port on SWCLK/P1_4(pin15) and SWDIO/P1_5(pin16).
Hi Daniel.Landherr,
If I am able to understand correctly, you have developed a custom tool, so in that case I am not able to provide any support for your issue. Be aware that it is highly recommended to use our tools that we can provide support. Could you please let me know if there is a specific reason why you are not using the Smart Snippet in order to program the OTP? Did you try to use it?
Thanks, PM_Dialog
Smart Snippets is good for development use but it is not suitable for use in an automated manufacturing test environment.
Hi Daniel.Landherr,
Please check the Production Line Tool (PLT) from our support portal. This tool has been designed for production test and programming unit that enables you to reduce cost and increase throughput in volume test & programming of units centered around the DA1458x family. You could find more information about this tool under the following link:
https://support.dialog-semiconductor.com/connectivity/reference-design/production-line-tool
Thanks, PM_Dialog
我已经this issue direct and escalated it internally in Dialog as the use case is non-standard.Note to any other users:What Daniel Landherr is doing makes only sense in his very special case. No other customer will receive support attempting to replicate this setup. The only recomended and supported manufacturing option remainins the Production Line Tool.