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

Andrew Dyer amdyer at gmail.com
Tue Sep 1 20:30:24 CEST 2009


On Tue, Sep 1, 2009 at 12:50 PM, Brian Hutchinson<b.hutchman at gmail.com> 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.
>
> The EEPROM really doesn't have addresses/offsets so I tried:
>
> imw 28 11 80 1

I believe this should do what you want.  You could make double sure by
doing imw 28 11.1 80
the .1 forces a one byte address.  You don't need the trailing one
count.  Verify the device is asserting the ACK after each byte is sent
with a 'scope.

You also didn't mention what version code you're on.   The soft_i2c.c
code had some bugs in it that would result in extra transitions if the
I/O had separate tristate enables that I patched a year or two ago.
You should make sure you're on the latest.


More information about the U-Boot mailing list