I'm writing an Arduino library for the LMP91000 (github), and I'm apparently having some trouble getting the writes to succeed. I know there's a lock bit that has to be cleared before writing certain registers, but I can't seem to get it to change the value. Here is a logic trace of a write followed by read to the LOCK register (0x01).
It looks to me like I'm compliant with the data sheet to me, but the write is not actually taking hold. I've checked an the clock is 100kHz as well. The LMP91000, I think, is acknowledging when it's expected to. My controller is, I think, doing the right things with start, stop, ack/nack for it's part.
Furthermore, when I just go in and read all the registers, I get the following results, decoded for convenience (logic trace attached):
STATUS: 0x01
ready
LOCK: 0x01
Registers 0x10, 0x11 in read only mode (default)
TIACN: 0x03
RLoad selection = 100 Ohm (default)
TIA feedback resistance selection = External resistance (default)
REFCN: 0x20
Reference voltage source selection = Internal (default)
Internal zero selection = 50% of the source reference (default)
Selection of the Bias polarity = Negative (VWE - VRE) < 0V (default)
BIAS selection = 0% of the source reference (default)
MODECN: 0xFF
Shorting FET feature = Enabled
Mode of Operation selection = Temperature measurement (TIA ON)
I'm struggling to see what I'm doing wrong, and would appreciate some help figuring it out. Thanks!