Hello,
I'm having problem with programing OTP in MMPF0100NPAEP part on custom board. This is a second lot of our PCBs, with first one we didn't have any issue, but we used MMPF0100NPZES part. I'm using:
- KITPFGUI Revision 4.1
- KITPFPGMEVME - I don't know if it is REV B, there is a sticker with a QR code (an27456schb700a:fw4.0fat2.0:sn17060022), but it is supplying 9.5V on VPGM, so I'm thinking it is REV B.
- The script that was working on the MMPF0100NPZES part (attached).
- I2C lines are connected only to the KITPFPGMEVME programmer
- VIN is external from KITPFPGMEVME, but there is nothing on VIN other than this PMIC. I also tried supplying everything from KITPFPGMEVME, but the results are the same.
When I'm writing and reading during TBB Mode, it works fine. When the coin cell is placed, it remembers everything,works great. But when I try to program OTP, there are random errors during verification. Devices are blank before programming, I checked that. I tried three boards, each programmed a different number of registers incorrectly – in one, there are 15, in another, 2. Another thing is that when I try to program it again, the number of failed registers can change. I looked at voltages and I2C communication lines on the oscilloscope, and they look good, no sharp voltage drops or anything that looks suspicious.
Example output:
Extracting OTP Data from Target Device...
Verifying OTP Data from Target Device...
OTP REG:[A0], DATA:[0x24] = [0x3D] (PROGRAMMING ERROR)
OTP REG:[A2], DATA:[0x05] = [0x01] (PROGRAMMING ERROR)
OTP REG:[A8], DATA:[0x20] = [0x04] (PROGRAMMING ERROR)
OTP REG:[A9], DATA:[0x04] = [0x12] (PROGRAMMING ERROR)
OTP REG:[AA], DATA:[0x01] = [0x02] (PROGRAMMING ERROR)
OTP REG:[AC], DATA:[0x72] = [0x7E] (PROGRAMMING ERROR)
OTP REG:[AD], DATA:[0x01] = [0x07] (PROGRAMMING ERROR)
OTP REG:[B0], DATA:[0x2C] = [0x28] (PROGRAMMING ERROR)
OTP REG:[B4], DATA:[0x62] = [0x6E] (PROGRAMMING ERROR)
OTP REG:[B5], DATA:[0x02] = [0x03] (PROGRAMMING ERROR)
OTP REG:[B9], DATA:[0x03] = [0x07] (PROGRAMMING ERROR)
OTP REG:[BC], DATA:[0x00] = [0x03] (PROGRAMMING ERROR)
OTP REG:[BD], DATA:[0x06] = [0x16] (PROGRAMMING ERROR)
OTP REG:[C0], DATA:[0x06] = [0x0F] (PROGRAMMING ERROR)
OTP REG:[D8], DATA:[0x0A] = [0x0F] (PROGRAMMING ERROR)
OTP REG:[D9], DATA:[0x0C] = [0x1F] (PROGRAMMING ERROR)
OTP REG:[DD], DATA:[0x08] = [0x1F] (PROGRAMMING ERROR)
OTP REG:[0xE3], DATA:[0x0E] = [0x0F] (PROGRAMMING ERROR)
OTP REG:[0xE8], DATA:[0x00] = [0x01] (PROGRAMMING ERROR)
OTP REG:[0xFF], DATA:[0x08] = [0x0B] (PROGRAMMING ERROR)
Verification Complete. 21 Programming Errors
Program Verification Complete.
This one was especially frustrating because it programmed wrong I2C address.
Can you please suggest something to help ?