Part Number: MSPM0L1306
Other Parts Discussed in Thread: ASH
I've hit a bit of a wall with the I2C controller because I have a peripheral that always ACK's transmitted bytes. I can't change that behaviour, it ain't my chip - specifically it's a SOIC RTC. The datasheet is quite clear it won't NACK the last byte, and I can see why. It doesn't know how many bytes I'm going to send, until I send them. There are *lots* of I2C peripherals that work this way.
The TI datasheet is a bit gnarly, lots of words not so many functional sentences.
In respect of the NACK business, the TI datasheet is fairly clear. It won't emit a stop, unless there's a NACK, but it's never coming.
So the only question is how to break the hardware state machine so I can emit a "stop only". The thing is, even if I request a transaction without a stop, its still waiting for the NACK.
I can see that someone somewhere might have thought the master implementation should be symmetrical to the slave, but it doesn't work like that, and I've already explained why above.
The thing that gives me less confidence is that the naming convention in the TI datasheet isn't self consistent. The text refers to the driving element of the I2C bus variously as both MASTER and CONTROLLER, which makes the acronyms used - quite confusing.
The datasheet does explain how the MSPM0 I2C master/controller can be used sucessfully in loopback mode with the associated target on the I2C slice. I don't doubt that this works, but the trouble is the I2C port is looking pretty limited for a dismal reason.
What am I missing? How can I make this work?
Many thanks,
Andy Ash.