[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