We are attempting to program the MPM3695-20 in a custom board using on-board software in a production test fixture. We have no problem connecting to, writing commands, and reading back registers over the I2C bus. However when programming the MTP using the procedure described in the datasheet, the register values change during the process, and the incorrect values are stored to MTP. Below is our MTP programming process and some notes:
- I2C write all commands to our desired values. We can read them back over I2c – they all match the desired values.
- Write the erase command (E7h = 2000h). We see the VCC rise to 5V then fall back to 3.3V. (Wait one second).
- Write the load command (E7h = 1000h). (Wait one second)
- Write the program command (E7h = 4000h). We see the VCC rise to 5V then fall back to 3.3V
After this procedure, the register values have all changed. The changed values are stored in MTP, if we cycle power the changed values remain.
The test fixture supplies +12V to Vin and pulls En pin to GND.
During debugging we read back the registers after each step. It appears that the load command (E7h = 1000h) is what changes the registers. Any ideas as to what is going wrong?
Thanks for any help!
Mark Carlin