[U-Boot] I2c imd/imw for a digital potentiometer?

Jerry Van Baren gerald.vanbaren at ge.com
Tue Sep 1 20:22:13 CEST 2009


Brian Hutchinson wrote:
> Hi all,
> 
> I'm a little stumped as to how to write to a EEPot with the imw command.
> 
> The EEPot is a Maxim 5434 and has an address of 0x28.  To write to its
> volatile or non-volatile register ... a command byte is given.
> 
> Writing 5 bits of data (it is a 32 tap pot so that is where the 5 bits come
> from) to move the wiper goes something like this:
> 
> Start, 0x28, Ack, Cmd byte, Ack, Data byte, Ack, Stop
> 
> Cmd byte is 0x11 to write to volatile reg. 0x21 to write to non-volatile
> reg.

Looks pretty standard if you map "cmd byte" to "register".

> The EEPROM really doesn't have addresses/offsets so I tried:
> 
> imw 28 11 80 1

What is the trailing '1' here?  Or is the '80' bogus?

I would expect this to work.  The i2c command defaults to a one byte 
register offset.  To write a 0x80 byte to register (aka command) 0x11, 
you want to do this:
   imw 28 11.1 80
which should be the same as this:
   imw 28 11 80

> imw.w 28 0.0 1180

That seems like it should work also, although the '11' is more logically 
a register offset.

> ... but it doesn't appear to play well with my device.

Trivia: the old imw (imr, etc) commands are deprecated, you should use 
the new "i2c <cmd>" versions.

[snip]

> Regards,
> 
> Brian

Good luck,
gvb


More information about the U-Boot mailing list