Hi community,
I want to know how to reset MMPF0100 I2C module.
Actually, a problem is occurred with MMPF0100 uncorrect I2C finishing when i.MX6 Android is reboot.
(in other words, a problem is occurred if i.MX6 reboots Android suddenly in I2C communication)
If I2C communication is not finished correctly, I think MMPF0100 seems that misunderstand I2C data by combining the data on previous I2C access and the data on next access, and it sets incorrect value to MMPF0100 register by the misunderstanding.
So I prevent this problem by MMPF0100 I2C module reset.
Could you let me know how to do it?
Best Regards,
Satoshi Shimoda
Solved! Go to Solution.
Hi Satoshi, it is not possible
to reset only MMPF0100 I2C module, you can just initiate
new power up sequence to reset whole MMPF0100. In general if I2C
slave is hanging, master (i.MX6) can send additional clocks (9 max) then
generate STOP condition (MSTA bit in i.MX6 I2CR register).
Then I2C slave should recover. If MMPF0100 does not hang you
can just rewrite wrong settings sending another I2C data.
Hi Satoshi, it is not possible
to reset only MMPF0100 I2C module, you can just initiate
new power up sequence to reset whole MMPF0100. In general if I2C
slave is hanging, master (i.MX6) can send additional clocks (9 max) then
generate STOP condition (MSTA bit in i.MX6 I2CR register).
Then I2C slave should recover. If MMPF0100 does not hang you
can just rewrite wrong settings sending another I2C data.
Hi chipexpert,
Thank you for your quick response.
OK, I understand MMPF0100 I2C module cannot reset without new power up sequence.
So I will find other solution.
> If MMPF0100 does not hang you
> can just rewrite wrong settings sending another I2C data
Unfortunately, sometimes i.MX6 is stalled when the wrong setting is written to MMPF0100.
For example, there was a case 0x03 was set to Adress = 0x20 (SW1ABVOLT), in this case SW1AB output was changed to 0x375V and i.MX6 was stalled.
So I think "rewrite" is not suitabale solution.
Best Regards,
Satoshi Shimoda